<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-asor-wimse-agent-delegation-chain-03" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Agent Delegation Chain">Verifiable Attenuated Delegation for AI Agent Chains</title>
    <seriesInfo name="Internet-Draft" value="draft-asor-wimse-agent-delegation-chain-03"/>
    <author initials="R." surname="Asor" fullname="Rafael Asor">
      <organization>Attenu</organization>
      <address>
        <email>rafael.asor@gmail.com</email>
        <uri>https://attenu.io/</uri>
      </address>
    </author>
    <date year="2026" month="October" day="27"/>
    <area>Security</area>
    <workgroup>WIMSE</workgroup>
    <keyword>agent</keyword>
    <keyword>delegation</keyword>
    <keyword>attenuation</keyword>
    <keyword>authorization</keyword>
    <keyword>capability</keyword>
    <abstract>
      <?line 62?>

<t>AI agents increasingly delegate tasks to other agents. Each delegation should
convey only a subset of the delegating party's authority, that subset should be
bounded in scope, magnitude, and time, and any enforcement point should be able
to verify -- offline, with no call to an authorization server -- that a token
presented at hop N carries authority no greater than the token at hop N-1, back
to a trusted root, and that every hop acts under the same accountable
principal. OAuth 2.0 Token Exchange (RFC 8693) models two-party delegation and
records prior actors in a nested "act" claim, but that claim is informational
only and cannot enforce attenuation across a chain of depth two or more. This
document defines the Agent Delegation Chain: a profile of OAuth 2.0 JWT access
tokens (RFC 9068) that carries authority as Rich Authorization Requests (RFC
9396), binds the chain to one principal and names the agent acting at each hop,
links each delegation to its parent by a cryptographic byte-commitment, and
specifies a deterministic offline verification algorithm that enforces
monotonic attenuation, bounded depth, monotonic expiry, and principal
invariance. It reuses existing JOSE, proof-of-possession (RFC 9449), and
status-list machinery (the OAuth Status List draft) and introduces no new
cryptography.</t>
    </abstract>
  </front>
  <middle>
    <?line 83?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>An AI agent that receives a task from a user or another agent frequently
decomposes it and delegates sub-tasks to further agents or tools. In production
deployments this produces delegation chains of depth greater than two. The
security requirement is a single invariant: the authority exercised at any hop
<bcp14>MUST</bcp14> be a subset of the authority granted at the hop that delegated to it, and
this <bcp14>MUST</bcp14> be verifiable by the enforcement point that ultimately honors a tool
call, without that point contacting an authorization server.</t>
      <section anchor="the-gap-in-existing-mechanisms">
        <name>The gap in existing mechanisms</name>
        <t>OAuth 2.0 Token Exchange <xref target="RFC8693"/> defines delegation and impersonation
semantics and a nestable "act" claim. However, <xref target="RFC8693"/> Section 4.1 states
that a recipient considers only the top-level claims and the current (outermost)
actor; the nested chain is history for audit, not enforced authority. Token
Exchange also normally contacts the authorization server at each hop. Neither
property supports offline, enforced, depth &gt;= 2 attenuation.</t>
        <t>Cross-domain identity chaining (see <xref target="I-D.ietf-oauth-identity-chaining"/>) and
transaction tokens address related but distinct problems (crossing trust domains
and propagating immutable context within one domain, respectively) and
explicitly do not provide chained cryptographic attenuation.</t>
        <t>Capability systems that do provide offline attenuation -- macaroons
<xref target="Macaroons"/>, Biscuit <xref target="Biscuit"/> -- either verify with a shared secret
(macaroons: symmetric HMAC, so every verifier holds the minting key) or use a
non-IETF wire format (Biscuit: protocol buffers with an embedded Datalog engine).
The historical standards-track ancestor is SDSI/SPKI <xref target="RFC2693"/>.</t>
        <t>This document fills the gap by reusing the JOSE/OAuth stack and adding only the
chain linkage, the principal binding, and the subsumption-enforcing verification
algorithm. It is designed as the attenuation mechanism satisfying requirements
R1 and R5 of <xref target="I-D.reece-wimse-cross-org-delegation"/> and as a companion to
<xref target="I-D.ietf-wimse-aims"/>, whose placement of the acting agent in "client_id" and
the on-behalf-of party in "sub" this profile follows. It shares its approach
with, and is intended to converge with,
<xref target="I-D.niyikiza-oauth-attenuating-agent-tokens"/> and
<xref target="I-D.coetzee-oauth-spt-txn-tokens"/>. Its offline verification model is
complementary to the online Delegation Server and synchronous revocation model
in <xref target="I-D.sweeney-wimse-credential-delegation"/>. The two are halves of one
design, separated by a single axis: whether a server is in the path. The
in-token mechanisms this document requires -- constraints carried in the token,
parent-hash verification, and a child expiry bounded by its parent's -- are how
a verifier with no network reconstructs what such a server would otherwise know
first-hand; where a server is in every hop, they are redundant rather than
absent. The verifier-side evaluation rules of <xref target="I-D.jackson-wimse-evaluation"/>
describe the receiving half of the same problem; this document cites that work
informatively, and no requirement here depends on it.</t>
      </section>
      <section anchor="actor-drafts">
        <name>Relationship to the OAuth actor drafts</name>
        <t>Two individual Internet-Drafts directed to the OAuth working group record who
acted along a delegation and are complementary to this document.
<xref target="I-D.mcguinness-oauth-actor-profile"/> represents delegated actors in the
"act" claim of OAuth 2.0 Token Exchange <xref target="RFC8693"/>: the outermost actor is
the immediate actor, inner actors are prior-actor context preserved for audit
and not inputs to access-control decisions, and the authorization server that
extends a chain confirms that the new actor is authorized to act for the
subject, enforces a locally configured maximum depth, and issues a token whose
effective scope does not exceed the scope ceiling, if any, that the profile
assigns to the inbound subject token.
<xref target="I-D.mw-oauth-actor-chain"/> builds on the same "act" claim and adds, in its
verified profiles, an actor proof and an authorization server acceptance at
every actor step and a salted commitment to the actor-visible path, and in its
verified-full profile optional path evidence that a recipient validates from
the root to the current actor; its path validation applies the scope
comparison to the final step and does not compare different hops' resource
identifiers as if they had subset semantics.</t>
        <t>In both, the authorization server bounds the authority of the token it
issues at each exchange, and the resource server applies its own
authorization policy when the token is used. A recipient can check which
actors took part, as the issuer asserts them in "act" or, in the verified
profiles of <xref target="I-D.mw-oauth-actor-chain"/>, through actor proofs and
acceptances, and, as that draft's Section 8 states, without a retained
historical token path evidence does not reconstruct that token's effective
authority. This document bounds what each hop
may do in the chain itself: every token carries its Authority, each child
commits to its parent, and any holder of the chain can check at step 4 of
<xref target="verify"/> that each hop's Authority is a subset of its parent's, with no
authorization server present at verification. A deployment that wants an
authorization server's record of actors as well as an offline-checkable bound
on authority can carry an "act" chain beside a Delegation Chain, whose
"client_id" already names the acting agent at each hop (<xref target="principal"/>); this
document places no requirement on an "act" claim and defines no mapping
between the two.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<dl>
        <dt>Delegation Token (DT):</dt>
        <dd>
          <t>An OAuth 2.0 JWT access token <xref target="RFC9068"/> profiled by this document, carrying
the authority granted to one agent at one hop of a chain.</t>
        </dd>
        <dt>Delegation Chain:</dt>
        <dd>
          <t>An ordered sequence of Delegation Tokens DT_0, DT_1, ... DT_n, where DT_0 is
the root, and each DT_i (i &gt; 0) is linked to DT_{i-1} by the mechanism in
<xref target="chain-linkage"/>. A chain is one path. An agent that holds tokens issued
along several paths holds several chains; see <xref target="several-chains"/>.</t>
        </dd>
        <dt>Principal:</dt>
        <dd>
          <t>The party accountable for the chain: the party whose grant every token in
the chain acts under. Carried in "sub", identical at every hop
(<xref target="token-format"/>).</t>
        </dd>
        <dt>Acting Agent:</dt>
        <dd>
          <t>The agent that holds, and acts under, one Delegation Token. Carried in
"client_id", which names the agent acting at each hop.</t>
        </dd>
        <dt>Authority:</dt>
        <dd>
          <t>The set of permitted scope values carried by an "agent_delegation"
authorization detail in the "authorization_details" claim <xref target="RFC9396"/>,
together with the constraints in <xref target="constraints"/>.</t>
        </dd>
        <dt>Attenuation:</dt>
        <dd>
          <t>The construction of a child Delegation Token whose Authority is a subset of
its parent's, per the subsumption rules in <xref target="subsumption"/>.</t>
        </dd>
        <dt>Enforcement Point:</dt>
        <dd>
          <t>The component that verifies a Delegation Chain and permits or denies an action.</t>
        </dd>
        <dt>Verifier:</dt>
        <dd>
          <t>Any component that runs the algorithm of <xref target="verify"/>, whether or not it is
presented with an action. An Enforcement Point is a Verifier that is
presented with an action and decides it.</t>
        </dd>
      </dl>
    </section>
    <section anchor="token-format">
      <name>Token Format</name>
      <t>A Delegation Token is a JWT <xref target="RFC7519"/> signed with JWS <xref target="RFC7515"/> using a
fully-specified algorithm <xref target="RFC9864"/>. Implementations <bcp14>MUST</bcp14> support Ed25519
<xref target="RFC8032"/> <xref target="RFC8037"/> and <bcp14>MAY</bcp14> support ES256 and, for post-quantum readiness,
ML-DSA <xref target="RFC9964"/>. The token uses the "application/at+jwt" header type of
<xref target="RFC9068"/> and includes the claims that profile requires: "iss", "exp", "aud",
"sub", "client_id", "iat", and "jti". The protected header <bcp14>SHOULD</bcp14> contain
"c14n": "JCS" as an informational label. Verifiers <bcp14>MUST NOT</bcp14> rely on this field.
The canonicalization of the protected header and payload JSON is the JSON
Canonicalization Scheme (JCS) <xref target="RFC8785"/>: producers <bcp14>MUST</bcp14> serialize both with
JCS before base64url encoding, and verifiers <bcp14>MUST</bcp14> reject either decoded byte
string unless it is exactly the JCS serialization of the parsed object.
Verifiers <bcp14>MUST</bcp14> also reject duplicate object member names, non-finite numbers,
and lone UTF-16 surrogates. Because JCS numbers are IEEE 754 binary64 values,
an integer whose magnitude exceeds 2^53-1 is not represented exactly; producers
<bcp14>MUST NOT</bcp14> emit one, and verifiers <bcp14>MUST</bcp14> reject a token carrying one as malformed.</t>
      <t>The <xref target="RFC9068"/> claims carry the following meaning in a Delegation Token:</t>
      <dl>
        <dt>sub:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. The Principal. <xref target="RFC9068"/> Section 2.2 makes "sub" the resource
owner where one exists; in a Delegation Chain the resource owner is the party
whose grant the chain acts under, and the same value <bcp14>MUST</bcp14> appear in every
DT_i of the chain. A verifier denies a chain in which any DT_i carries a
"sub" that differs from DT_0's (<xref target="verify"/>, step 3). A chain whose DT_0
carries no "sub", or a "sub" that is not a non-empty string, is malformed.</t>
        </dd>
        <dt>client_id:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. The Acting Agent at this hop, as a string. It identifies which
software exercised the authority; "sub" identifies whose grant it exercised.
The value <bcp14>MAY</bcp14> be a workload identifier as defined by
<xref target="I-D.ietf-wimse-identifier"/>; this document places no requirement on its
format beyond being a string.</t>
        </dd>
        <dt>aud:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. The audience, as <xref target="RFC7519"/> Section 4.1.3 defines it: a string,
or an array of one or more strings. A token whose "aud" is absent, null, or
an empty array is malformed. The Enforcement Point applies the audience check
of <xref target="RFC9068"/> Section 4 to DT_n (<xref target="verify"/>, step 8); this document places
no requirement on the audience of DT_i for i &lt; n beyond presence and shape.</t>
        </dd>
        <dt>iss, exp, iat, jti:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>, as in <xref target="RFC9068"/>. "exp" is additionally subject to the monotonic
expiry rule of <xref target="subsumption"/>. "jti" identifies the token instance for the
purposes of <xref target="chain-linkage"/> and of per-lifetime constraints
(<xref target="constraints"/>).</t>
        </dd>
      </dl>
      <t>In addition, a Delegation Token contains:</t>
      <dl>
        <dt>authorization_details:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. An array of authorization detail objects <xref target="RFC9396"/> expressing the
Authority. See <xref target="authority"/>.</t>
        </dd>
        <dt>cnf:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. A confirmation claim <xref target="RFC7800"/> binding the token to the holder's
key, proven per DPoP <xref target="RFC9449"/>. See <xref target="binding"/>.</t>
        </dd>
        <dt>del_depth:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. A non-negative integer; the position of this token in the chain.
DT_0 has del_depth 0.</t>
        </dd>
        <dt>del_max_depth:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14> in DT_0. A positive integer; the maximum permitted chain length.
<bcp14>MUST NOT</bcp14> be increased by any child (see <xref target="subsumption"/>).</t>
        </dd>
        <dt>par_hash:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14> in every DT_i with i &gt; 0; <bcp14>MUST</bcp14> be absent in DT_0. The base64url-encoded
SHA-256 digest of the parent token's JWS Signing Input (<xref target="RFC7515"/> Section 5.1),
i.e. of the exact bytes "ASCII(BASE64URL(parent JOSE Header)) || '.' ||
ASCII(BASE64URL(parent JWS Payload))". This is the byte-commitment that binds a
child to one specific parent and prevents chain splicing.</t>
        </dd>
      </dl>
      <section anchor="principal">
        <name>Principal and Acting Agent</name>
        <t>A Delegation Chain answers two questions that a holder key alone does not: who
is accountable for what the chain does, and which agents took part. The first
is answered by "sub", which names the Principal and is invariant along the
chain: a child token is issued under the same grant as its parent, so it names
the same Principal, and a token that names a different one is not a member of
the chain. The second is answered by "client_id", which names the agent acting
at each hop. Together they make a chain auditable as well as verifiable.</t>
        <t>The "par_hash" commitment (<xref target="chain-linkage"/>) already prevents a child from
being re-parented onto a different token. It does not, by itself, prevent a
child from carrying a different "sub" than its parent, because the child is a
new token with its own payload. The invariance check in step 3 of <xref target="verify"/> is
what closes that gap, and it is a comparison of two strings, not new
machinery.</t>
        <t>This revision defines no transition mode for chains shaped by the -01. A chain whose tokens carry no "client_id" or no "cnf", or whose
"aud" is null, is malformed under this revision. A verifier that also accepts
such chains under the -01's rules does so outside this document
and reports which revision's rules it applied.</t>
      </section>
    </section>
    <section anchor="authority">
      <name>Authority Representation</name>
      <t>For this profile, Authority is expressed by an authorization detail object
<xref target="RFC9396"/> whose "type" is "agent_delegation". A Delegation Token <bcp14>MUST</bcp14> carry
exactly one authorization detail object, and its type <bcp14>MUST</bcp14> be
"agent_delegation"; a token carrying a second detail, or a detail of any other
type, is malformed (<xref target="detail-types"/>). The object contains a
<bcp14>REQUIRED</bcp14> "scopes" member: an array of strings, where each string names one
permitted operation. An empty array conveys no permitted operation. Numeric and
enumerated bounds ("ceilings") that <xref target="RFC9396"/> does not standardize are carried
in the "constraints" member defined here. The object <bcp14>MUST NOT</bcp14> carry members
other than "type", "scopes", and "constraints"; a verifier that encounters
another member <bcp14>MUST</bcp14> reject the token as malformed, because it would otherwise
report success on a detail it had not fully read.</t>
      <section anchor="scopes">
        <name>Scope Syntax and Wildcards</name>
        <t>Each member of "scopes" <bcp14>MUST</bcp14> match the following ABNF <xref target="RFC5234"/>:</t>
        <artwork><![CDATA[
lower          = %x61-7A
digit          = %x30-39
segment        = lower *(lower / digit / "_" / "-")
literal-scope  = segment "." segment *("." segment)
wildcard-scope = segment *("." segment) ".*"
opaque-scope   = 1*( %x21 / %x23-29 / %x2B-5B / %x5D-7E )
scope          = literal-scope / wildcard-scope / opaque-scope
]]></artwork>
        <t>The "opaque-scope" form is the "scope-token" of <xref target="RFC6749"/> Section 3.3 with
the asterisk (%x2A) removed. It exists so that a chain can carry a scope string
issued by an OAuth authorization server under that server's own naming, which
the two structured forms do not admit.</t>
        <t>A verifier classifies each scope value by its bytes alone, trying the forms in
this order: a value that matches "literal-scope" is a literal scope; otherwise,
a value that matches "wildcard-scope" is a wildcard scope; otherwise, a value
that matches "opaque-scope" is an opaque scope. A value that matches none of
the three, for example one that contains an asterisk anywhere other than as a
complete final segment following a dot, is invalid. Thus <tt>crm.read</tt> is a
literal scope, <tt>crm.*</tt> is a wildcard scope, <tt>User.Read</tt> and <tt>openid</tt> are opaque
scopes, and the bare value <tt>*</tt>, the partial-segment form <tt>crm.re*</tt>, and the
non-terminal form <tt>crm.*.read</tt> are invalid. A producer <bcp14>MUST NOT</bcp14> emit an invalid
scope. A verifier that encounters one <bcp14>MUST</bcp14> reject the Delegation Token as
malformed before evaluating subsumption. There is no case folding: <tt>User.Read</tt>
and <tt>user.read</tt> are two different scopes.</t>
        <t>The covering relation between a parent scope and a child scope is:</t>
        <ul spacing="normal">
          <li>
            <t>A parent literal scope covers only an identical child scope.</t>
          </li>
          <li>
            <t>A parent wildcard scope covers any child scope, literal or wildcard, whose
value begins with the parent value after removing only the final <tt>*</tt> and
retaining the dot. Therefore <tt>crm.*</tt> covers "crm.read", "crm.x.y.z", and
<tt>crm.x.*</tt>; it does not cover the bare name "crm" or the adjacent namespace
"crmx.read". Wildcard coverage is segment-bounded and extends to any depth
below the named prefix, and a wildcard covers a narrower wildcard under its
prefix.</t>
          </li>
          <li>
            <t>A parent opaque scope covers only a byte-identical child scope. No wildcard
scope covers an opaque scope, and an opaque scope covers no wildcard scope.</t>
          </li>
        </ul>
        <t>One consequence of classifying by bytes alone is stated here so that
deployments can plan for it: a scope string issued by an authorization server
that happens to match "literal-scope" is treated as a literal scope, and a
wildcard over its prefix covers it. A deployment that needs such a scope to
match exactly should not grant a wildcard over its prefix; doing so also gives
up wildcard coverage for every other scope under that prefix. This document
provides no registry by which a verifier could tell a dotted provider string
from a structured literal, and does not add one.</t>
        <t>This covering relation belongs to the "agent_delegation" authorization detail
type; see <xref target="detail-types"/> for how the relation is bound to the type.</t>
      </section>
      <section anchor="constraints">
        <name>Constraint Vocabulary</name>
        <t>The "constraints" member is an array of objects. Each object contains a
<bcp14>REQUIRED</bcp14> "key" member, a string identifying the constrained dimension, and
exactly one typed constraint value, whose member name is the constraint type.
A constraint object is closed: its members are "key", that one type member,
and any member the type's definition adds ("order" for "rank"). A constraint
object carrying any other member is malformed, and a verifier <bcp14>MUST</bcp14> reject the
token. This document defines:</t>
        <ul spacing="normal">
          <li>
            <t>"max" : a number. The value of the associated quantity in one authorized
action <bcp14>MUST NOT</bcp14> exceed it (e.g. {"key": "max_rows", "max": 5000}). It is
measured per action: nothing in this type aggregates across actions, tokens,
siblings, or a subtree.</t>
          </li>
          <li>
            <t>"max_lifetime" : a number. The sum of the associated quantity over every
action authorized under the token carrying it, identified by "jti", <bcp14>MUST NOT</bcp14>
exceed it (e.g. {"key": "max_calls", "max_lifetime": 50}). It is measured per
token lifetime. A re-issued token (<xref target="chain-linkage"/>) is a new "jti" and
starts a new total; an issuer that needs a bound to span re-issuance issues
the new token with the bound reduced by the amount already consumed.</t>
          </li>
          <li>
            <t>"max_subtree" : a number. The sum of the associated quantity over every
action authorized under the token carrying it and under every token
descended from it <bcp14>MUST NOT</bcp14> exceed it. It is measured per subtree. Enforcing
it requires accounting across tokens; see <xref target="fanout"/> for what an offline
verifier can and cannot do with it.</t>
          </li>
          <li>
            <t>"min" : a number. The value of the associated quantity in one authorized
action <bcp14>MUST NOT</bcp14> be less than it (e.g. {"key": "tenure_years", "min": 2}).
Where "max" carries a ceiling tightened downward, "min" carries a floor
tightened upward.</t>
          </li>
          <li>
            <t>"one_of" : an array. The associated value <bcp14>MUST</bcp14> be a member.</t>
          </li>
          <li>
            <t>"not_one_of" : an array. The associated value <bcp14>MUST NOT</bcp14> be a member.</t>
          </li>
          <li>
            <t>"prefix" : a string. The associated value <bcp14>MUST</bcp14> have it as a prefix.</t>
          </li>
          <li>
            <t>"rank" : a string naming a position in an ordered enumeration. The constraint
object additionally carries an "order" member: an array of two or more
distinct strings listing the enumeration from least to most permissive, of
which "rank" <bcp14>MUST</bcp14> be one (e.g. {"key": "egress", "rank": "internal", "order":
["none", "internal", "any"]}). The associated value <bcp14>MUST</bcp14> be a member of
"order" whose position does not exceed that of "rank". The ordering travels
with the constraint so that a verifier needs no registry entry per key; a
constraint of type "rank" that lacks "order", or whose "rank" is not a member
of "order", is malformed.</t>
          </li>
        </ul>
        <t>The three measurement scopes -- per action, per token lifetime, per subtree --
are distinct constraint types because they are enforced by different machinery:
a per-action bound is decided from the request alone, a per-lifetime bound
needs a running total held by the component that authorizes actions under that
token, and a per-subtree bound needs a total that spans tokens. A producer <bcp14>MUST
NOT</bcp14> emit a cumulative bound under the "max" type. A per-action "max" on a
quantity that exists only as a running count, such as a count of calls, bounds
nothing, since each action contributes one; a producer bounds a count with
"max_lifetime" or "max_subtree". A verifier that holds only
the chain checks that a child's per-lifetime and per-subtree bounds are no
wider than its parent's (<xref target="subsumption"/>); whether the spend is under the
bound is checked only where the running total is held, and an enforcement
point that has no access to that total denies (<xref target="verify"/>, step 8). The
running total is supplied by the component that holds it, through a channel
separate from the request's own parameters; a value the request asserts
about its own total is not a total.</t>
        <t>Within one authorization detail object, the pair (key, type) identifies a
constraint. A detail <bcp14>MUST NOT</bcp14> carry two constraints with the same key and the
same type, and a verifier <bcp14>MUST</bcp14> reject a token that does as malformed, rather
than choosing one of them. Two constraints with the same key and different
types (for example a "min" and a "max" on one quantity, forming a range) are
permitted and are evaluated independently.</t>
        <t>The registry in <xref target="iana"/> allows new constraint types. A verifier that encounters
an unknown constraint type <bcp14>MUST</bcp14> treat the action as denied (fail-closed), never
as unconstrained.</t>
      </section>
      <section anchor="subsumption">
        <name>Subsumption Rules</name>
        <t>An Authority C is subsumed by an Authority P (written C &lt;= P) if and only if all
of the following hold:</t>
        <ol spacing="normal" type="1"><li>
            <t>Every scope in C's "agent_delegation" detail is covered by at least one
scope in P's "agent_delegation" detail according to <xref target="scopes"/>, and</t>
          </li>
          <li>
            <t>for every constraint (key, type) present in P, a constraint with the same
key and the same type is present in C whose admissible set is a subset of
P's: for "max", "max_lifetime", and "max_subtree", C.value &lt;= P.value; for
"min", C.value &gt;= P.value; for "one_of", C's array is a subset of P's; for
"not_one_of", C's array is a superset of P's; for "prefix", C's string
begins with P's; for "rank", C's "order" is identical to P's, element for
element, and the position of C's "rank" in it does not exceed the position
of P's, and</t>
          </li>
          <li>
            <t>a constraint (key, type) present in P <bcp14>MUST NOT</bcp14> be absent in C (absence means
unbounded, which is not a subset), and</t>
          </li>
          <li>
            <t>C.exp &lt;= P.exp (monotonic expiry), and</t>
          </li>
          <li>
            <t>C.del_max_depth &lt;= P.del_max_depth.</t>
          </li>
        </ol>
        <t>No inference is made across constraint types: a "max_lifetime" in C does not
satisfy a "max" in P, and a "max" in C does not satisfy a "max_lifetime" in P,
whatever their values. A verifier that does not implement the type of a
constraint present in P cannot evaluate rule 2 for it; it <bcp14>MUST</bcp14> treat the chain
as not subsumed unless C carries a constraint with the same key and type whose
JCS serialization <xref target="RFC8785"/> is byte-identical to P's, and even then the action
is denied at step 8 of <xref target="verify"/> under the fail-closed rule of <xref target="constraints"/>.</t>
        <t>Attenuation is the construction of C as the greatest lower bound (meet) of P and
a request R under these rules. Because the meet can only narrow, C &lt;= P holds by
construction for every R.</t>
      </section>
      <section anchor="detail-types">
        <name>Authorization Detail Types and the Verifier</name>
        <t><xref target="RFC9396"/> does not maintain a registry of authorization detail type values;
its Section 2.1 recommends that an API designer use a collision-resistant
namespace under the designer's control, such as a URI. The type value
"agent_delegation" is the one this document and its test vectors use; whether
a later revision moves it to a URI-form value under such a namespace is an open
question, and the wire value is unchanged by this revision.</t>
        <t>The covering relation a verifier applies at step 4 of <xref target="verify"/> is specified
per authorization detail type. For "agent_delegation" it is the relation in
<xref target="scopes"/> together with the constraint rules of <xref target="subsumption"/>. Another
authorization detail type, if defined, specifies its own relation, and that
relation is what a verifier applies to details of that type. The type selects
the relation.</t>
        <t>A verifier <bcp14>MUST</bcp14> evaluate every authorization detail object in every DT_i, or
reject the token. A detail whose type the verifier does not implement is one it
cannot evaluate, and the token <bcp14>MUST</bcp14> be rejected as malformed; a verifier that
skips a detail it does not understand has reported success on a token it did
not read. The verifier classifies detail types when it parses a token, before
step 1 of <xref target="verify"/>, so that DT_0 is subject to the rule as every other token
is. Under this revision the only type a token may carry is "agent_delegation",
and it may carry exactly one detail (<xref target="authority"/>); a later revision may
define chains whose tokens carry details of several types, and the per-type
binding of the covering relation stated above is what such a definition would
build on. Such a definition would also need a rule for a child that adds a
type its parent did not carry, because a verifier cannot tell from the child
alone whether the addition narrowed or widened what the parent granted. The
rule recorded here for that revision, proposed by Kieran Sweeney, is that a
child that adds a type its parent did not carry is treated as widening unless
that type's definition states otherwise. Under this revision the rule is not
needed: the added type is not "agent_delegation", so the token is malformed
under the rule above, and the vector "reject_child_adds_detail_type" in
<xref target="vectors"/> pins that outcome. A resource server <bcp14>SHOULD</bcp14> declare the types it implements in the
"authorization_details_types_supported" member of its protected resource
metadata (<xref target="RFC9728"/>, Section 2), so that an issuer can learn which chains it will accept.
<xref target="I-D.jackson-wimse-evaluation"/> states the same process-every-entry-or-refuse
rule from the verifier's side; the requirement here stands on its own.</t>
        <t>Which chains a verifier accepts across deployments is a trust decision the
verifier already makes by the root keys it holds (<xref target="verify"/>, step 1); two
verifiers that both implement "agent_delegation" apply the same covering
relation to the same chain.</t>
      </section>
      <section anchor="vocabulary">
        <name>Open Issue: Scope Vocabulary</name>
        <t>Subsumption is syntactic. Two deployments that both implement
"agent_delegation", and attach different meanings to the same scope verbs, both
verify the same chain clean and read it differently, because nothing in the
token says what "crm.read" permits. A profile or registry of common operation
verbs would close that gap. This document states the limit and supplies
neither.</t>
        <t>A companion document that does supply one is expected to take the result of
the native verification in <xref target="verify"/> as an input rather than re-implement it;
to map a scope family to an action definition explicitly; and, where a mapping
is ambiguous, to refuse rather than resolve. A companion document is cited from
this one when it is an Internet-Draft, so that every reader can cite it by a
stable name.</t>
      </section>
    </section>
    <section anchor="chain-linkage">
      <name>Chain Linkage</name>
      <t>Each child token commits to its parent by "par_hash" (<xref target="token-format"/>). This
binds the child to the parent's exact serialized bytes, so a child cannot be
re-parented onto a different (e.g. broader) token: doing so changes the parent's
Signing Input and thus its SHA-256 digest, which no longer matches the child's
"par_hash". The digest is over the already-serialized JWS Signing Input; the
protected header and payload that form that input are JCS <xref target="RFC8785"/> as required
by <xref target="token-format"/>.</t>
      <t>The commitment is to a parent token instance, not to a parent identity. A
child's chain carries the parent instance the child commits to. When a parent
is re-issued -- for example refreshed before expiry with a new "jti", "iat",
and "exp" -- the re-issued token is a different token, outside the chain of any
child issued under the previous instance. Re-issuing a parent therefore does
not invalidate its existing children: they continue to verify with the instance
they were issued under until that instance expires or a token in their chain is
revoked (<xref target="revocation"/>), and a child presented together with a re-issued
parent instead of the instance it commits to is denied at step 2 of
<xref target="verify"/>. The operational consequence for the refresh rate is in
<xref target="latency"/>. A parent identity that survives re-issuance is not defined by this
document.</t>
    </section>
    <section anchor="verify">
      <name>Offline Verification Algorithm</name>
      <t>An Enforcement Point presented with a Delegation Chain DT_0 ... DT_n and an
attempted action A, and holding the trusted root public key(s), <bcp14>MUST</bcp14> perform the
following, denying on the first failure:</t>
      <ol spacing="normal" type="1"><li>
          <t>Verify the JWS signature of every DT_i using a fully-specified algorithm
<xref target="RFC9864"/>. The verifier <bcp14>MUST</bcp14> hold a local list of accepted algorithms, and
<bcp14>MUST</bcp14> deny the chain if the "alg" of any DT_i is not on that list, even where
the signature verifies. The verifier <bcp14>MUST</bcp14> take the algorithm from its own
configuration for the key, and <bcp14>MUST</bcp14> deny if the "alg" header names a
different one. DT_0 <bcp14>MUST</bcp14> verify under a trusted root key.</t>
        </li>
        <li>
          <t>For each i &gt; 0, compute SHA-256 of DT_{i-1}'s JWS Signing Input and compare,
in constant time, to DT_i's "par_hash". Any mismatch: deny.</t>
        </li>
        <li>
          <t>Check chain shape, depth first. Depth: DT_0.del_depth == 0; DT_i.del_depth
== i; n &lt; DT_0.del_max_depth. Then principal: DT_0.sub is a non-empty
string, and for every i, DT_i.sub is identical to DT_0.sub. Otherwise deny.</t>
        </li>
        <li>
          <t>For each i &gt; 0, verify DT_i.Authority &lt;= DT_{i-1}.Authority under rules 1,
2, 3, and 5 of <xref target="subsumption"/>. A token carrying a second detail, or a
detail of a type other than "agent_delegation", was rejected as malformed
when it was parsed (<xref target="detail-types"/>). Any violation: deny.</t>
        </li>
        <li>
          <t>Check time: for every i, nbf (if present) &lt;= now &lt; exp, and exp is monotonic
non-increasing along the chain (rule 4 of <xref target="subsumption"/>). Otherwise deny.</t>
        </li>
        <li>
          <t>Verify holder binding: the presenter proves possession of the key in DT_n.cnf
via a valid DPoP proof <xref target="RFC9449"/> bound to this request. Otherwise deny.</t>
        </li>
        <li>
          <t>Check revocation: consult the Token Status List <xref target="I-D.ietf-oauth-status-list"/>
reference in each DT_i (if present) against a cached list. A cached status
answer is trusted for its time to live, so the window in which a revoked
token is still honored is that time to live and no longer. A status
reference that is present but whose list cannot be fetched, or whose cached
answer has outlived its time to live and cannot be refreshed, is UNKNOWN,
and the verifier <bcp14>MUST</bcp14> deny: unknown is not not-revoked. If any DT_i is
revoked, deny (and, by local policy, treat the whole subtree as revoked). A
token issued with no status reference is a choice made at issuance
(<xref target="revocation"/>) and is not denied on that account.</t>
        </li>
        <li>
          <t>Authorize A against DT_n: confirm that the Enforcement Point is identified by
DT_n's "aud" as <xref target="RFC9068"/> Section 4 requires; then check A against
DT_n.Authority: its scope, every per-action constraint ("max", "min",
"one_of", "not_one_of", "prefix", "rank"), and every cumulative constraint
("max_lifetime", "max_subtree"). A cumulative constraint is checked where
the running total it is measured over is held: by the Enforcement Point
itself, or by a component that holds that total and authorizes A on the
Enforcement Point's behalf (<xref target="fanout"/>). The total reaches the check
through a channel separate from the request's own parameters, never from
the request: a cumulative constraint is evaluated against that total only,
and a per-action constraint against the request only, so a name the two
share cannot let one stand in for the other. An Enforcement Point that
neither holds the running total for a cumulative constraint DT_n carries
nor has A authorized by a component that does <bcp14>MUST</bcp14> deny. Permit only if A
is within DT_n.Authority on every count.</t>
        </li>
      </ol>
      <t>The algorithm is deterministic, side-effect free, and requires no network call
except the (cacheable, offline-checkable) status list of step 7. The one
exception is the cumulative-constraint check of step 8, which belongs to the
component holding the running total and lies outside that guarantee. The order of
steps 1 to 5 is the order in which a chain presented without an action can be
checked (<xref target="without-request"/>); steps 6 and 8 need the request, and step 7 needs
the status list.</t>
      <section anchor="without-request">
        <name>What Verification Establishes</name>
        <t>A Verifier is not always an Enforcement Point. An auditor re-checking a
recorded chain, an issuer validating a parent before minting a child, or a
component that holds a chain but no request, can run steps 1 to 5 and, if a
status list is available, step 7. <xref target="_table-conclusions"/> states what such a
Verifier may and may not conclude.</t>
        <table anchor="_table-conclusions">
          <name>What a Verifier may conclude, by the steps it performed</name>
          <thead>
            <tr>
              <th align="left">Property</th>
              <th align="left">Chain alone (steps 1-5, 7)</th>
              <th align="left">With the request (steps 6, 8)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Every token is well-formed, JCS-canonical, and signed under an accepted algorithm</td>
              <td align="left">yes</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">DT_0 is signed under a trusted root key</td>
              <td align="left">yes</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">Each child commits to the parent instance presented with it</td>
              <td align="left">yes</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">Depth is bounded and the Principal is unchanged along the chain</td>
              <td align="left">yes</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">Each hop's Authority is a subset of its parent's</td>
              <td align="left">yes</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">Every token is within its validity window at the instant checked</td>
              <td align="left">yes</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">No token in the chain is revoked, within the status list's time to live</td>
              <td align="left">yes, if the list is reachable</td>
              <td align="left">yes, if the list is reachable</td>
            </tr>
            <tr>
              <td align="left">The presenter holds the key DT_n is bound to</td>
              <td align="left">no</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">A specific action is permitted</td>
              <td align="left">no</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">A per-lifetime total is within bound</td>
              <td align="left">no</td>
              <td align="left">only where the total is held; otherwise step 8 denies</td>
            </tr>
            <tr>
              <td align="left">A per-subtree total is within bound</td>
              <td align="left">no</td>
              <td align="left">only where the total is held (<xref target="fanout"/>); otherwise step 8 denies</td>
            </tr>
            <tr>
              <td align="left">The Principal still holds the authority granted at DT_0, at the instant checked</td>
              <td align="left">no</td>
              <td align="left">no</td>
            </tr>
          </tbody>
        </table>
        <t>The last row records a second limit beside the one stated in
<xref target="root-issuance"/>: nothing in a chain says whether the Principal named in
"sub" still holds the authority DT_0 granted. A Principal who has left, lost
the role, or had the underlying grant withdrawn leaves every unexpired,
unrevoked chain verifying clean, because a status list revokes tokens and
nothing in the chain revokes the Principal. Step 8 permits an action within
DT_n's Authority without establishing that standing; a deployment that must
know it before honoring an action under that grant establishes it outside the
chain. A server in the call path that holds the Principal's grant itself, for
example a credential the Principal deposited with it, can learn at use time
that the grant was withdrawn, when the upstream service refuses the
credential; how soon that happens depends on the upstream service's
revocation and caching, and a successful call does not establish the
Principal's standing beyond that grant. That covers a withdrawn grant, not a
role lost inside the Principal's own organization. This is the division of labor <xref target="revocation"/> and
<xref target="fanout"/> already state for revocation and for aggregate budgets: the chain
is the offline carrier of what a chain can prove, and what it cannot prove is
checked by machinery outside it. A deployment that must know standing checks
it at root issuance, where <xref target="root-issuance"/> places the policy decision, and,
where the gap after minting is unacceptable, again at exercise by an online
server in the call path. <xref target="revocation"/> describes an online Delegation Server
that evaluates delegation-tree state for synchronous revocation; what else such
a server checks is left to the deployment.</t>
        <t>The "subset" row holds for the constraint types the Verifier implements. A
constraint type it does not implement fails closed under the rule in
<xref target="subsumption"/>, so it can turn a "yes" into a "no" and never the reverse.</t>
        <t>A Verifier that has not performed step 6 has established that the chain is
valid, not that the party presenting it is its holder, and <bcp14>MUST NOT</bcp14> report the
chain as authorizing anything. A Verifier that has not performed step 8 has
established the leaf Authority as a set and <bcp14>MUST NOT</bcp14> report any action as
permitted. Such a Verifier <bcp14>SHOULD</bcp14> report its result as the chain's validity
together with the steps it did not perform.</t>
      </section>
      <section anchor="outcomes">
        <name>Verification Outcomes</name>
        <t>Independent implementations are compared by their outcomes on shared test
vectors (<xref target="vectors"/>), and the comparison is only as good as the agreement on
how a denial is named. A verifier <bcp14>SHOULD</bcp14> report a denial under the name that
<xref target="_table-outcomes"/> gives for the check that failed, which is the vocabulary the
test vectors declare; since the algorithm denies on the first failure, one
denial carries one name. A verifier <bcp14>MAY</bcp14> add detail of its own beside the name. The names are
not carried in any token and have no effect on the wire.</t>
        <table anchor="_table-outcomes">
          <name>Verification outcome names</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Step</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">malformed</td>
              <td align="left">parse</td>
              <td align="left">a token is not three base64url parts, a claim this document requires is absent or of the wrong shape, an integer's magnitude exceeds 2^53-1, a scope is invalid, a constraint is malformed or repeated, a detail carries an unknown member, a token carries more than one detail, or a detail type is not "agent_delegation"</td>
            </tr>
            <tr>
              <td align="left">non_canonical</td>
              <td align="left">parse</td>
              <td align="left">a decoded header or payload is not the JCS serialization of what it parses to</td>
            </tr>
            <tr>
              <td align="left">duplicate_member</td>
              <td align="left">parse</td>
              <td align="left">a JSON object repeats a member name</td>
            </tr>
            <tr>
              <td align="left">non_finite</td>
              <td align="left">parse</td>
              <td align="left">a number is NaN or an infinity, which JSON and JCS do not represent</td>
            </tr>
            <tr>
              <td align="left">signature_invalid</td>
              <td align="left">1</td>
              <td align="left">a signature does not verify, the algorithm is not on the verifier's list, the algorithm differs from the one configured for the key, or DT_0 is not under a trusted root key</td>
            </tr>
            <tr>
              <td align="left">par_hash_mismatch</td>
              <td align="left">2</td>
              <td align="left">a child's commitment does not match the parent presented with it</td>
            </tr>
            <tr>
              <td align="left">depth_invalid</td>
              <td align="left">3</td>
              <td align="left">a del_depth is out of sequence or the chain exceeds del_max_depth</td>
            </tr>
            <tr>
              <td align="left">principal_altered</td>
              <td align="left">3</td>
              <td align="left">a token's "sub" differs from DT_0's</td>
            </tr>
            <tr>
              <td align="left">not_narrower</td>
              <td align="left">4</td>
              <td align="left">a child's Authority is not subsumed by its parent's under rules 1, 2, 3, or 5</td>
            </tr>
            <tr>
              <td align="left">expired</td>
              <td align="left">5</td>
              <td align="left">a token is outside its validity window, or its expiry exceeds its parent's (rule 4)</td>
            </tr>
            <tr>
              <td align="left">holder_binding_failed</td>
              <td align="left">6</td>
              <td align="left">the proof of possession is absent or invalid for this request</td>
            </tr>
            <tr>
              <td align="left">revoked</td>
              <td align="left">7</td>
              <td align="left">a token in the chain is revoked</td>
            </tr>
            <tr>
              <td align="left">status_unknown</td>
              <td align="left">7</td>
              <td align="left">a status reference is present and its current status cannot be established</td>
            </tr>
            <tr>
              <td align="left">audience_mismatch</td>
              <td align="left">8</td>
              <td align="left">DT_n's "aud" does not identify the Enforcement Point</td>
            </tr>
            <tr>
              <td align="left">scope_not_granted</td>
              <td align="left">8</td>
              <td align="left">the action's scope is not covered by DT_n's scopes</td>
            </tr>
            <tr>
              <td align="left">ceiling_exceeded</td>
              <td align="left">8</td>
              <td align="left">the action violates a constraint of DT_n</td>
            </tr>
            <tr>
              <td align="left">unknown_constraint</td>
              <td align="left">8</td>
              <td align="left">DT_n carries a constraint of a type the verifier does not implement</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="several-chains">
        <name>Several Chains Reaching One Agent</name>
        <t>This document defines the verification of one chain. An agent may hold
Delegation Tokens issued along more than one path from one or more roots, and
so hold more than one chain. For each request the presenter presents one chain,
the Enforcement Point verifies that chain alone, and the action is permitted
only if that chain permits it. An Enforcement Point <bcp14>MUST NOT</bcp14> combine the
Authority of tokens from different chains, and a chain that fails verification
has no effect on the evaluation of another chain the same agent presents. A
presenter holding several valid chains chooses which to present; one valid
chain that permits the action suffices. <xref target="I-D.jackson-wimse-evaluation"/>
treats the same situation from the verifier's side, in its rule that each
delegation path is evaluated independently and fails closed on its own; this
document cites that rule informatively and does not depend on it.</t>
      </section>
      <section anchor="provenance">
        <name>Open Issue: Trust-Anchor Provenance</name>
        <t>Step 1 assumes the verifier already holds the trusted root key or keys. This
document says nothing about how a verifier comes to hold that key, how the key
is bound to the party it is trusted as, or under which algorithm that binding
was made; the algorithm rule of step 1 reaches every token in the chain and
stops at the root key. A chain can be post-quantum at every hop and still rest
on a root key whose provenance the verifier cannot check. That is a property of
every delegation chain design, not of this one, and the author's view is that
it belongs to the working group rather than to this document. It is recorded
here as open and is not solved here.</t>
        <t>Two gaps follow from this, and they do not behave alike. The binding gap is
that a verifier provisioned only with a root key has nothing in the chain that
shows how that key is bound to the party it is trusted as or under which
algorithm. The recording gap is that a later reader cannot reconstruct what
the chain rested on. The binding gap is a limit of verifying from configured
state, as the revocation window of <xref target="latency"/> is: binding evidence the
verifier already holds can be inspected offline, and a verifier that is
online at the moment of use may be able to obtain current evidence from an
authenticated source. Network access alone establishes nothing. This
document states the limit, as <xref target="latency"/> states that window. A deployment that
cannot bear it can use the online half that <xref target="revocation"/> names for
synchronous revocation; <xref target="revocation"/> describes that half as evaluating
delegation-tree state, and what it inspects beyond that is left to the
deployment. The recording gap is not relieved by being online: a verifier that
writes nothing down leaves a later reader no better off. A record of what the
verifier held belongs beside the retained record, not in the chain. Section 4.7
of <xref target="I-D.gilda-audit-agent-audit-record"/> defines a retention entry kept beside
a record. The entry's validationData carries what a verifier needs to validate
the record's envelope signature and its anchors offline. For a record that
carries the optional delegation.rootDigest (Section 5.2 of that document), it
also carries the certification path or key set of the chain's root key as the
chain verifier held it at decision time. Retaining that material and verifying
its digest against delegation.rootDigest addresses the recording gap for the
root key; Section 4.6 of that document requires a verifier without the digest
or the retained material to report the root as not established. Recording that
material does not by itself establish the root key's binding to the party it
is trusted as, or show how the verifier came to hold it. This document defines
no record. No trust-anchor topology is mandated here; mandating one would address the binding gap only by
forcing a deployment model on every deployment, which is worse than stating the
limit.</t>
      </section>
    </section>
    <section anchor="binding">
      <name>Holder Binding</name>
      <t>Every Delegation Token is sender-constrained by a "cnf" claim <xref target="RFC7800"/>
carrying the JWK thumbprint of the holder's key, proven per request with DPoP
<xref target="RFC9449"/>. This revision specifies DPoP holder binding only; a profile for
mTLS-bound tokens <xref target="RFC8705"/> is left to a later revision. A captured token is therefore unusable without its bound
private key, which mitigates replay of intermediate tokens. The "cnf" claim is
present in every token of a chain, and a Verifier that sees no request
(<xref target="without-request"/>) checks its presence and shape but cannot perform step 6.</t>
    </section>
    <section anchor="revocation">
      <name>Revocation</name>
      <t>Delegation Tokens are <bcp14>RECOMMENDED</bcp14> to be short-lived (seconds to minutes for leaf
and execution tokens), so that expiry is the common revocation path. For earlier
revocation of longer-lived delegations, each token <bcp14>MAY</bcp14> carry a Token Status List
<xref target="I-D.ietf-oauth-status-list"/> reference; revoking a token's status entry, and
by local policy the entries of its descendants, revokes a delegation or a whole
sub-chain while preserving offline verification (the status list is itself
cacheable and offline-checkable). An online revocation endpoint <xref target="RFC7009"/> <bcp14>MAY</bcp14>
additionally be offered.</t>
      <t>Whether a token carries a status reference is decided at issuance. A token
issued without one can be revoked only by expiry. A token issued with one is
subject to step 7 of <xref target="verify"/> as stated there: a cached answer is trusted for
its time to live and no longer, and an answer that cannot be obtained or
refreshed is unknown, which denies. A deployment chooses between the two at
issuance with that consequence in view.</t>
      <t>Short lifetimes mean re-issuance. A parent that is re-issued is a new token
instance (<xref target="chain-linkage"/>); its existing children are not invalidated by the
re-issuance, and a deployment that wants them invalidated revokes the previous
instance. The rate at which this happens is an operational property that
<xref target="latency"/> states.</t>
      <t>Deployments that require synchronous cascading revocation <bcp14>MAY</bcp14> issue and
exercise Delegation Tokens through an online Delegation Server as specified by
<xref target="I-D.sweeney-wimse-credential-delegation"/>. The server can evaluate current
delegation-tree state and refuse a revoked root or descendant immediately. This
online bridge complements, and does not replace, the offline verification
algorithm in <xref target="verify"/>: an Enforcement Point that receives a chain <bcp14>MUST</bcp14> still
verify its signatures, linkage, attenuation, depth, principal, and expiry.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="parent-tokens-remain-valid-after-attenuation">
        <name>Parent tokens remain valid after attenuation</name>
        <t>Attenuation produces a new child token but does not, by itself, invalidate the
parent. A party holding the parent still holds the parent's (broader) authority.
This is mitigated by three mechanisms that <bcp14>MUST</bcp14> be considered together: (a)
tokens are short-lived and holder-bound (<xref target="binding"/>), so a leaked parent is both
time-boxed and non-replayable without its key; (b) the "par_hash" byte-commitment
(<xref target="chain-linkage"/>) prevents splicing a child onto a different parent; and (c)
status-list revocation (<xref target="revocation"/>) allows early invalidation of a parent and
its subtree. Deployments that require immediate parent invalidation on delegation
<bcp14>MUST</bcp14> use short TTLs and status lists accordingly.</t>
      </section>
      <section anchor="chain-splicing">
        <name>Chain splicing</name>
        <t>Without the byte-commitment, an attacker could present a valid child together
with a broader token as its purported parent. Step 2 of <xref target="verify"/> prevents this:
the child's "par_hash" digests the parent's exact Signing Input, so only the
intended parent verifies. The same check is what denies a child presented with
a re-issued parent rather than the instance it was issued under
(<xref target="chain-linkage"/>).</t>
      </section>
      <section anchor="confused-deputy-and-over-broad-delegation">
        <name>Confused deputy and over-broad delegation</name>
        <t>Because each hop's authority is the meet of parent and request (<xref target="subsumption"/>),
a child cannot be induced (e.g. by prompt injection) to exercise authority the
parent lacked. The principal invariance check (step 3 of <xref target="verify"/>) adds that a
child cannot be induced to act under a different grant than its parent: a
token that names another Principal is not a member of the chain.</t>
      </section>
      <section anchor="fanout">
        <name>Unbounded depth, fan-out, and aggregate budgets</name>
        <t>"del_max_depth" (checked in step 3) bounds chain length; deployments <bcp14>SHOULD</bcp14> set
it low (e.g. 5). Fan-out (a parent delegating to many children) is not limited by
the token format and <bcp14>MUST</bcp14> be bounded by the issuing infrastructure if required.</t>
        <t>Quantity constraints compose across siblings, and subsumption is checked per
edge. A "max" constraint bounds one authorized action and nothing else
(<xref target="constraints"/>). A parent holding {"key": "max_spend", "max": 100} can mint
any number of children each carrying max_spend 100; every parent-child edge
satisfies C &lt;= P, and a subtree of N children can spend N x 100. The same holds
at a single enforcement point and across several: against a root ceiling of
100, two valid children can each authorize 60 at two different gateways; both
chains verify, each gateway sees a request within bound, and the combined
spend is 120. Individually permitted delegations compose into an outcome
nobody permitted. The "max_subtree" type names that total, and a chain-only
verifier checks only that a child's "max_subtree" is no wider than its
parent's; verification is side-effect free by design, so a signed ceiling
names a limit while nothing in verifying it reserves against that limit or
sees another gateway's balance. A signed ceiling alone provides none of the
protection an aggregate budget needs.</t>
        <t>An aggregate budget over a consequential resource therefore needs machinery
outside the token, and that machinery has two separable parts. Allocation --
deciding how much of a parent's budget each child may consume -- requires
coordination: an allocator that splits a budget at delegation time only keeps
the total under bound if it is a single writer, since two issuers allocating
offline from the same budget can each allocate the same units. Spending
afterwards does not require coordination once allocations are disjoint: each
enforcement point debits its own durable balance for the allocation it holds
and contacts no shared service per action. Two deployment shapes follow, and a
deployment that enforces aggregate budgets uses one of them:</t>
        <ul spacing="normal">
          <li>
            <t>Shared accounting: one ledger, consulted by every enforcement point, that
checks and debits atomically at authorization time. A ledger that is read at
authorization and debited afterwards, or debited by more than one writer
without coordination, does not close the hole; the check and the debit are
one operation or the budget is not enforced. An online Delegation Server
through which every action is exercised, as in
<xref target="I-D.sweeney-wimse-credential-delegation"/>, is one place such accounting
can be held.</t>
          </li>
          <li>
            <t>Coordinated allocation with local enforcement: a single-writer allocator
reserves disjoint allocations for the children (for example 60 units to the
child acting at gateway A and 40 to the child acting at gateway B, leaving
none at the parent, since allocating to a child reduces what remains
available to the parent), and each enforcement point enforces its own
allocation locally against a durable balance. This path has to protect
against three hazards that a signed ceiling does not: duplicate allocation of
the same units to two children; local rollback, where an enforcement point
loses or reverts a debit it has already honored; and premature reuse of
allocated units before the action that consumed them is settled.</t>
          </li>
        </ul>
        <t>Either way, the division is the one this document is built on: the offline
chain bounds each action and produces the audit trail; the online half holds
the aggregates.</t>
      </section>
      <section anchor="latency">
        <name>Offline verification vs. revocation latency</name>
        <t>Offline verification means an enforcement point may honor a token that has been
revoked but whose status-list update it has not yet fetched. Deployments trade
this window against TTL: shorter TTLs bound the exposure, and step 7 of
<xref target="verify"/> fixes the window at the cached answer's time to live. This is the
standard status-list trade-off and <bcp14>MUST</bcp14> be documented for each deployment.</t>
        <t>The lifetimes <xref target="revocation"/> recommends have a second cost, which is on the
issuing side rather than the verifying side. A token that lives for seconds to
minutes and is still needed must be re-issued, so a platform with many live
agent instances sustains a refresh rate proportional to the number of live
instances, continuously, not only at startup. That rate is a property of the
deployment and a deployment <bcp14>MUST</bcp14> size its authorization server for it, and for
the resynchronisation case in which many instances refresh at once after an
outage of the issuer or of the network between them. Offline verification is
preserved under these lifetimes; offline operation is not, because an agent
whose issuer is unreachable stops receiving tokens when its current ones
expire.</t>
        <t>The refresh rate counts every token in a chain, not only the roots, and grows
with fan-out. Rule 4 of <xref target="subsumption"/> and step 5 of <xref target="verify"/> cap a child's
"exp" at its parent's when the child is issued, so at the recommended
lifetimes every child that keeps working is re-issued at least once per parent
lifetime, whichever instance of the parent it commits to (<xref target="chain-linkage"/>).
A deployment that revokes the previous parent instance at refresh adds a burst
on top of that rate: every child of that instance at once. Both the sustained
rate and the burst belong in the sizing above, and the fan-out bound of
<xref target="fanout"/> is what bounds them.</t>
      </section>
      <section anchor="why-not-macaroons-algorithm-agility">
        <name>Why not macaroons; algorithm agility</name>
        <t>Macaroons <xref target="Macaroons"/> verify with the root secret, precluding public offline
verification at an untrusted edge; this document uses public-key signatures.
Algorithms are fully specified <xref target="RFC9864"/> and agile via the JOSE "alg" registry,
with a migration path to ML-DSA <xref target="RFC9964"/>. The algorithm list of step 1 in
<xref target="verify"/> is the agility mechanism on the verifying side. A deployment that
retires an algorithm, for example a quantum-vulnerable one after a transition
date, removes it from the verifier's list, and chains that still use it are
then denied whatever their remaining lifetime. Because every hop's "alg" sits
in a protected header that the child's "par_hash" covers, a verifier holding
the full chain sees every hop's algorithm, and a parent whose algorithm was
swapped after the fact no longer matches its child's commitment.</t>
      </section>
      <section anchor="root-issuance">
        <name>Root issuance is the policy decision point</name>
        <t>DT_0's Authority is asserted by whoever holds the root key. Every guarantee in
this document begins downstream of that minting: each child is a deterministic
attenuation of DT_0, and verification can establish that no hop exceeded the
root, never that the root was right. Approval policy therefore belongs at root
issuance. A deployment that requires a human decision before an agent may act
with consequential authority places that decision where DT_0 is minted, not at
a later hop, because no later hop can widen what DT_0 granted and no
verification step can tighten it. The Principal named in DT_0's "sub" is the
party that decision is taken on behalf of, and the "client_id" of each hop
records which agent acted under it.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document does not request registration of "del_depth", "del_max_depth",
or "par_hash". <xref target="I-D.niyikiza-oauth-attenuating-agent-tokens"/> requests
registration of the same three names in the JSON Web Token Claims registry,
and each name should have a single entry. That document defines "del_depth"
and "par_hash" as <xref target="token-format"/> does. It defines "del_max_depth"
differently: there the claim is required in every token and a leaf's
"del_depth" may equal the root's "del_max_depth", while step 3 of <xref target="verify"/>
here requires the leaf's "del_depth" to be less than DT_0.del_max_depth.
Consequently, the same depth values can pass the depth checks in that
document and fail step 3 of <xref target="verify"/> here. The claims "sub", "client_id", "aud", and "cnf" are already
registered and are used with their registered meanings as profiled in
<xref target="token-format"/>.</t>
      <t>This document requests a new "Agent Delegation Constraint Types" registry with the
following initial entries, each recorded with its measurement scope:
"max" (per action), "max_lifetime" (per token lifetime), "max_subtree" (per
subtree), "min" (per action), "one_of" (per action), "not_one_of" (per action),
"prefix" (per action), and "rank" (per action). The registration policy is
Specification Required; a registration states the type's value shape, its
measurement scope, and its subsumption rule in the form of <xref target="subsumption"/>.
Unknown types fail closed per <xref target="constraints"/>.</t>
      <t>This document does not request registration of an "authorization_details" type
value. <xref target="RFC9396"/> maintains no registry of type values, and recommends a
collision-resistant namespace under the designer's control; see
<xref target="detail-types"/>.</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of this document at
the time of its posting, as described in <xref target="RFC7942"/>. The description of
implementations here is intended to assist the IETF in its decision processes
in progressing drafts to RFCs. It is not an endorsement of any implementation,
and the listing is not a claim that any implementation conforms to this
revision in full. Please note that this section is to be removed before this
document is published as an RFC.</t>
      <t>Two reference implementations are maintained by the author under the Apache
License 2.0: "attenu-guard", in Python, which mints Delegation Tokens and runs
the verification algorithm of <xref target="verify"/>, and "attenu-guard-ts", in TypeScript,
which runs the verification algorithm and mints nothing. At the time of
posting, both released libraries (attenu-guard 0.22.0 and attenu-guard-ts
0.16.0) implement this revision as an opt-in profile, the one they introduced
for the -02, beside the -01 profile, which remains their default: the claim rules of <xref target="token-format"/> at parse, the
accepted-algorithm list of step 1, principal invariance, the three-form scope
grammar, the two cumulative constraint types with their totals supplied through
a channel separate from the request, the "order" member of "rank", one
constraint per (key, type), the closed detail and constraint objects, and the
audience check of step 8, under a single-signer trust model. Both check the
presence and shape of "cnf" and perform neither step 6 (holder binding) nor
step 7 (status list), which both document as not performed. Their built-in
Ed25519 signer and verifier still use the polymorphic JOSE identifier "EdDSA"
rather than the fully-specified "Ed25519" of <xref target="RFC9864"/> that <xref target="token-format"/>
requires; the vectors use a test-only HS256 signer and do not exercise it. The
vector set of
<xref target="vectors"/> for this revision has thirty-six files; the Python library
generates and scores it on every test run, and the TypeScript library vendors
it byte for byte as test fixtures and scores it in its test suite. The -01
set's twenty files are unchanged in the Python package and in both source
repositories.</t>
      <t>Two implementations independent of the author's code have run the twenty test
vectors of the -01 and published their results, as reported by
their authors: the conformance harness of the Cred delegation protocol, whose
published result of 2026-10-07 reports 20 of 20, with no failures and no
declared gaps, at a pinned commit of the Cred SDK; and a standalone Node.js
verifier that imports no code from either reference implementation, which
reported 20 of 20 with verdicts and declared reasons both matching, under the
boundary its author states: the vectors' HS256 single-signer, public-test-key
profile, and steps 1 to 5 only. Neither result is reproduced here. The Cred
harness has also published a run of 2026-10-20 against the thirty-five
vectors of the -02, all of which this revision's set retains unchanged; as
its author reports it, at a pinned commit of the Cred SDK, it records 20
passes, 5 failures, and 10 declared gaps. No run against all thirty-six
vectors has been reported.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC8037">
          <front>
            <title>CFRG Elliptic Curve Diffie-Hellman (ECDH) and Signatures in JSON Object Signing and Encryption (JOSE)</title>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document defines how to use the Diffie-Hellman algorithms "X25519" and "X448" as well as the signature algorithms "Ed25519" and "Ed448" from the IRTF CFRG elliptic curves work in JSON Object Signing and Encryption (JOSE).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8037"/>
          <seriesInfo name="DOI" value="10.17487/RFC8037"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC9068">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <date month="October" year="2021"/>
            <abstract>
              <t>This specification defines a profile for issuing OAuth 2.0 access tokens in JSON Web Token (JWT) format. Authorization servers and resource servers from different vendors can leverage this profile to issue and consume access tokens in an interoperable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9068"/>
          <seriesInfo name="DOI" value="10.17487/RFC9068"/>
        </reference>
        <reference anchor="RFC9396">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Richer" initials="J." surname="Richer"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9396"/>
          <seriesInfo name="DOI" value="10.17487/RFC9396"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="RFC9728">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </reference>
        <reference anchor="RFC9864">
          <front>
            <title>Fully-Specified Algorithms for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This specification refers to cryptographic algorithm identifiers that fully specify the cryptographic operations to be performed, including any curve, key derivation function (KDF), and hash functions, as being "fully specified". It refers to cryptographic algorithm identifiers that require additional information beyond the algorithm identifier to determine the cryptographic operations to be performed as being "polymorphic". This specification creates fully-specified algorithm identifiers for registered JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) polymorphic algorithm identifiers, enabling applications to use only fully-specified algorithm identifiers. It deprecates those polymorphic algorithm identifiers.</t>
              <t>This specification updates RFCs 7518, 8037, and 9053. It deprecates polymorphic algorithms defined by RFCs 8037 and 9053 and provides fully-specified replacements for them. It adds to the instructions to designated experts in RFCs 7518 and 9053.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9864"/>
          <seriesInfo name="DOI" value="10.17487/RFC9864"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-status-list">
          <front>
            <title>Token Status List (TSL)</title>
            <author fullname="Tobias Looker" initials="T." surname="Looker">
              <organization>MATTR</organization>
            </author>
            <author fullname="Paul Bastian" initials="P." surname="Bastian">
              <organization>Bundesdruckerei</organization>
            </author>
            <author fullname="Christian Bormann" initials="C." surname="Bormann">
              <organization>SPRIND</organization>
            </author>
            <date day="21" month="June" year="2026"/>
            <abstract>
              <t>   This specification defines a status mechanism called Token Status
   List (TSL), data structures and processing rules for representing the
   status of tokens secured by JSON Object Signing and Encryption (JOSE)
   or CBOR Object Signing and Encryption (COSE), such as JWT, SD-JWT,
   CBOR Web Token, and ISO mdoc.  It also defines an extension point and
   a registry for future status mechanisms.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-status-list-21"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2693">
          <front>
            <title>SPKI Certificate Theory</title>
            <author fullname="C. Ellison" initials="C." surname="Ellison"/>
            <author fullname="B. Frantz" initials="B." surname="Frantz"/>
            <author fullname="B. Lampson" initials="B." surname="Lampson"/>
            <author fullname="R. Rivest" initials="R." surname="Rivest"/>
            <author fullname="B. Thomas" initials="B." surname="Thomas"/>
            <author fullname="T. Ylonen" initials="T." surname="Ylonen"/>
            <date month="September" year="1999"/>
            <abstract>
              <t>This document gives the theory behind SPKI certificates and ACLs without going into technical detail about those structures or their uses. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2693"/>
          <seriesInfo name="DOI" value="10.17487/RFC2693"/>
        </reference>
        <reference anchor="RFC7009">
          <front>
            <title>OAuth 2.0 Token Revocation</title>
            <author fullname="T. Lodderstedt" initials="T." role="editor" surname="Lodderstedt"/>
            <author fullname="S. Dronia" initials="S." surname="Dronia"/>
            <author fullname="M. Scurtescu" initials="M." surname="Scurtescu"/>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document proposes an additional endpoint for OAuth authorization servers, which allows clients to notify the authorization server that a previously obtained refresh or access token is no longer needed. This allows the authorization server to clean up security credentials. A revocation request will invalidate the actual token and, if applicable, other tokens based on the same authorization grant.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7009"/>
          <seriesInfo name="DOI" value="10.17487/RFC7009"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC8693">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </reference>
        <reference anchor="RFC8705">
          <front>
            <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8705"/>
          <seriesInfo name="DOI" value="10.17487/RFC8705"/>
        </reference>
        <reference anchor="RFC9964">
          <front>
            <title>ML-DSA for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M. Prorock" initials="M." surname="Prorock"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="May" year="2026"/>
            <abstract>
              <t>This document specifies JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) serializations for the Module-Lattice-Based Digital Signature Standard (ML-DSA), a Post-Quantum Cryptography (PQC) digital signature scheme defined in US NIST FIPS 204.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9964"/>
          <seriesInfo name="DOI" value="10.17487/RFC9964"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-identity-chaining">
          <front>
            <title>OAuth Identity and Authorization Chaining Across Domains</title>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Kelley Burgin" initials="K." surname="Burgin">
              <organization>MITRE</organization>
            </author>
            <author fullname="Michael J. Jenkins" initials="M. J." surname="Jenkins">
              <organization>NSA-CCSS</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="19" month="July" year="2026"/>
            <abstract>
              <t>   This specification describes a mechanism for preserving identity and
   authorization information across trust domains that use the OAuth 2.0
   Framework.  A JSON Web Token (JWT) authorization grant, obtained
   through an intra-domain OAuth 2.0 Token Exchange, facilitates the
   cross-domain acquisition of an access token.  The relevant identity
   and authorization information is chained throughout the flow by being
   conveyed in the respective artifacts exchanged at each step of the
   process.  Chaining across multiple domains is achieved by using the
   same protocol every time a trust domain boundary is crossed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-17"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-aims">
          <front>
            <title>AI Identity Management System</title>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Jeff Lombardo" initials="J." surname="Lombardo">
              <organization>AWS</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Nick Steele" initials="N." surname="Steele">
              <organization>OpenAI</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="15" month="September" year="2026"/>
            <abstract>
              <t>   This document proposes best practices for authentication and
   authorization of AI agent interactions.  It leverages existing
   standards such as the Workload Identity in Multi-System Environments
   (WIMSE) architecture and OAuth 2.0 family of specifications.  Rather
   than defining new protocols, this document describes how existing and
   widely deployed standards can be applied or extended to establish
   agent authentication and authorization.  By doing so, it aims to
   provide a framework within which to use existing standards, identify
   gaps and guide future standardization efforts for agent
   authentication and authorization.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-aims-00"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-identifier">
          <front>
            <title>Workload Identifier</title>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Palo Alto Networks</organization>
            </author>
            <date day="23" month="October" year="2026"/>
            <abstract>
              <t>   This document defines a canonical identifier for workloads, referred
   to as the Workload Identifier.  A Workload Identifier is a URI that
   uniquely identifies a workload within the context of a specific trust
   domain.  This identifier can be embedded in Workload Identity
   Credentials, including X.509 certificates and JWT-based tokens, to
   support authentication, authorization, and policy enforcement across
   diverse systems.  The Workload Identifier format ensures
   interoperability, facilitates secure identity federation, and enables
   consistent identity semantics.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-identifier-04"/>
        </reference>
        <reference anchor="I-D.reece-wimse-cross-org-delegation">
          <front>
            <title>Cross-Organizational Delegation for Workload and Agent Identity: Problem Statement and Requirements</title>
            <author fullname="Morgan Reece" initials="M." surname="Reece">
              <organization>TowerGuardian Consulting</organization>
            </author>
            <date day="31" month="August" year="2026"/>
            <abstract>
              <t>   Autonomous software agents increasingly act on behalf of human
   principals by invoking tools, services, and other agents, frequently
   across organizational boundaries.  Existing workload and token-based
   authorization mechanisms were designed for a single trust domain and
   a small number of delegation hops.  They do not adequately express,
   constrain, or verify authority that is delegated recursively among
   agents and that crosses the boundary between independently
   administered organizations.  This document describes the problem of
   cross-organizational agent delegation, identifies the gaps in current
   mechanisms, and enumerates requirements that any solution within the
   scope of the Workload Identity in Multi-System Environments (WIMSE)
   working group should satisfy.  It does not specify a solution.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-reece-wimse-cross-org-delegation-02"/>
        </reference>
        <reference anchor="I-D.jackson-wimse-evaluation">
          <front>
            <title>Verifier-Side Evaluation Semantics for Delegated Authority Chains</title>
            <author fullname="Wes Jackson" initials="W." surname="Jackson">
         </author>
            <date day="10" month="October" year="2026"/>
            <abstract>
              <t>   Delegation chain specifications describe the shape of conveyed
   authority.  They leave the verifier's half of the exchange
   underdetermined.  Two verifiers can check the same chain, both report
   success, and enforce different policy.  This document states what a
   verifier must do: the explicit inputs evaluation depends on, how
   those inputs behave when their sources are stale or unavailable, and
   four rules that keep evaluation fail-closed.  The rules are drawn
   from the Grant &amp; Autonomy Lifecycle (GAL) and Provenance &amp; Trust
   Context (PTC) specifications and from a public reference
   implementation.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jackson-wimse-evaluation-04"/>
        </reference>
        <reference anchor="I-D.niyikiza-oauth-attenuating-agent-tokens">
          <front>
            <title>Attenuating Authorization Tokens for Agentic Delegation Chains</title>
            <author fullname="Niki Aimable" initials="N." surname="Aimable">
              <organization>Tenuo</organization>
            </author>
            <date day="26" month="October" year="2026"/>
            <abstract>
              <t>   This document defines Attenuating Authorization Tokens (AATs), a
   signed credential format for task-scoped delegation in AI agent
   systems.  An AAT encodes the tools an agent may invoke and the
   argument constraints that apply to those invocations.  A token holder
   authorized to delegate can derive a token offline with equal or
   narrower authority, subject to the parent token's depth and lifetime
   limits.  The resulting delegation chain is verifiable offline by any
   enforcement point that has the root issuer's trust anchor key.

   This specification profiles the OAuth Rich Authorization Requests
   format (RFC 9396) for tool-level capability claims, adds delegation-
   chain claims, and defines a core constraint vocabulary for argument
   restrictions.  The chain verification algorithm authenticates each
   delegation step and enforces monotonic attenuation without network
   contact with the root issuer.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-niyikiza-oauth-attenuating-agent-tokens-02"/>
        </reference>
        <reference anchor="I-D.coetzee-oauth-spt-txn-tokens">
          <front>
            <title>Transaction-Bound Authorization Tokens for Software and AI Agents (SPT-Txn)</title>
            <author fullname="Rudolf Jacobus Coetzee" initials="R. J." surname="Coetzee">
              <organization>Violet Sky Security SEZC</organization>
            </author>
            <date day="19" month="July" year="2026"/>
            <abstract>
              <t>   Current authorization is role-scoped: an actor is granted a role
   whose authority persists across every action it takes.  This fails
   exactly when actors fail -- under compromise, prompt injection, or
   goal hijacking -- because a compromised actor retains full role
   authority.  This document specifies SPT-Txn, a family of transaction-
   bound authorization tokens in which authority exists only inside a
   short-lived token bound to one declared action, on one resource,
   under one jurisdictional policy, verified against how the requesting
   workload was attested.  Delegation across agents and tools is
   expressed as a cryptographically sealed chain that can only narrow
   authority and is verifiable offline.  Each authorization decision
   emits a signed, tamper-evident receipt as a byproduct of enforcement.
   This document specifies normative intent binding, transaction
   receipts and their transparency log, attested issuance via OAuth 2.0
   Token Exchange, per-token status-list revocation, and cryptographic
   algorithm agility including hybrid post-quantum signing.  It also
   hardens attested issuance in response to an adversarial security
   review of the reference implementation: it makes an audience and a
   verifiable expiry mandatory on the presented attestation, requires
   the issuer to bound the delegated depth it grants, and clamps a
   token's lifetime to the attestation it was minted on.  The issuer-
   side requested-versus-permitted scope intersection is retained; the
   enforcement point re-checks the chain independently.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-coetzee-oauth-spt-txn-tokens-03"/>
        </reference>
        <reference anchor="I-D.sweeney-wimse-credential-delegation">
          <front>
            <title>Credential Delegation Protocol for AI Agents in Multi-System Environments</title>
            <author fullname="Kieran Sweeney" initials="K." surname="Sweeney">
         </author>
            <date day="13" month="October" year="2026"/>
            <abstract>
              <t>   Autonomous AI agents increasingly require access to protected
   resources across multiple service providers on behalf of human users.
   Existing OAuth 2.0 extensions address individual aspects of this
   problem (token exchange, proof-of-possession, and structured
   authorization) but no current specification defines how these
   mechanisms compose into a coherent credential delegation framework
   for AI agents.

   This document specifies the Credential Delegation Protocol: a profile
   of OAuth 2.0 Token Exchange (RFC 8693), Demonstrating Proof-of-
   Possession (RFC 9449), Rich Authorization Requests (RFC 9396), and
   Client-Initiated Backchannel Authentication (OpenID Connect CIBA)
   that enables human users to delegate scoped, attenuated credentials
   to AI agents operating across heterogeneous service providers.

   The protocol defines: agent identity lifecycle management using
   ephemeral key pairs; capability-shaped delegation tokens bound to
   specific operations and resources; credential wrapping semantics that
   prevent exposure of underlying OAuth tokens to agents; consent-gated
   delegation flows for asynchronous agents; real-time cascading
   revocation; and tamper-evident audit chains.

   This document does not define new token formats, new OAuth grant
   types, or modifications to existing authorization server behavior.
   It specifies how existing mechanisms are combined to achieve secure,
   auditable credential delegation for AI agents.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sweeney-wimse-credential-delegation-01"/>
        </reference>
        <reference anchor="I-D.hamr-oauth-agent-delegation">
          <front>
            <title>An Attenuated Delegation Profile for Automated Agents</title>
            <author fullname="Amr Hassan" initials="A." surname="Hassan">
              <organization>Independent</organization>
            </author>
            <date day="22" month="October" year="2026"/>
            <abstract>
              <t>   This document builds on HTTP Message Signatures (RFC 9421) for
   requests that automated agents send on behalf of people.  RFC 9421
   shows who signed a request.  It does not show who the agent acts for,
   or what the agent may do.  This document defines an HTTP header
   field, Agent-Delegation, that carries a chain of delegation links.
   Each link can only narrow the scope, floors, and expiry of the link
   before it, and a verifier checks every link.  Floors cover two
   things.  The first is the person or account behind the agent: an
   Attestation Issuer, such as a mobile network operator or an identity-
   document check, answers with a signed yes or no, bound to the
   verifier's nonce and to an expiry, and never returns the value behind
   the answer.  The second is what the agent may do: each call has a
   class, r, w, or x, read as in chmod, with an optional count per
   class, and a signed menu gives the class of each call.  A deployment
   can set this scope for each job when the job starts.  This document
   does not define a credential format, an identity system, or
   revocation.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-hamr-oauth-agent-delegation-03"/>
        </reference>
        <reference anchor="I-D.mcguinness-oauth-actor-profile">
          <front>
            <title>OAuth Actor Profile for Delegation</title>
            <author fullname="Karl McGuinness" initials="K." surname="McGuinness">
              <organization>Independent</organization>
            </author>
            <date day="8" month="October" year="2026"/>
            <abstract>
              <t>   This document defines a common representation of delegated actors in
   OAuth JSON Web Token (JWT) assertion grants, JWT access tokens, and
   Transaction Tokens.  It profiles the act claim defined by OAuth 2.0
   Token Exchange, requires issuer-scoped actor identifiers, and uses
   the sub_profile claim to classify actor entity types.  It specifies
   token processing, delegation-chain propagation, sender-constraint
   handling, and discovery metadata, so that issuers and resource
   servers in different trust domains interpret delegated actors
   consistently.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mcguinness-oauth-actor-profile-01"/>
        </reference>
        <reference anchor="I-D.mw-oauth-actor-chain">
          <front>
            <title>OAuth Actor Chain: Protocol and Interoperability</title>
            <author fullname="A Prasad" initials="A." surname="Prasad">
         </author>
            <author fullname="Ramki Krishnan" initials="R." surname="Krishnan">
         </author>
            <author fullname="Diego Lopez" initials="D." surname="Lopez">
         </author>
            <author fullname="Srinivasa Addepalli" initials="S." surname="Addepalli">
         </author>
            <author fullname="Suresh Krishnan" initials="S." surname="Krishnan">
         </author>
            <date day="13" month="October" year="2026"/>
            <abstract>
              <t>   This document defines the protocol and interoperability requirements
   for OAuth Actor Chain.  Six profiles combine Authorization Server
   declarations or actor-signed evidence with Full, Subset, or Actor-
   Only disclosure.  Verified profiles create one actor proof and one AS
   acceptance at every actor step, with optional current-actor,
   disclosed-actor, or full-path evidence delivered inline or through
   introspection.  This specification defines the wire formats,
   validation, replay and retry behavior, cross-domain preservation,
   resource limits, and IANA registration requests.  A separate
   Informational overview provides additional design discussion.  This
   revision continues the existing OAuth Actor Chain draft series, with
   Internet-Draft lineage beginning in SPICE in February 2026.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mw-oauth-actor-chain-02"/>
        </reference>
        <reference anchor="I-D.gilda-audit-agent-audit-record">
          <front>
            <title>An Audit Record Format for AI Agent Authorization Decisions</title>
            <author fullname="Sankalp Gilda" initials="S." surname="Gilda">
         </author>
            <date day="27" month="October" year="2026"/>
            <abstract>
              <t>   This document defines a record format for AI agent authorization
   decisions and the effects that followed them.  The format is one in-
   toto predicate type, signed inside a DSSE envelope.  A record carries
   the decision and the observed effect with a derived agreement between
   them, whether the decision point could evaluate the request and how
   fresh each input it relied on was, and a canonicalization contract
   under which a party that trusts neither the agent nor its operator
   recomputes the record's consistency from its bytes.  The document
   also defines what a party that retains a record keeps beside it, so
   that the record can later be dated from anchors that party does not
   control.  The format carries the seven minimum audit fields of the
   WIMSE AI Identity Management System framework, and it is offered as a
   data model for the audit records the proposed AUDIT working group
   would specify.  It defines no policy.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-gilda-audit-agent-audit-record-02"/>
        </reference>
        <reference anchor="Macaroons">
          <front>
            <title>Macaroons: Cookies with Contextual Caveats for Decentralized Authorization in the Cloud</title>
            <author>
              <organization/>
            </author>
            <date year="2014"/>
          </front>
          <seriesInfo name="NDSS 2014" value=""/>
        </reference>
        <reference anchor="Biscuit" target="https://doc.biscuitsec.org/reference/specifications.html">
          <front>
            <title>Biscuit Authorization Token Specification, v3</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 1055?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This work builds directly on, and seeks convergence with,
<xref target="I-D.niyikiza-oauth-attenuating-agent-tokens"/>,
<xref target="I-D.coetzee-oauth-spt-txn-tokens"/>,
<xref target="I-D.sweeney-wimse-credential-delegation"/>, <xref target="I-D.ietf-wimse-aims"/>, and the
requirements of <xref target="I-D.reece-wimse-cross-org-delegation"/>. The capability-token
lineage of <xref target="Macaroons"/>, <xref target="Biscuit"/>, and <xref target="RFC2693"/> is gratefully
acknowledged. The "min" constraint type was added after Amr Hassan, author of
<xref target="I-D.hamr-oauth-agent-delegation"/>, observed that -00 had no comparator for a
floor tightened upward; the duration-typed "tenureMin" axis of that document is
the motivating example.</t>
      <t>The following contributions were made in review of the -01 and the -02. Naming a contributor records where their
contribution landed; it does not imply that they endorse this document.</t>
      <t>Wes Jackson: the binding of the chain to an accountable Principal in "sub",
distinct from the holder key, and the naming of the Acting Agent at each hop
in "client_id" (<xref target="token-format"/>, <xref target="principal"/>); the observation that
quantity constraints compose across siblings while subsumption is checked per
edge, that a per-action "max" therefore imposes no aggregate budget, and that per-action, per-lifetime,
and per-subtree limits are enforced by different machinery and belong in
distinct registered types (<xref target="constraints"/>, <xref target="fanout"/>); the atomic
check-and-debit requirement on shared accounting and the single-writer
constraint on delegation-time allocation (<xref target="fanout"/>); root issuance as the
policy decision point (<xref target="root-issuance"/>); the scope-vocabulary limit
(<xref target="vocabulary"/>); the questions that led to the process-every-detail rule
and the per-type interoperability statement (<xref target="detail-types"/>); and the
per-path evaluation rule answered in <xref target="several-chains"/>.</t>
      <t>Iman Schrock: the two-gateway example in which two verified chains overspend a
root ceiling, the distinction between allocation, which needs coordination,
and spending within disjoint allocations, which does not, the two deployment
shapes and the three hazards of the allocation path (<xref target="fanout"/>), the
compatibility point that led the scope grammar to keep structured literals as
their own form, and the request to state the residual ambiguity of that
grammar beside it (<xref target="scopes"/>); and that one "agent_delegation" detail is
enough for the EMILIA CAID companion experiment, as a use-case answer on its
-01-pinned packet (<xref target="detail-types"/>).</t>
      <t>Girish Konda: the sustained refresh rate implied by the recommended lifetimes
and the sizing it requires of the authorization server, and the requirement
that a verifier tell a fresh status answer from a stale one (<xref target="latency"/>,
<xref target="verify"/> step 7).</t>
      <t>Jijie Wei: the question of what "par_hash" commits to when a parent is
re-issued, answered in <xref target="chain-linkage"/>, and the counting of child
re-issuance in the refresh rate (<xref target="latency"/>).</t>
      <t>Kieran Sweeney: the proposal to admit scope strings issued by OAuth providers,
which became the opaque scope form, and the vectors that exercise it
(<xref target="scopes"/>, <xref target="vectors"/>); the rule for a child that adds a detail type its
parent did not carry, recorded in <xref target="detail-types"/> for a later revision; the
observation that a server holding the Principal's deposited grant can learn
at use time that it was withdrawn (<xref target="without-request"/>); and, proposed on the
list on 23 October 2026, the statement of a limit of offline verification with
deployments that cannot bear it pointed at the online half and the warning
against mandating an anchor topology (<xref target="provenance"/>), and the naming of where
standing is established (<xref target="without-request"/>).</t>
      <t>Cliff Singletary: the row of <xref target="_table-conclusions"/> stating that neither the
chain nor the request establishes that the Principal still holds the
authority granted at DT_0 at the instant checked (<xref target="without-request"/>).</t>
      <t>Sankalp Gilda: the correction, on the list on 24 October 2026, that the audit
record draft continues as <xref target="I-D.gilda-audit-agent-audit-record"/>, which
<xref target="provenance"/> now cites at its Section 4.7.</t>
      <t>Venkata Karunakar Uppalapati: the rule that a verifier rejects a chain carrying
an algorithm outside its local policy even where the signature verifies, now
step 1 of <xref target="verify"/> and the agility text in <xref target="security"/>, the
trust-anchor provenance gap recorded in <xref target="provenance"/>, and the distinction
there between the binding gap, which an online verifier with an
authenticated source of binding evidence may relieve, and the recording gap,
which being online does not.</t>
      <t>Niki Aimable Niyikiza: the comparison of the -01 vectors with those of
<xref target="I-D.niyikiza-oauth-attenuating-agent-tokens"/>, which found the difference
in "del_max_depth", and the proposal that the three shared claim names have
one registration (<xref target="iana"/>).</t>
    </section>
    <section anchor="vectors">
      <name>Reference Implementation and Test Vectors</name>
      <t>A permissively licensed reference implementation (the "attenu-guard" library)
and a set of offline-verification test vectors (chains that <bcp14>MUST</bcp14> verify and
adversarial chains that <bcp14>MUST</bcp14> be rejected, each with the outcome name of
<xref target="outcomes"/> it is expected to produce) are published with this draft. They are intended
for interoperability testing across independent implementations.</t>
      <t>The twenty vector files published with the -01 are unchanged by this revision
and remain available under their -01 names: independent implementations have
vendored them, and a byte-stable set is worth more than a corrected one. They
do not conform to this revision: their tokens carry no "cnf" and no
"client_id", and their "aud" is null. The vector set published with this revision is a
second, separately named set. It carries "cnf", "client_id", and a well-formed
"aud" on every token, and adds vectors for: a chain in which a child's "sub"
differs from the root's (principal_altered); a child presented with a
re-issued parent rather than the instance it commits to (par_hash_mismatch);
a wildcard scope over an opaque child scope and an
opaque scope over a wildcard child, both not_narrower, and an opaque scope
covering a byte-identical child, which verifies, contributed by Kieran Sweeney;
a detail carrying two constraints with the same key and type (malformed); a
"rank" whose "order" differs from its parent's (not_narrower); a "max_lifetime"
under a parent "max" of the same key (not_narrower, by the no-cross-type rule);
a token whose "alg" is not on the verifier's list (signature_invalid); and a
token carrying an authorization detail of a type the verifier does not
implement (malformed); and, added in the -03, a child that adds a detail of a
type its parent did not carry (malformed under this revision, see
<xref target="detail-types"/>). The -01 set's ceiling widening, parent splicing, non-monotonic expiry,
and wildcard widening are re-minted in the new set under this revision's
claim layout. Its other cases are not all re-minted, among them a chain
longer than its root's "del_max_depth" allows, the bare, non-final, and
segment-boundary wildcard cases, RFC 8785 number and string forms,
non-finite values, duplicate member names, and the informational "c14n"
label; they remain covered by the unchanged -01 set.</t>
    </section>
    <section anchor="changes-02">
      <name>Changes Since -02</name>
      <ul spacing="normal">
        <li>
          <t><xref target="_table-conclusions"/> gains a row: whether the Principal still holds the
authority granted at DT_0 at the instant checked is established neither by
the chain nor by the request. A paragraph after the table says that step 8 does not establish it, what a
deployment that needs it does, and where a server in the call path can learn
it. It also states the division of labor between the chain and the online
half, and where standing is checked.</t>
        </li>
        <li>
          <t><xref target="provenance"/> gains a paragraph stating that the binding gap is a limit of
verifying from configured state, that the recording gap is not relieved by
online verification, and that no trust-anchor topology is mandated. It cites
Sections 4.6, 4.7 and 5.2 of <xref target="I-D.gilda-audit-agent-audit-record"/> for the
optional delegation.rootDigest and the root material kept beside a record.
Retaining that material and verifying its digest addresses the recording gap
for the root key; recording it does not by itself establish the key's
binding to the party it is trusted as.</t>
        </li>
        <li>
          <t><xref target="iana"/> no longer requests registration of "del_depth", "del_max_depth",
and "par_hash"; <xref target="I-D.niyikiza-oauth-attenuating-agent-tokens"/> requests
the same names, and the section states where the two definitions of
"del_max_depth" differ.</t>
        </li>
        <li>
          <t>Step 5 of <xref target="verify"/> requires now &lt; exp, as the JWT "exp" claim
<xref target="RFC7519"/> does; the -02 text allowed now = exp.</t>
        </li>
        <li>
          <t><xref target="binding"/> no longer offers mTLS-bound tokens as an alternative to DPoP;
an mTLS profile is left to a later revision.</t>
        </li>
        <li>
          <t><xref target="vectors"/> no longer says that the -01 set's coverage is re-minted in the
new set; the cases that are not remain in the -01 set.</t>
        </li>
        <li>
          <t><xref target="detail-types"/> records, for a later revision that admits several detail
types, the rule that a child adding a type its parent did not carry is
treated as widening unless that type's definition states otherwise. Under
this revision the token is malformed, and a vector pins that outcome.</t>
        </li>
        <li>
          <t>A new subsection of the Introduction (<xref target="actor-drafts"/>) states the
relationship to draft-mcguinness-oauth-actor-profile and
draft-mw-oauth-actor-chain.</t>
        </li>
        <li>
          <t>The vector set of <xref target="vectors"/> has thirty-six files.</t>
        </li>
      </ul>
    </section>
    <section anchor="changes">
      <name>Changes Since -01</name>
      <ul spacing="normal">
        <li>
          <t>"sub" is defined as the Principal, identical at every hop; "client_id" is
added to the required claims as the Acting Agent at each hop; and step 3 of
the verification algorithm denies a chain in which any token's "sub" differs
from the root's. A new subsection explains the split.</t>
        </li>
        <li>
          <t>"aud" is required to be a string or non-empty array of strings; null is
malformed. The audience check of RFC 9068 Section 4 is applied to the leaf
token in step 8.</t>
        </li>
        <li>
          <t>Step 1 requires a verifier-held list of accepted algorithms, denies any
token whose "alg" is not on it even where the signature verifies, and takes
the algorithm from the verifier's configuration for the key rather than from
the header. The algorithm agility text says how an algorithm is retired.</t>
        </li>
        <li>
          <t>The scope grammar gains a third form, "opaque-scope", the RFC 6749 scope
token without the asterisk, so that provider-issued scope strings can be
carried; classification is by bytes alone in a stated order; an opaque scope
covers only a byte-identical child and no wildcard covers it; the residual
ambiguity for dotted provider strings is stated beside the grammar.</t>
        </li>
        <li>
          <t>Two constraint types are added, "max_lifetime" and "max_subtree", so that
per-action, per-lifetime, and per-subtree bounds are distinct registered
types; "max" is defined as per action only; no inference is made across
types; a chain-only verifier checks only that a child's cumulative bounds
are no wider than its parent's.</t>
        </li>
        <li>
          <t>The "rank" type carries its ordering on the wire in an "order" member, and
a child's ordering must be identical to its parent's.</t>
        </li>
        <li>
          <t>A detail may not carry two constraints with the same key and type; a
verifier rejects a token that does.</t>
        </li>
        <li>
          <t>Three closure rules are stated as MUSTs: a token carries exactly one
"agent_delegation" detail; that detail carries no members other than
"type", "scopes", and "constraints"; and a constraint object carries no
members other than "key", its type member, and the members its type
defines. A token that breaks any of them is malformed.</t>
        </li>
        <li>
          <t>The covering relation is bound to the authorization detail type; a verifier
must evaluate every detail or reject the token, and an unimplemented type is
a rejection; under this revision a token carries exactly one detail, of type
"agent_delegation", and chains carrying several types are left to a later
revision; a resource server is pointed to RFC 9728 to declare the types it
supports.</t>
        </li>
        <li>
          <t>The IANA request for an "authorization_details" type value is withdrawn,
since RFC 9396 keeps no such registry; whether the type value becomes a URI
is recorded as open.</t>
        </li>
        <li>
          <t>The scope-vocabulary limit is recorded as an open issue in its own
subsection, with the interface a companion document is expected to meet and
the rule under which such a document is cited.</t>
        </li>
        <li>
          <t>The chain linkage section states that "par_hash" commits to a parent token
instance, and what that means for re-issued parents and their children.</t>
        </li>
        <li>
          <t>Step 8 denies an action under a cumulative constraint when no component
holds the running total it is measured over.</t>
        </li>
        <li>
          <t>An integer whose magnitude exceeds 2^53-1 is malformed.</t>
        </li>
        <li>
          <t>The revision states that it defines no transition mode for chains shaped by
the -01.</t>
        </li>
        <li>
          <t>Step 7 states that a cached status answer is trusted for its time to live,
that an unobtainable or unrefreshable status is unknown and denies, and that
a token issued without a status reference is a choice made at issuance.</t>
        </li>
        <li>
          <t>A table states what a verifier that sees no request may and may not
conclude, and a table names the verification outcomes the test vectors use.</t>
        </li>
        <li>
          <t>Several chains reaching one agent are addressed: each chain is verified
alone and never combined with another.</t>
        </li>
        <li>
          <t>Trust-anchor provenance is recorded as an open issue.</t>
        </li>
        <li>
          <t>The fan-out security consideration gains the sibling and two-gateway
examples, the allocation/spending distinction, the two deployment shapes for
aggregate budgets, and the three hazards of the allocation path.</t>
        </li>
        <li>
          <t>The revocation-latency security consideration gains the sustained refresh
rate, the resynchronisation case, the sizing requirement, the counting of
child re-issuance, and the revoke-at-refresh burst.</t>
        </li>
        <li>
          <t>Root issuance is stated as the policy decision point in a new security
consideration.</t>
        </li>
        <li>
          <t>draft-klrc-aiagent-auth, now replaced, is re-pointed to draft-ietf-wimse-aims
in the introduction and the acknowledgments; draft-jackson-wimse-evaluation,
draft-ietf-wimse-identifier, RFC 6749, RFC 7942, and RFC 9728 are added as
references.</t>
        </li>
        <li>
          <t>An Implementation Status section is added.</t>
        </li>
        <li>
          <t>The test-vector appendix records that the -01 set stays byte-stable and does
not conform to this revision, and describes the second set that does.</t>
        </li>
        <li>
          <t>Step 8 and the constraint vocabulary state that a running total reaches a
cumulative constraint through a channel separate from the request, that
cumulative and per-action constraints are evaluated against different
inputs, and that a per-action "max" on a running count bounds nothing.</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA72963IbSZIm+j+eIpayNZF1ABRJ3cnu3mVJqmlVV6k0oqrL
xsZm1UkgSWYJyMRkJkihVZpnOc9ynuy4f+4el0RSrV6z3TGbLgpIRMbFw6+f
u0+nU9dX/bI88Xt/LdvqsioulqU/6/uy3hR9ufAvymV5VfRVU/vLpvVnr/zZ
VVn3/vl1UdXdnisuLtryhn4uHyeP44k9t2jmdbGiFyza4rKfFl3TTm+rVVdO
C/7FdBF+MZ3zL6aHD9ycXn3VtNsT3/ULV63bE9+3m64/Pjx8dnjsirYsTvx5
Od+0Vb91t0374aptNusT/+urn85fug/llj5bnPh/xysmPr5j4gtdm/xj0183
bfV3/ee8WBcX1ZIG/Q/X9UW9eF8sm5rmvi07t65owL6ZTzwtoW/Ly47+2q74
j/9wMtCJ835K/+897c2JfzvzZ/QsPpA9eFtcFuUyftq0V0Wtrz/RbccX5aqo
lie+xfMz3rT/ecUfzebNCg/Q0k/8dd+vu5Nvv5U1zarmW1c37YqGuyl5Lm+/
f358dPRM/3x0/ODhiff3/Nl3r7+Xjx4/efgMH/18Rgvwx7NDv9/Nm3U57ZsP
ZY0nD+TRJ4+OHuHRH349D58800/e6SdPDw/xyZvmjZ/Xl/Lp08MHx/j05eLF
+Vn47Ak+e/7923/xdJA3ZUeb5n/4mc5Pnjh68lAn/vTJU331c331s8PHT+3V
vpjPy67TGa/b5rJalvrYg2eP8djban7tz9LD9m/L/9yUXd/pkw91I17Q1PWj
J8fyjjdt05dzvgxvy67ZtPPS/1T2xaLoC33y6WPZ2O83y+V22q3LOd0ker5Y
EhVX/fWK3/Jq+mJWlf3ltGFimRJ99Ztuuqy6/sRV9eXw3B4/e4Axz1+cv/r2
/M1fXukW0xXA5++w3LflTTPHgvTrZw9lr1+t1styRdQvqz3H23xH6wjPPrVX
yFAvP9L9q69K2/ND2fPVux/PpxfNpl547LBt2DNd808/TulUwRz48L59Lic4
WG21oKnQvZI7XtVXJ+kzyg/of0c+lp/Sfrb2ZVuW81K/nbcNnT3do4SR2HO/
FfMPHfEVebK8KZab7Pu62lYfiB50joEz1FfKm2TB9vi8Kfu/l6Wd35q+/1gP
nuluy7Iut2FyJSZfLEdmd12sWnvzgBPaI6v51aaqa6ZufXDeE/tUGg9P3Wbf
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

-->

</rfc>
