Reference · policy gate
Every denial, in plain language.
When the Aarmos gate refuses a tool call, the receipt carries asource code identifying the exact rule that fired. Each page below explains what the code means, the common causes, and how to fix it — offline, on-device.
DENY/kill-switch
Kill switch engaged
Human oversight has paused all tool execution for this workspace or scope.
DENY/policy-bundle
Policy bundle invalid or expired
The signed policy bundle failed integrity or freshness checks; the gate fails closed.
DENY/workspace-policy
Blocked by workspace policy
A workspace-scoped rule denied this tool call before it left the device.
DENY/delegation-depth
Delegation depth exceeded
The delegation chain grew beyond the runtime's autonomy envelope.
DENY/delegation-scope
Delegation cannot widen scope
A sub-agent tried to call a tool outside its caller's allowlist.
DENY/delegation-loop
Delegation loop detected
A sub-agent chain would call back into an ancestor — cycle refused.
DENY/deadline
Run deadline elapsed
The run exceeded its wall-clock deadline; no further tool calls are permitted.
DENY/step-cap
Step ceiling reached
The autonomy envelope's per-run step count was exhausted.
DENY/budget
Budget exhausted
The remaining USD budget for this run tree hit zero.
DENY/circuit-breaker
Circuit breaker open
Repeated failures on this tool tripped the breaker; calls are shed until it half-opens.
DENY/arg-caps
Argument caps violated
A tool argument exceeded a size, count, or shape cap declared in policy.
DENY/rate-limit
Rate limit exceeded
The per-minute call quota for this tool or agent was hit.
Looking for process exit codes?
The codes above describe policy denials inside a receipt. When the runtime itself refuses to start — an unavailable port, a read-only workspace, evidence it could not durably commit — it exits with a declared code instead. See exit codes in the CLI reference.