Out-of-Bounds Access (Mission Governance at the PS)
Missions are immutable (§1279) and the resource never evaluates mission content — only the PS has the mission description, tool list, and log (§1193). Mission-level enforcement happens at the PS's token endpoint (§781, §1283, §1748). When an agent requests a scope that is inside its resource's policy but outside the approved mission, the resource still issues a resource token; the PS is the party that detects the mismatch, and per §797 responds with `202 + requirement=interaction` asking the user for consent. If the user declines, the agent must propose a new mission with a new s256.
The agent holds mission M1 and asks for a person token naming it.
The PS confirms M1 exists, is active, and belongs to this agent, and stamps mission_s256 into the token.
The PS does not evaluate scope here — it has not been told one. Scope arrives with the resource token, at the auth token endpoint.
Step 1: POST /person {resource, mission_s256=M1} → person token
Description (Markdown)
# Analyze Q2 Customer Feedback (Analytics Extension) Read customer feedback records and detailed analytics data to produce a comprehensive report.
Blob Members
The blob is what the digest covers. approver lives here and nowhere else — no token carries it.
Mission Identifier
eyJhcHByb3ZlciI6Imh0dHBzOi8vcHMuZXhhbXBsZSIsImFnZW50IjoiYWF1dGg6bG9jYWxAYWdlbnQuZXhhbXBsZSIsImFwcHJvdmVkX2F0IjoiMjAyNi0wNC0xNFQxNzoxODoyMloiLCJleHBpcmVzX2F0IjoiMjAyNi0wNS0xNFQxNzoxODoyMloiLCJkZXNjcmlwdGlvbiI6IiMgQW5hbHl6ZSBRMiBDdXN0b21lciBGZWVkYmFjayAoQW5hbHl0aWNzIEV4dGVuc2lvbilcblxuUmVhZCBjdXN0b21lciBmZWVkYmFjayByZWNvcmRzIGFuZCBkZXRhaWxlZCBhbmFseXRpY3MgZGF0YSB0byBwcm9kdWNlIGEgY29tcHJlaGVuc2l2ZSByZXBvcnQuIiwiYXBwcm92ZWRfdG9vbHMiOlt7Im5hbWUiOiJGZWVkYmFja1JlYWRlciIsImRlc2NyaXB0aW9uIjoiUmVhZCBjdXN0b21lciBmZWVkYmFjayByZWNvcmRzIn0seyJuYW1lIjoiQW5hbHl0aWNzUmVhZGVyIiwiZGVzY3JpcHRpb24iOiJSZWFkIGRldGFpbGVkIGFuYWx5dGljcyBkYXRhIn1dLCJhcHByb3ZlZF9yZXNvdXJjZXMiOlsiaHR0cHM6Ly9hcGkuZXhhbXBsZSJdfQ
8qdUpOng1eVLfligpsOA7M-i2Q2VTdcnxxDLiBT9e_o
s256 is not a blob member. It is BASE64URL(SHA-256()) of the bytes mission decodes to, returned alongside it so the agent can verify the digest covers an unambiguous byte sequence. It travels as the mission_s256 claim of person, resource and auth tokens.
Approved Tools
Read customer feedback records
Read detailed analytics data
PS Capabilities
ps.example
application/json
sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=:
sig=jwt;jwt="eyJhbGciOiJFZERTQSIsImtpZCI6ImFnZW50LWtleS0xIiwidHlwIjoiYWEtYWdlbnQ…
sig=("@method" "@authority" "@path" "content-type" "content-digest" "signature-k…
sig=:U2lnbmF0dXJlQnl0ZXNFeGFtcGxlVmFsdWVGb3JEZW1vbnN0cmF0aW9uUHVycG9zZXNPbmx5:
{
"resource": "https://api.example",
"mission_s256": "7SGTFsuKCcpYJwGRkVBi8vOc1Ssm7NdgnVaAruK87Rg"
}Covered Components
Signature Base
Signature-Key Header
sig=jwt;jwt="eyJhbGciOiJFZERTQSIsImtpZCI6ImFnZW50LWtleS0xIiwidHlwIjoiYWEtYWdlbnQrand0In0…"
Signature-Input Header
sig=("@method" "@authority" "@path" "content-type" "content-digest" "signature-key");created=1700000000;alg="ed25519"
{"alg":"EdDSA","kid":"ps-key-1","typ"?:"aa-person+jwt"}{"iss"?:"https://ps.example","dwk"?:"aauth-person.json","aud"?:"https://api.example","sub"?:"8f14e45fceea167a5a36dedd4bea2543","cnf"?:{"jwk"?:},"mission_s256"?:"7SGTFsuKCcpYJwGRkVBi8vOc1Ssm7NdgnVaAruK87Rg","jti"?:"pt-32d653","iat"?:1776222894,"exp"?:1776226494}