<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.31 (Ruby 3.3.12) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-gamb-uma4agents-lineage-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Agent Lineage">Agent Lineage for User-Managed Access (UMA) 2.0</title>

    <author initials="N." surname="Gamb" fullname="Nick Gamb">
      <organization>MindGarden LLC</organization>
      <address>
        <email>nickgamb@gmail.com</email>
      </address>
    </author>
    <author initials="E." surname="Maler" fullname="Eve Maler">
      <organization>Venn Factory</organization>
      <address>
      </address>
    </author>

    <date year="2026" month="September" day="11"/>

    <area>Security</area>
    
    <keyword>UMA</keyword> <keyword>authorization</keyword> <keyword>agents</keyword> <keyword>sub-agents</keyword> <keyword>orchestration</keyword> <keyword>revocation</keyword>

    <abstract>


<?line 73?>

<t>This document lets an autonomous agent that holds a standing relationship with a
resource owner introduce another agent to her. The introduced agent skips the
owner's first-contact question and then negotiates its own terms, under its own
key, for its own grant. Nothing is handed down.</t>

<t>The task graph an orchestrating agent builds may nest as deeply as it likes.
The authority graph stays one level deep: every agent is separately visible to
the owner, separately bounded by her policy, and separately revocable, and
revoking the agent that introduced others revokes them with it.</t>



    </abstract>



  </front>

  <middle>


<?line 85?>

<section anchor="introduction"><name>Introduction</name>

<t>An orchestrating agent spawns workers. Under <xref target="U4ACore"/> each worker is
individuated by its own key, so each is a stranger to the owner and each costs
her a question. The usual answer is to hand the workers the parent's token, at
which point they are indistinguishable from the parent in the owner's records,
cannot be revoked individually, and hold authority the owner never agreed to
give them. Attenuated-token designs such as
<xref target="I-D.niyikiza-oauth-attenuating-agent-tokens"/> narrow what is handed down
without changing that it is handed down.</t>

<t>This document takes the other position. The parent may say <em>this is one of
mine</em>, and the owner's authorization server may act on that by not asking her
whether she wants a relationship with the newcomer. Everything after that is
the newcomer's own: it signs the owner's terms with its own key, is bound by
her policy as itself, and receives a grant confirmed to its own key. An
introduction admits an agent; it does not approve anything for it.</t>

<section anchor="relationship-to-the-set"><name>Relationship to the Set</name>

<t>This document is an <bcp14>OPTIONAL</bcp14> extension of <xref target="U4ACore"/> and depends on
<xref target="U4ATerms"/> and <xref target="U4APolicy"/>. Its identifying URI is
<spanx style="verb">https://u4a.ai/spec/lineage/1.0</spanx>.</t>

</section>
<section anchor="notational-conventions"><name>Notational Conventions</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?>

<t><spanx style="verb">jkt(k)</spanx> is as defined in <xref target="U4ACore"/>, over the JWK Thumbprint of <xref target="RFC7638"/>.</t>

</section>
</section>
<section anchor="asserting"><name>Asserting a Lineage</name>

<t>A requesting agent asserts that another agent introduced it in exactly one of
two ways.</t>

<section anchor="introduction-document"><name>By Introduction Document</name>

<t>The introducing agent signs a compact JWS <xref target="RFC7515"/> whose protected header
carries:</t>

<dl>
  <dt>typ:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. <spanx style="verb">u4a-introduction-v1+jws</spanx>.</t>
  </dd>
  <dt>jwk:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. The introducing agent's public key <xref target="RFC7517"/>.</t>
  </dd>
  <dt>agent_token:</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>. The introducing agent's identity credential, where it is an
identified agent under <xref target="U4ACore"/> Section 5.1. Its confirmed key <bcp14>MUST</bcp14> equal
<spanx style="verb">jwk</spanx>.</t>
  </dd>
</dl>

<t>and whose claims are:</t>

<dl>
  <dt>sub:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. <spanx style="verb">jkt(k)</spanx> for the introduced agent's key <spanx style="verb">k</spanx>.</t>
  </dd>
  <dt>aud:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. The issuer identifier of the owner's authorization server.</t>
  </dd>
  <dt>exp:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. Expiry. <bcp14>SHOULD</bcp14> be short; the reference implementation uses five
minutes.</t>
  </dd>
  <dt>iat:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>.</t>
  </dd>
  <dt>jti:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>.</t>
  </dd>
</dl>

<t>The introduction deliberately carries no <spanx style="verb">iss</spanx>. The introducing agent's
identity travels only in the header key, which the signature verifies against
and from which the authorization server re-derives a connection handle. An
<spanx style="verb">iss</spanx> naming the introducer would have to be either ignored or believed, and
believing it would let any agent nominate any other agent's handle as its
sponsor.</t>

<t>The introduced agent carries the introduction in its agreement (<xref target="U4ATerms"/>)
as a claim named <spanx style="verb">introduction</spanx>. An authorization server <bcp14>MUST</bcp14> bound the size of
an introduction it will parse; the reference implementation refuses one over
4096 octets.</t>

</section>
<section anchor="act-claim"><name>By Issuer Attestation</name>

<t>Where the introduced agent is an identified agent, its issuer <bcp14>MAY</bcp14> assert the
lineage instead, by placing the introducing agent's subject identifier in an
<spanx style="verb">act</spanx> claim <xref target="RFC8693"/> of the introduced agent's credential. No second document
is needed; the authorization server reads the claim it already verified.</t>

<t><xref target="I-D.hardt-aauth-protocol"/> defines this use of <spanx style="verb">act</spanx> in its agent credential.
Nothing new is defined here; the claim is read.</t>

</section>
</section>
<section anchor="admission"><name>Admission</name>

<section anchor="verify"><name>What the Document Settles</name>

<t>On receiving an assertion of lineage, the authorization server <bcp14>MUST</bcp14> first
establish what the document settles on its own: that it verifies against the
key in its header, that its <spanx style="verb">aud</spanx> names this authorization server, that it has
not expired, and that its <spanx style="verb">sub</spanx> equals the thumbprint of the key that signed the
agreement it arrived in. An assertion that fails any of these is a malformed
request and <bcp14>MUST</bcp14> be refused as one.</t>

</section>
<section anchor="admit"><name>What the Owner's Record Settles</name>

<t>An assertion that holds up as a document is then decided against the owner's
record. The authorization server <bcp14>MUST</bcp14> refuse to act on it unless every one of
the following holds, and <bcp14>MUST</bcp14> check them in this order so that a refusal names
the strongest reason:</t>

<t><list style="numbers" type="1">
  <t>The introducing agent holds an active standing connection with this owner,
looked up by the handle derived from the header key (or, under <xref target="act-claim"/>,
from the issuer and the <spanx style="verb">act</spanx> subject).</t>
  <t>The owner has personally approved the introducing agent at at least one
policy unit. An agent she has never said yes to cannot vouch for another.</t>
  <t>The introducing agent was not itself introduced. Depth is capped at one by
this check and by nothing else — an introduced agent becomes eligible under
check 2 the moment the owner approves it at anything, so without this check
the cap would be an accident of timing.</t>
  <t>The introduced agent has no prior connection with this owner that is not
active. A revoked agent goes back through first contact; an introduction
<bcp14>MUST NOT</bcp14> restore what the owner withdrew.</t>
  <t>Under <xref target="introduction-document"/>, one operator has published both keys: the
introduced agent is at accountability level 2 (<xref target="U4APolicy"/> Section 5.1),
and the <em>same</em> directory at the <em>same</em> origin also holds the introducing
key. Under <xref target="act-claim"/>, the issuer's attestation satisfies this check.</t>
  <t>The introducing agent has fewer live introduced agents than a deployment
ceiling.</t>
</list></t>

<t>Check 5 exists because an agent cannot be allowed to point at a second
directory it runs itself. The directory that attests the child is the one that
must also attest the parent.</t>

</section>
<section anchor="fallback"><name>Failure Falls Back</name>

<t>An assertion that holds up as a document but fails <xref target="admit"/> is not an error.
The authorization server <bcp14>MUST</bcp14> record why the introduction was not honoured, and
<bcp14>MUST</bcp14> then treat the request exactly as one that offered no lineage: the agent is
a stranger, and first contact is put to the owner. The introduction was a
shortcut that did not apply, not a credential that was rejected.</t>

</section>
<section anchor="introduced-connection"><name>The Introduced Connection</name>

<t>Where the assertion is honoured, the authorization server <bcp14>MUST</bcp14> record a
standing connection for the introduced agent without asking the owner, carrying
the introducing agent's handle, and <bcp14>MUST NOT</bcp14> record any approval for it. It <bcp14>MUST</bcp14>
carry forward any prior revocation count for the same handle, as <xref target="U4ACore"/>
Section 9.</t>

<t>An introduced connection <bcp14>MUST</bcp14> be created only after every refusal the
authorization server would apply to a first contact — a blocked operator, a
policy refusal, the attention bound — has been passed. Persisting it earlier
leaves a live connection for an operator the owner has shut out.</t>

<t>The owner's record <bcp14>MUST</bcp14> show the connection as introduced, and by whom.</t>

</section>
</section>
<section anchor="policy"><name>Policy Over a Lineage</name>

<section anchor="pooling"><name>Approval Belongs to the Lineage</name>

<t>Approval the owner gives at a policy unit belongs to the lineage, not to the
connection that earned it, and flows in both directions. An authorization
server <bcp14>MUST</bcp14> make available to policy the set of units at which the owner has
personally approved any live member of a lineage — the introducing agent or any
agent it introduced — and <bcp14>MUST</bcp14> exclude revoked members from that set.</t>

<t>The owner approved a unit for this fleet; it does not matter which member
earned it. A worker that was approved to trade means the orchestrator that
spawned it need not be asked again to trade.</t>

</section>
<section anchor="postures"><name>Three Postures</name>

<t>An owner <bcp14>MUST</bcp14> be able to express each of the following per policy unit, using
the conditions of <xref target="U4APolicy"/>:</t>

<dl>
  <dt>Per agent:</dt>
  <dd>
    <t>Every agent is asked once at this unit, introduced or not. This is the
default and what happens when she writes nothing.</t>
  </dd>
  <dt>Lineage-wide:</dt>
  <dd>
    <t>Whoever in the lineage earns this unit, the rest inherit it. Expressed by
narrowing the per-agent ask to fire only when nothing in the lineage has been
approved here.</t>
  </dd>
  <dt>Always ask for introduced agents:</dt>
  <dd>
    <t>An introduced agent is asked at this unit every time, whatever its lineage
has earned.</t>
  </dd>
</dl>

<t>All three are tightening conditions on the observed side of the asymmetry in
<xref target="U4APolicy"/> Section 3. Lineage-wide is not "relax when the lineage is
approved" — it is "narrow the existing ask so that it fires only when the
lineage is new". Which agents join a lineage is chosen by the operator running
them, so the requesting side can only ever cause an ask to remain; it cannot
cause one to go away.</t>

</section>
<section anchor="ceiling"><name>The Ceiling</name>

<t>A unit the lineage was never approved for pends for an introduced agent
exactly as it would have for the introducing agent. This is not configurable.
Introduction skips the relationship question; it does not skip the owner.</t>

</section>
</section>
<section anchor="attention"><name>Attention</name>

<t>An introduced agent <bcp14>MUST</bcp14> be counted against the attention bound of <xref target="U4APolicy"/>
Section 6 as a first contact is, and the pending requests it generates at
policy units <bcp14>MUST</bcp14> be counted with it. An agent skips the relationship question,
not the queue discipline; otherwise one approved agent could flood the owner's
queue with introduced ones, each individually well-formed and none counted.</t>

</section>
<section anchor="revocation"><name>Revocation</name>

<t>Revoking a connection <bcp14>MUST</bcp14> revoke every connection it introduced, in the same
operation. The authorization server <bcp14>MUST</bcp14> revoke the introducing connection
first, so that a negotiation arriving mid-cascade cannot find it active and be
admitted behind it, and <bcp14>MUST</bcp14> report the number of connections and grants the
cascade ended.</t>

<t>Because depth is one (<xref target="admit"/> check 3), the cascade need not recurse.</t>

<t>Every introduced agent's live grants stop working on its next call, through the
introspection of <xref target="U4ACore"/> Section 8.2, with no action per link. Revoking an
introduced agent that held the lineage's only approval at a unit returns the
lineage to pending at that unit, which is correct: the approval was hers and it
was for an agent she has now removed.</t>

<t>An agent revoked by cascade <bcp14>MUST NOT</bcp14> be re-admitted by an introduction from the
agent whose revocation ended it (<xref target="admit"/> check 4), and <bcp14>MUST NOT</bcp14> be re-admitted
by an introduction from any other agent either.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<section anchor="nothing-is-handed-down"><name>Nothing Is Handed Down</name>

<t>The introduced agent's grant is confirmed to its own key, over terms it signed
itself, under a policy evaluated against it. The introduction confers no
permission, no scope, and no approval; it removes one question. An
implementation that lets an introduction carry anything else has reinvented
token passing with an extra document.</t>

</section>
<section anchor="the-introducer-is-looked-up-never-named"><name>The Introducer Is Looked Up, Never Named</name>

<t>See <xref target="introduction-document"/>. The only statement of who introduced an agent is
the key that signed the introduction, which the signature proves possession of
and the owner's record resolves. A design that let the introduction name its
signer would let any agent claim any sponsor.</t>

</section>
<section anchor="depth-is-a-check-not-an-emergent-property"><name>Depth Is a Check, Not an Emergent Property</name>

<t>See <xref target="admit"/> check 3. The reference implementation was first written on the
assumption that an introduced agent could never introduce, because it begins
with no approvals. That is false the moment the owner approves it at anything.
The cap has to be explicit.</t>

</section>
<section anchor="same-operator-means-same-directory"><name>Same Operator Means Same Directory</name>

<t>See <xref target="admit"/> check 5. Level-2 accountability proves an operator published a
key. Two keys in two directories at two origins prove two operators, or one
operator and an impostor. The check is that one directory holds both.</t>

</section>
<section anchor="fan-out-is-a-ceiling-not-a-rule"><name>Fan-Out Is a Ceiling, Not a Rule</name>

<t>Check 6 bounds how many agents one connection may put forward, so that the
attention bound of <xref target="attention"/> is not the only thing standing between an
approved agent and an unbounded fleet. It is a deployment ceiling and not an
owner policy: the reference implementation defaults it to three.</t>

</section>
</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<t>The owner's record shows every introduced agent, who introduced it, and what it
did, as <xref target="U4APolicy"/> Section 8 requires of any agent. An orchestrator's
structure is therefore visible to the owner to the depth of one, which is the
depth at which she is asked to trust it.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="media-type-registration"><name>Media Type Registration</name>

<t>IANA is asked to register the following in the "Media Types" registry.</t>

<dl>
  <dt>Type name:</dt>
  <dd>
    <t>application</t>
  </dd>
  <dt>Subtype name:</dt>
  <dd>
    <t>u4a-introduction-v1+jws</t>
  </dd>
  <dt>Required parameters:</dt>
  <dd>
    <t>N/A</t>
  </dd>
  <dt>Optional parameters:</dt>
  <dd>
    <t>N/A</t>
  </dd>
  <dt>Encoding considerations:</dt>
  <dd>
    <t>binary; a JWS in compact serialization</t>
  </dd>
  <dt>Security considerations:</dt>
  <dd>
    <t>See <xref target="security-considerations"/> of this document</t>
  </dd>
  <dt>Interoperability considerations:</dt>
  <dd>
    <t>N/A</t>
  </dd>
  <dt>Published specification:</dt>
  <dd>
    <t><xref target="introduction-document"/> of this document</t>
  </dd>
  <dt>Applications that use this media type:</dt>
  <dd>
    <t>Applications implementing UMA 2.0 with this extension</t>
  </dd>
  <dt>Change controller:</dt>
  <dd>
    <t>IETF</t>
  </dd>
</dl>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<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="RFC7517">
  <front>
    <title>JSON Web Key (JWK)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7517"/>
  <seriesInfo name="DOI" value="10.17487/RFC7517"/>
</reference>
<reference anchor="RFC7638">
  <front>
    <title>JSON Web Key (JWK) Thumbprint</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="September" year="2015"/>
    <abstract>
      <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7638"/>
  <seriesInfo name="DOI" value="10.17487/RFC7638"/>
</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="U4ACore" target="https://u4a.ai/spec/draft-gamb-uma4agents-core-00.html">
  <front>
    <title>User-Managed Access (UMA) 2.0 Profile for Autonomous Agents</title>
    <author initials="N." surname="Gamb" fullname="Nick Gamb">
      <organization></organization>
    </author>
    <author initials="E." surname="Maler" fullname="Eve Maler">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-gamb-uma4agents-core-00"/>
</reference>
<reference anchor="U4ATerms" target="https://u4a.ai/spec/draft-gamb-uma4agents-terms-00.html">
  <front>
    <title>Owner-Proffered Terms for User-Managed Access (UMA) 2.0</title>
    <author initials="N." surname="Gamb" fullname="Nick Gamb">
      <organization></organization>
    </author>
    <author initials="E." surname="Maler" fullname="Eve Maler">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-gamb-uma4agents-terms-00"/>
</reference>
<reference anchor="U4APolicy" target="https://u4a.ai/spec/draft-gamb-uma4agents-policy-00.html">
  <front>
    <title>Owner Policy, Assurance and Attention for User-Managed Access (UMA) 2.0</title>
    <author initials="N." surname="Gamb" fullname="Nick Gamb">
      <organization></organization>
    </author>
    <author initials="E." surname="Maler" fullname="Eve Maler">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-gamb-uma4agents-policy-00"/>
</reference>


<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="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>



    </references>

    <references title='Informative References' anchor="sec-informative-references">




<reference anchor="I-D.hardt-aauth-protocol">
   <front>
      <title>AAuth Protocol</title>
      <author fullname="Dick Hardt" initials="D." surname="Hardt">
         <organization>Hellō</organization>
      </author>
      <date day="28" month="April" year="2026"/>
      <abstract>
	 <t>   This document defines the AAuth authorization protocol for agent-to-
   resource authorization and identity claim retrieval.  The protocol
   supports four resource access modes — identity-based, resource-
   managed (two-party), PS-managed (three-party), and federated (four-
   party) — with agent governance as an orthogonal layer.  It builds on
   the HTTP Signature Keys specification
   ([I-D.hardt-httpbis-signature-key]) for HTTP Message Signatures and
   key discovery.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-hardt-aauth-protocol-02"/>
   
</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="15" month="June" 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&#x27;s depth and lifetime
   limits.  The resulting delegation chain is verifiable offline by any
   enforcement point that has the root issuer&#x27;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-01"/>
   
</reference>

<reference anchor="U4ALAB" target="https://github.com/nickgamb/uma4agents">
  <front>
    <title>UMA for Agents: a reference implementation</title>
    <author initials="N." surname="Gamb" fullname="Nick Gamb">
      <organization></organization>
    </author>
    <author initials="E." surname="Maler" fullname="Eve Maler">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</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>



    </references>

</references>


<?line 413?>

<section anchor="implementation-status"><name>Implementation Status</name>

<t>This section records the status of known implementations in the sense of
<xref target="RFC7942"/>, and is to be removed before publication as an RFC.</t>

<t>The reference implementation <xref target="U4ALAB"/> implements this document in full,
including both assertion forms of <xref target="asserting"/>. The admission decision is
tested by minting introductions with the client library and verifying them with
the server module, so the two sides are checked against each other; every
refusal in <xref target="admit"/> is exercised, as are the three postures of <xref target="postures"/>,
the ceiling of <xref target="ceiling"/>, approval flowing from an introduced agent to the
agent that introduced it, and the cascade of <xref target="revocation"/> against live grants.</t>

</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t><xref target="RFC8693"/> supplied the <spanx style="verb">act</spanx> claim and <xref target="I-D.hardt-aauth-protocol"/> the use of
it in an agent credential that <xref target="act-claim"/> reads.</t>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

