Skip to main content
Scopes are permission strings carried by the caller’s credential: the JWT scopes claim, or the stored scopes of a service account token. Each AgentOS endpoint requires one or more scopes; requests with insufficient scopes return 403 Forbidden.

Scope Format

Scopes are hierarchical:

Scope Reference

Scopes are enforced at two layers. Control plane scopes are enforced by the AgentOS control plane at os.agno.com. AgentOS scopes are enforced by your deployed AgentOS service on every API request. Any agents:action, teams:action, or workflows:action scope also accepts a resource:<id>:action form to limit access to a specific resource. For example, agents:web-agent:run grants run access only to the web-agent. Use * as the id (agents:*:run) to match every resource of that type. See Scope Format.
Per-resource scoping applies to agents, teams, and workflows only. All other resource types (sessions, memories, knowledge, traces, etc.) use global scopes only. The resource:<id>:action form is not honored for them.
The agent_os:admin scope grants full access to every AgentOS endpoint below.

AgentOS Control Plane Scopes

AgentOS Scopes

Legacy system:read and system:write scopes are accepted as aliases for config:read and config:write, so tokens issued before the rename keep working. Use config:* in new tokens.

Access Prerequisites

A few scopes gate access in the control plane. Without them, finer-grained scopes have no effect because the user cannot reach the resources they apply to.

Custom Scope Mappings

Customize or extend the default scope mappings using the JWT middleware:
Custom scope mappings are additive to the defaults. To override a default, specify the same route pattern with your custom scopes.
Built-in routes preserve their native resource namespace. Handlers for /agents, /teams, and /workflows re-check scopes against their native namespace (agents:, teams:, workflows:). Mapping GET /agents to custom:read won’t grant access because the handler still requires agents:read. Full freedom applies only to new routes you define yourself.

Next Steps