Skip to main content
Create and govern teamspaces, members, visibility reviews, join requests, and private-team invitations. Every leaf command supports --output table|json. JSON success output contains no Rich text or prompts. JSON failures leave stdout empty and write one categorized error object to stderr.

Commands

Team references may be UUIDs, handles, or @handle. Unknown teamspaces use not-found exit code 5.

List, show, and claim

list returns the standard items, total, page, and page_size envelope. The default includes teamspaces where the user is a member. --all requests all teamspaces visible to the caller. Empty results use items: [] and page_size: 0. show returns a combined result:
claim-personal is idempotent. It creates or returns the caller’s one private personal teamspace and returns the direct Team object.

Create and visibility

Visibility is public or private. Creating a public teamspace or setting a private teamspace to public submits a review request. Until approval, the response reports visibility: "private" and visibility_request_status: "pending". Create and visibility JSON return the direct Team object. Reviewers and deployment admins manage pending public visibility requests:
The list returns the standard list envelope. Approve and reject return the direct Team object. Approval makes the teamspace public and revokes its private invitation links. A rejection reason is optional and accepts up to 500 characters.

Delete and leave

Delete is permanent. Leave removes only the caller’s membership. The last owner cannot leave. Human mode prompts unless --yes is supplied. JSON mode never prompts and requires --yes. Both endpoints currently return an empty JSON object on success.

Join requests

Request access to a visible teamspace:
The message is optional and limited to 500 characters. JSON returns the created join request. View your own status or withdraw the sole pending request:
request mine returns the standard list envelope with requests ordered newest first. request withdraw finds the caller’s pending request and marks it cancelled. Human mode prompts unless --yes is supplied. JSON mode requires --yes and returns an empty object. Owners and deployment admins can list and decide requests:
Valid status filters are pending, approved, rejected, and cancelled. Approve and reject select a pending request by exact email or case-insensitive username. A missing pending request uses not-found exit code 5. The list returns the standard list envelope. Join, approve, and reject return the direct join-request object.

Members

Roles are member, reviewer, and owner. Adding an existing member updates the role. The last owner cannot be removed. Member list returns the standard list envelope. Add returns the saved member. Remove currently returns an empty object. Human remove prompts unless --yes is supplied. JSON remove requires --yes.

Private-team invitations

Create and list invitations:
--expires-days accepts 1 through 365. --max-uses accepts 1 through 10,000 or may be omitted for no use limit. Invite names accept 1 through 100 characters. Create returns the direct invitation object, including the one-time token and URL. Treat both as secrets. List returns the standard list envelope. States include active, expired, exhausted, and revoked. A recipient can preview the token, then submit an owner-reviewed access request:
invite preview does not mutate membership or request state. invite request does not grant membership. It creates a pending join request that an owner must approve. Neither command prints the token in human output or errors. Owners and admins can inspect invitation usage:
The command returns the standard list envelope for requests associated with that invitation. Empty results use items: []. Revoke an invitation while retaining its audit history:
Delete an invitation only when it has no uses or request history:
The invite ID must be a UUID. Human mode prompts unless --yes is supplied. JSON mode requires --yes. Revoke returns the invitation object. Delete returns an empty object.

Exit codes