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 atos.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.agent_os:admin scope grants full access to every AgentOS endpoint below.
AgentOS Control Plane Scopes
AgentOS Scopes
- Config
- Registry
- Components
- Agents
- Teams
- Workflows
- Sessions
- Memories
- Learnings
- Knowledge
- Metrics
- Evals
- Traces
- Service Accounts
- Schedules
- Approvals
- Interfaces (A2A)
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: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.