Update a person's app access
people_updateModify an existing person's app access on your Tailscale network: replace app grants, adjust access deadlines, or refresh invitations while preserving current permissions.
Instructions
Replace an existing person's app set when apps is supplied; omission preserves grants. Only explicit for/until changes existing deadlines. Uses the same membership, gateway routing and invitation completion as people_add. Retrying without lifetime changes resumes transport work. Removed apps remain denied. never requires ack_never; public/browser access stays finite. Requires owner authority for new routes or device sharing. Bearer links stay hidden unless print_links is true; invite is a compatibility field with no effect. Unknown POSTs require owner-verified reconcile_invites; replace_invites binds replacement to the recorded ID and preserves deadlines.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"who": "<who>"
},
"name": "people_update"
}
}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 for members and device-invited guests; finite guest grants retain the configured maximum. | |
| who | Yes | ||
| apps | No | 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 | Compatibility field; necessary invitations are automatic. | |
| ack_never | No | ||
| qr_invite | No | App invitation QR or @gateway; requires qr and print_links. Treat as a credential. | |
| print_links | No | ||
| replace_invites | No | Update without apps/for: owner-confirmed app or @gateway to recorded old invite ID. Requires remote absence for the same NodeID. A stale gateway invitation can be retired as target_gone when current gateway ownership is proven, including accepted shares; preserves grants and deadlines. | |
| reconcile_invites | No | Update: owner-verified app or @gateway to invite ID mapping, or none after checking absence. Unknown POSTs cannot be retried blindly. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| guide | No | ||
| access | 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 | ||
| membership | No | ||
| qr_payload | No | ||
| qr_warning | No | ||
| invite_requirement | Yes |