Skip to main content
Access in to11 is governed by permissions. A permission is a single capability — such as creating an API key or approving a routing change. Permissions are grouped into roles, and roles are assigned to members.

Roles

A role is a named set of permissions. Assigning a role to a member grants them every permission it contains. Roles exist at three tiers — organization, workspace, and project — and each tier ships the same four built-in roles, from most to least access:
RoleTypical access
ownerFull control of the tier, including deleting it.
adminManage configuration and members; includes production trace access.
developerRead and change configuration; non-production trace access.
viewer (member at the organization tier)Read-only access.
A member’s effective access is the union of the roles they hold across the tiers that apply to them — an org_developer who is also a project_admin on one project has admin access there and developer access elsewhere. Assigning roles. Set a person’s organization role when you invite them, and adjust roles — including per-workspace and per-project roles — from the Team page. Changing someone’s role grants every capability the new role carries. Custom roles. When the built-in roles don’t fit, you can define a custom role at the organization, workspace, or project tier with exactly the permissions you choose, then assign it like any built-in role.

The permission catalog

Permissions are scoped to the level they act on. The catalog spans, among others:
AreaExamples
OrganizationCreate, read, update, delete organizations
WorkspaceCreate, read, update, delete workspaces
ProjectManage projects, labels, and environments
Members & invitesList members, manage members, manage invitations
RoutingRead, write, publish, review, and roll back routing
ProvidersEdit configuration, rotate credentials, approve changes
PromptsRead, create, update, publish, and review prompts
EnvironmentsManage environments and environment policies
API keysCreate, list, rotate, revoke keys
TracesRead traces, read production traces
AuditRead and export the audit log
The catalog is enforced server-side: every protected action checks for the permission it requires, and API keys draw their scopes from the same catalog.

Per-user overrides

Beyond roles, a specific permission can be granted to or removed from an individual member with an override, scoped to the organization, a workspace, or a project. An override can also be set to expire. Use an override for the exception that doesn’t justify a new role: granting one person a single extra capability, or denying one capability someone’s role would otherwise include. A deny override always wins over a grant — whether the grant comes from a role or another override — so you can carve out an exception without rebuilding the role. Reach for a custom role instead when the same exception applies to several people.

Trace access

Reading traces is gated by two independently grantable permissions. Production traces — those captured in environments flagged is_production = true — sit behind a permission distinct from the one that grants access to non-production traces.
PermissionScopeGrants
traces:readProjectRead traces from environments where is_production = false.
traces:read:prodProjectRead traces from environments where is_production = true.
traces:read:prod does not imply traces:read — they are independently grantable, which matters for API keys scoped to a single ingestion path.

Which roles hold which permission

There is no dedicated prod-trace-reader role; the two permissions cascade onto the existing tier roles.
TierRoletraces:readtraces:read:prod
Organizationorg_owner / org_adminYY
Organizationorg_developerY
Organizationorg_member
Workspaceworkspace_owner / workspace_adminYY
Workspaceworkspace_developerY
Workspaceworkspace_viewer
Projectproject_owner / project_adminYY
Projectproject_developerY
Projectproject_viewer
Developer-tier roles hold only non-production trace access; admin and owner roles at every tier hold both. Viewer-tier roles and org_member hold neither.

Capture-time classification

A trace’s production / non-production classification is fixed when the trace is written, from the originating environment’s is_production flag at that moment. Flipping the environment’s flag later does not re-classify historical traces. This preserves audit determinism. A user who opens a production trace without traces:read:prod sees an explicit boundary state naming the missing permission — not a generic 404 — so they can request access. Trace IDs from other projects return a generic not-found, so the boundary state can’t be used to enumerate traces across projects.

Granting production trace access

You need org_admin (or higher) in the organization, and the project must have at least one environment flagged is_production = true.
  • To a teammate — on the Team page, open the principal’s role popover at the relevant tier and assign a role that carries traces:read:prod. Note that changing the role grants every capability the new role carries, not just the trace permission.
  • To an API key — create or edit a key (see API keys) and select the trace scopes you need. traces:read:prod alone is a legal scope and is the right choice for a key that only reads production traffic. Issue prod-trace access on a dedicated key and rotate it independently rather than adding it to a multi-purpose ingestion key.
  • To revoke — change the user’s role to one without traces:read:prod, or remove the scope from (or revoke) the API key. The change takes effect on the principal’s next request.
Every grant, revocation, and role change touching traces:read or traces:read:prod is recorded for accountability.

Next steps

Team

Assign roles to people.

API keys

Scope programmatic access.