update_workspace
Rename a workspace, change its slug, switch its default-view mode, or flip its visibility (private | org | unlisted | public). Pass any subset of name, new_slug, mode, visibility; fields you omit are left unchanged. Slug renames preserve old URLs via WorkspaceSlugAlias so previously-shared links keep resolving. Visibility flips disconnect every live SSE subscriber so reconnects re-authenticate against the new visibility. Editor role required. Emits workspace.renamed and/or workspace.visibility_changed. Visibility WIDENING (private → org/unlisted/public, org → unlisted/public, unlisted → public) is consent-gated: pass consent_mode: "web" to return an approval_url the user clicks; otherwise the call returns consent_required and you must re-issue with consent_mode set. Visibility narrowing + non-visibility updates execute immediately on the agent's role.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | New default-view preference for the workspace's first tab. Optional. Doesn't add or remove surfaces; use `create_surface` / `delete_surface` to change the actual tab set. | |
| name | No | New display name. Optional. | |
| slug | Yes | The current workspace slug | |
| new_slug | No | New URL slug (lowercase kebab-case, 3-64 chars). Optional. Must be unique within the org. Old slug stays redirectable via the alias table. | |
| visibility | No | New visibility. Optional. `private` = explicit members only; `org` = every org member gets virtual editor; `unlisted` = anyone with the URL can view; `public` = listed and viewable to all. Widening transitions are consent-gated; see `consent_mode`. | |
| consent_mode | No | Required when `visibility` widens audience. Pass 'web' to surface a click-to-approve URL the user opens in their browser; first call returns { status: 'approval_required', approval_url, polling_url }, you print approval_url in chat and poll polling_url for the result. |