Permission Endpoint
The permission endpoint enables agents to request permission from the PS for actions **not governed by a remote resource** — tool calls, file writes, sending messages on behalf of the user. The spec says this MAY be used **with or without a mission** (§1015), and the without-mission case is the more important pitch: it lets the PS govern agent behavior **before any resources support AAuth**, giving users one chokepoint that sees every sensitive local action. The PS decides each request against its standing user policy and, if needed, defers to the user via the same `202 + AAuth-Requirement: interaction` pattern other AAuth endpoints use. Only `action` is required (§1025); `description`, `parameters`, and `mission` are optional. Toggle **With Mission** above to see how `approved_tools` (§1303) bypasses the endpoint entirely and how the request binds to a mission log.
Agent signs the request with its agent token via Signature-Key: sig=jwt (§1021). No mission is bound — the request body has no `mission` field.
Only `action` is required (§1025). `description` and `parameters` are optional but recommended so the PS (and the user, if asked) can see what's being attempted.
Without a mission, the PS evaluates against the user's **standing policy** at the PS — "always allow SendEmail to my own domain" is a reasonable default.
PS decides immediately and returns 200 `permission: "granted"` (§1055, §1068). PS SHOULD still record the request even without a mission (§1075).
Step 1: POST /permission (SendEmail) → 200 granted by standing policy
application/json
sig=jwt;jwt="eyJhbGciOiJFZERTQSIsImtpZCI6ImFnZW50LWtleS0xIiwidHlwIjoiYWEtYWdlbnQ…
sig=("@method" "@authority" "@path" "signature-key");created=1700000000;alg="ed2…
sig=:Tk9NSVNTSU9OU0VOREVNQUlMR1JBTlRFRFBPTElDWUFMTE9XU09XTkRPTUFJTlNJR05BVFVSRUJ…
{
"action": "SendEmail",
"description": "Email the draft Q2 wrap-up to the user's own address.",
"parameters": {
"to": "user@example.com",
"subject": "Draft: Q2 wrap-up"
}
}Covered Components
Signature Base
Signature-Key Header
sig=jwt;jwt="eyJhbGciOiJFZERTQSIsImtpZCI6ImFnZW50LWtleS0xIiwidHlwIjoiYWEtYWdlbnQrand0In0…"
Signature-Input Header
sig=("@method" "@authority" "@path" "signature-key");created=1700000000;alg="ed25519"
{"alg":"EdDSA","kid":"agent-key-1","typ"?:"aa-agent+jwt"}{"iss"?:"https://agent.example","sub"?:"aauth:local@agent.example","dwk"?:"aauth-agent.json","jti"?:"a6ae301d-1dc7-4b75-8f8b-5612197664a7","cnf"?:{"jwk"?:},"iat"?:1776222894,"exp"?:1776226494,"ps"?:"https://ps.example"}