Add a person and app access
people_addGrant a person time-limited access to selected private HTTP and file apps on your Tailscale network, with optional invites and QR links.
Instructions
Changes local access to private HTTP and file apps for a person, so confirm the person, apps and expiry with the user before calling. This makes newly scoped apps deny callers without a grant or an explicit legacy allow rule. TCP cannot enforce people; public Funnel is refused. Optional invite creates one gateway device invitation for routed apps and per-app invitations for non-routed apps, bundled in one guide, so confirm before creating them. Requires a user-owned API token only for invite; OAuth cannot create device invites. print_links explicitly reveals bearer links. No elevated exit-node, multi-use or tailnet-role permissions are offered; use the existing invite tools and their owner-configured elevated permission guard for those. An incomplete invitation result retains local grants and reports durable state/errors. Update with invite alone resumes unfinished work; unknown POSTs require explicit owner-verified reconcile_invites after remote listing. Completed operations are reused. There is no exactly-once guarantee. Logins accept all nonempty valid UTF-8 strings without controls or internal whitespace; invalid UTF-8 is a usage_error. Trim outer ASCII whitespace and lowercase ASCII A-Z only; compare exact bytes without Unicode folding or normalization. replace_invites explicitly confirms replacement of a disappeared completed ID or a stale gateway NodeID, retires its attempt, and preserves all grants/deadlines; requires update with invite and no apps/for changes.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| qr | No | Return QR payload text only; never image bytes. | |
| for | No | Relative lifetime (descending unique units w,d,h,m,s,ms,us,ns) or until <RFC3339|YYYY-MM-DD|YYYY-MM-DDTHH:MM>. Local unless offset given; DST gaps/folds require an offset. Minimum 1h. Presets: 1h, 8h, 24h, 3d, 7d. New grants default to 24h; update omission preserves deadlines. Never requires ack_never and a tailnet-member login; device-invited guests have the configured public maximum. | |
| who | Yes | ||
| apps | Yes | App names, or [all] for all current private HTTP/file apps. Required on add; omission on update keeps the app set. | |
| until | No | Absolute deadline (RFC3339, YYYY-MM-DD, YYYY-MM-DDTHH:MM); conflicts with for. | |
| invite | No | ||
| ack_never | No | ||
| qr_invite | No | App invitation QR or @gateway; requires qr and print_links. Treat as a credential. | |
| print_links | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| guide | No | ||
| person | Yes | ||
| portal | No | Independent home portal configuration and exact runtime address when available. | |
| invites | Yes | ||
| message | Yes | ||
| complete | Yes | ||
| guide_zh | No | ||
| warnings | No | ||
| qr_payload | No | ||
| qr_warning | No | ||
| invite_requirement | Yes |