The wire format is standards-based and interoperable. The organizational semantics above it are ours. A proprietary format would make cross-organization verification impossible, which is the entire product — so there is no proprietary format.
A compact JWS. The delegation chain travels in del, ordered root-first. Every link carries its own expiry; the effective expiry is the minimum across the chain.
Scopes are additive and never redefined. A scope’s meaning is fixed at registration; a narrowing change requires a new scope, not an edit. Registration is by pull request against this document, reviewed by the editor. Vendor-prefixed scopes (x-) are never verified across a boundary.
The governed registry, with requirements and key history, lives at /registry/scopes.
RFC 7515 (JWS), RFC 7517 (JWK), RFC 7519 (JWT) and RFC 8725 best practices. RS256 required; alg is never read from the header without a key match.
OAuth 2.0 Token Exchange (RFC 8693) delegation semantics, and the emerging work on agent authorization in the IETF OAuth working group. Where that work lands on a chain representation, this profile will follow it and deprecate del.
Nothing in the existing specifications carries an ordered chain of principals with per-link attenuation and a revocation pointer. del, lim and cnf.contract_authority are ours. They are additive claims a conforming JWT verifier ignores safely.
Every refusal is named on the wire. A verifier that returns a boolean has thrown away the only information the caller needed — which of these it was, and therefore whether to retry, escalate to a human, or stop.
Every version, dated, with what changed on the wire. A verifier written against any listed version still returns the same answer for an assertion of that version.
Added cnf.contract_authority as a named constraint, made del ordering normative (root-first, previously unspecified), and split the refusal reasons into the seven codes above. Assertions signed under v0.2 continue to verify unchanged.
Added lim for spend and approval thresholds. Verifiers were required to check it; issuers were not yet required to enforce it, and that asymmetry is still open.
First public draft. iss, sub, act, del, scp, exp, jti over RS256. No limits, no constraints, no refusal vocabulary.
Roadmap APIs live here with a version marker, never in the docs.