Artifacts has one authorization layer. Whether a request comes from the web app, REST API, CLI, or MCP server, it’s evaluated as a principal against the same policy — so access behaves identically everywhere.
Principals
A principal is whoever is making a request.
Principals can also carry scopes and artifact role grants.
Artifact roles
Roles are ranked from most to least privileged:
Each role unlocks a set of actions:
Public access
Each artifact has two public switches:
publicView grants viewer access to unauthenticated callers.
publicEdit grants editor access to public callers, when the plan allows public edit links.
Private artifacts require an owning user, a workspace member, an email allowlist match, an API key or OAuth principal with permission, or a share link.
Email allowlists
Grant view access to specific people by email:
Email viewers must sign in with a verified email that matches the allowlist. This requires a plan that includes private artifacts and email allowlists.
Share links
Share links grant viewer or editor access to a single artifact, and can optionally expire:
Share links require Pro or Team entitlements.
API key scopes
API keys are bearer credentials with explicit scopes — grant only what each job needs.
Treat API keys as secrets. The raw key is only shown at creation time — store it in a secret manager and pass it through environment variables or stdin.
What each plan unlocks
Some access features are plan-gated: