Mission Context at a Resource
How a mission reaches a resource in -11: the agent names the mission when it asks its PS for a person token, the PS stamps mission_s256 into that token, the resource copies it into the resource token it issues, and the issuer copies it into the auth token. There is no AAuth-Mission header — the mission is never agent-asserted, and a resource reads it only from a PS-issued token.
The agent names the mission when it asks for a person token. This is where a mission enters the token chain in -11.
The PS MUST verify the mission exists, is active and belongs to this agent, and MUST reject the request otherwise.
The issued token carries mission_s256 and MUST NOT outlive the mission's expires_at.
A person token is scoped to one resource and one mission, so an agent working across several of either holds one per combination.
The agent may already hold this token: a mission proposal that named `resources` gets one back per approved resource in the approval response.
Step 1: POST /person {resource, mission_s256} → mission-scoped person token
Description (Markdown)
# Analyze Q2 Customer Feedback Read customer feedback records and produce a summary report with sentiment analysis and key themes.
Blob Members
The blob is what the digest covers. approver lives here and nowhere else — no token carries it.
Mission Identifier
eyJhcHByb3ZlciI6Imh0dHBzOi8vcHMuZXhhbXBsZSIsImFnZW50IjoiYWF1dGg6bG9jYWxAYWdlbnQuZXhhbXBsZSIsImFwcHJvdmVkX2F0IjoiMjAyNi0wNC0xNFQxNzoxNDo1NFoiLCJleHBpcmVzX2F0IjoiMjAyNi0wNS0xNFQxNzoxNDo1NFoiLCJkZXNjcmlwdGlvbiI6IiMgQW5hbHl6ZSBRMiBDdXN0b21lciBGZWVkYmFja1xuXG5SZWFkIGN1c3RvbWVyIGZlZWRiYWNrIHJlY29yZHMgYW5kIHByb2R1Y2UgYSBzdW1tYXJ5IHJlcG9ydCB3aXRoIHNlbnRpbWVudCBhbmFseXNpcyBhbmQga2V5IHRoZW1lcy4iLCJhcHByb3ZlZF90b29scyI6W3sibmFtZSI6IkZlZWRiYWNrUmVhZGVyIiwiZGVzY3JpcHRpb24iOiJSZWFkIGN1c3RvbWVyIGZlZWRiYWNrIHJlY29yZHMifSx7Im5hbWUiOiJSZXBvcnRXcml0ZXIiLCJkZXNjcmlwdGlvbiI6IldyaXRlIHRoZSBzdW1tYXJ5IHJlcG9ydCB0byB0aGUgc2hhcmVkIGRyaXZlIn1dLCJhcHByb3ZlZF9yZXNvdXJjZXMiOlsiaHR0cHM6Ly9hcGkuZXhhbXBsZSJdfQ
7SGTFsuKCcpYJwGRkVBi8vOc1Ssm7NdgnVaAruK87Rg
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
Write the summary report to the shared drive
PS Capabilities
7SGTFsuKCcpYJwGRkVBi8vOc1Ssm7NdgnVaAruK87Rg
s256 = BASE64URL(SHA-256(bytes)). The PS returns the same bytes base64url-encoded as the `mission` member, so the agent can recompute the digest itself.
7SGTFsuKCcpYJwGRkVBi8vOc1Ssm7NdgnVaAruK87Rg
The agent asks for a person token with mission_s256; the PS verifies the mission exists, is active and belongs to this agent, then puts the value in the token.
7SGTFsuKCcpYJwGRkVBi8vOc1Ssm7NdgnVaAruK87Rg
REQUIRED when the person token carried one — a resource MUST NOT omit it. person_token_jti names the exact token it was copied from.
7SGTFsuKCcpYJwGRkVBi8vOc1Ssm7NdgnVaAruK87Rg
The resource reads the mission only here. It never arrives as a header and is never agent-asserted.
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}