<?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.31 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mishra-oauth-agent-grants-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="DAAP">Delegated Agent Authorization Protocol (DAAP)</title>
    <seriesInfo name="Internet-Draft" value="draft-mishra-oauth-agent-grants-00"/>
    <author fullname="Sanjeev Kumar">
      <organization>Grantex</organization>
      <address>
        <email>mishra.sanjeev@gmail.com</email>
        <uri>https://grantex.dev</uri>
      </address>
    </author>
    <date year="2026" month="February" day="27"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>AI agents</keyword>
    <keyword>authorization</keyword>
    <keyword>OAuth</keyword>
    <keyword>delegation</keyword>
    <keyword>JWT</keyword>
    <keyword>grant token</keyword>
    <abstract>
      <?line 60?>

<t>Artificial intelligence (AI) agents increasingly take autonomous actions — submitting forms, initiating payments, and sending communications — on behalf of human users across third-party services. This document defines the Delegated Agent Authorization Protocol (DAAP), an open, model-neutral, framework-agnostic protocol that specifies: cryptographic agent identity using Decentralized Identifiers (DIDs); a human-consent-based grant authorization flow modelled on OAuth 2.0; a signed JSON Web Token (JWT) grant token format with agent-specific claims; a revocation model with online verification; a hash-chained append-only audit trail; a policy engine for automated authorization decisions; and a multi-agent delegation model with cascade revocation. DAAP fills a gap unaddressed by existing OAuth 2.0 extensions: verifying that a specific human authorized a specific AI agent to perform a specific action, revoking that authorization in real time, and producing a tamper-evident record of what the agent did.</t>
    </abstract>
  </front>
  <middle>
    <?line 64?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Deployed AI agents operate across arbitrary third-party services using credentials and permissions that belong to the human users they serve. Today, no interoperable standard exists for:</t>
      <ol spacing="normal" type="1"><li>
          <t>Verifying that an agent is who it claims to be</t>
        </li>
        <li>
          <t>Confirming that a specific human authorized a specific agent to perform a specific action</t>
        </li>
        <li>
          <t>Revoking that authorization in real time across all active tokens</t>
        </li>
        <li>
          <t>Producing a tamper-evident record of agent activity</t>
        </li>
      </ol>
      <t>OAuth 2.0 <xref target="RFC6749"/> and its extensions address authorization for applications acting on behalf of users, but were not designed for the AI agent use case, which introduces distinct requirements:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Agent identity</strong>: Unlike OAuth clients, AI agents are runtime entities that may be spawned dynamically and must carry a persistent cryptographic identity independent of the authorization server.</t>
        </li>
        <li>
          <t><strong>Multi-agent delegation</strong>: An agent may spawn sub-agents, each of which requires a grant scoped to a subset of the parent's permissions, with the entire delegation tree revocable by the original principal.</t>
        </li>
        <li>
          <t><strong>Tamper-evident audit trail</strong>: Regulated environments require a cryptographically linked record of agent activity that is verifiable without trust in the audit log operator.</t>
        </li>
        <li>
          <t><strong>Policy-driven automation</strong>: High-volume agent deployments require automated authorization decisions (auto-approve, auto-deny) without per-request human interaction, while preserving the human principal's ability to revoke at any time.</t>
        </li>
      </ul>
      <t>DAAP addresses these requirements as a layered extension to OAuth 2.0 concepts, reusing RFC-standard JWT and JWK primitives wherever possible.</t>
      <section anchor="requirements-language">
        <name>Requirements Language</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?>

</section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The following terms are used throughout this document:</t>
        <dl newline="true">
          <dt>Agent:</dt>
          <dd>
            <t>An AI-powered software process that takes autonomous actions on behalf of a Principal. An Agent has a persistent cryptographic identity (DID) and must obtain an explicit grant from its Principal before acting on their behalf.</t>
          </dd>
          <dt>Principal:</dt>
          <dd>
            <t>The human user who authorizes an Agent to act on their behalf. The Principal is the subject (<tt>sub</tt>) of any Grant Token issued by the authorization server.</t>
          </dd>
          <dt>Developer:</dt>
          <dd>
            <t>The organization or individual who built and operates the Agent. The Developer authenticates to the authorization server using an API key.</t>
          </dd>
          <dt>Authorization Server:</dt>
          <dd>
            <t>A server implementing this specification that issues Grant Tokens, maintains the grant registry, and provides the JWKS endpoint for offline verification.</t>
          </dd>
          <dt>Service:</dt>
          <dd>
            <t>Any API or platform that receives requests from an Agent. Services <bcp14>MUST</bcp14> verify Grant Tokens before acting on agent requests.</t>
          </dd>
          <dt>Grant:</dt>
          <dd>
            <t>A persistent record of permission given by a Principal to an Agent for a specific set of Scopes. A Grant is represented to the Agent as a Grant Token.</t>
          </dd>
          <dt>Grant Token:</dt>
          <dd>
            <t>A signed JWT <xref target="RFC7519"/> representing a valid, non-revoked Grant. Grant Tokens are short-lived credentials carrying agent-specific claims defined in <xref target="grant-token-format"/>.</t>
          </dd>
          <dt>Scope:</dt>
          <dd>
            <t>A named permission string following the format <tt>resource:action[:constraint]</tt> as defined in <xref target="scope-format"/>.</t>
          </dd>
          <dt>DID:</dt>
          <dd>
            <t>A Decentralized Identifier <xref target="DID-CORE"/> — the Agent's cryptographic identity. In DAAP, Agent DIDs take the form <tt>did:grantex:&lt;agent_id&gt;</tt>.</t>
          </dd>
          <dt>Policy:</dt>
          <dd>
            <t>A rule evaluated by the Policy Engine (<xref target="policy-engine"/>) that automatically approves or denies an authorization request before the consent UI is shown to the Principal.</t>
          </dd>
          <dt>Anomaly:</dt>
          <dd>
            <t>A behavioral deviation from an agent's established activity baseline, detected by the runtime monitoring system defined in <xref target="anomaly-detection"/>.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="agent-identity">
      <name>Agent Identity</name>
      <section anchor="did-format">
        <name>DID Format</name>
        <t>Every Agent registered with a DAAP-compliant Authorization Server receives a Decentralized Identifier of the form:</t>
        <artwork><![CDATA[
did:grantex:<agent_id>
]]></artwork>
        <t>where <tt>&lt;agent_id&gt;</tt> is a ULID (Universally Unique Lexicographically Sortable Identifier) <xref target="ULID"/> prefixed with <tt>ag_</tt>.</t>
        <t>Example:</t>
        <artwork><![CDATA[
did:grantex:ag_01HXYZ123abcDEF456ghi
]]></artwork>
      </section>
      <section anchor="identity-document">
        <name>Identity Document</name>
        <t>The DID resolves to an identity document at the Authorization Server. The document <bcp14>MUST</bcp14> contain the following fields:</t>
        <sourcecode type="json"><![CDATA[
{
  "@context": "https://grantex.dev/v1/identity",
  "id": "did:grantex:ag_01HXYZ123abcDEF456ghi",
  "developer": "org_yourcompany",
  "name": "travel-booker",
  "description": "Books flights and hotels on behalf of users",
  "declaredScopes": ["calendar:read", "payments:initiate:max_500"],
  "status": "active",
  "createdAt": "2026-02-01T00:00:00Z",
  "verificationMethod": [{
    "id": "did:grantex:ag_01HXYZ123abcDEF456ghi#key-1",
    "type": "JsonWebKey2020",
    "publicKeyJwk": { "..." : "..." }
  }]
}
]]></sourcecode>
      </section>
      <section anchor="key-management">
        <name>Key Management</name>
        <t>Authorization Servers <bcp14>MUST</bcp14> adhere to the following key management requirements:</t>
        <ul spacing="normal">
          <li>
            <t>Authorization Servers <bcp14>MUST</bcp14> use RS256 (RSASSA-PKCS1-v1_5 using SHA-256) <xref target="RFC7518"/> for signing Grant Tokens.</t>
          </li>
          <li>
            <t>Private signing keys <bcp14>MUST</bcp14> never be transmitted or stored outside the Authorization Server's trust boundary.</t>
          </li>
          <li>
            <t>Public keys <bcp14>MUST</bcp14> be published at <tt>/.well-known/jwks.json</tt> as a JWK Set <xref target="RFC7517"/>.</t>
          </li>
          <li>
            <t>Key rotation <bcp14>MUST</bcp14> be supported without changing the Agent's DID or invalidating existing, unexpired Grant Tokens. Rotated keys <bcp14>MUST</bcp14> remain in the JWKS until all tokens signed with them have expired.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="scope-format">
      <name>Scope Format and Registry</name>
      <section anchor="format">
        <name>Format</name>
        <t>Scopes are permission strings of the form:</t>
        <artwork><![CDATA[
resource:action[:constraint]
]]></artwork>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t><tt>resource</tt> identifies the data or service being accessed (e.g., <tt>calendar</tt>, <tt>payments</tt>, <tt>email</tt>)</t>
          </li>
          <li>
            <t><tt>action</tt> identifies the operation (e.g., <tt>read</tt>, <tt>write</tt>, <tt>send</tt>, <tt>initiate</tt>, <tt>delete</tt>)</t>
          </li>
          <li>
            <t><tt>constraint</tt> is an optional limiting parameter (e.g., <tt>max_500</tt> for a spending limit)</t>
          </li>
        </ul>
      </section>
      <section anchor="standard-scope-registry">
        <name>Standard Scope Registry</name>
        <t>The following scopes constitute the normative standard registry. Implementations <bcp14>MUST</bcp14> support all standard scopes that are relevant to the resources they expose:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Scope</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>calendar:read</tt></td>
              <td align="left">Read calendar events</td>
            </tr>
            <tr>
              <td align="left">
                <tt>calendar:write</tt></td>
              <td align="left">Create, modify, and delete calendar events</td>
            </tr>
            <tr>
              <td align="left">
                <tt>email:read</tt></td>
              <td align="left">Read email messages</td>
            </tr>
            <tr>
              <td align="left">
                <tt>email:send</tt></td>
              <td align="left">Send emails on the Principal's behalf</td>
            </tr>
            <tr>
              <td align="left">
                <tt>email:delete</tt></td>
              <td align="left">Delete email messages</td>
            </tr>
            <tr>
              <td align="left">
                <tt>files:read</tt></td>
              <td align="left">Read files and documents</td>
            </tr>
            <tr>
              <td align="left">
                <tt>files:write</tt></td>
              <td align="left">Create and modify files</td>
            </tr>
            <tr>
              <td align="left">
                <tt>payments:read</tt></td>
              <td align="left">View payment history and balances</td>
            </tr>
            <tr>
              <td align="left">
                <tt>payments:initiate</tt></td>
              <td align="left">Initiate payments of any amount</td>
            </tr>
            <tr>
              <td align="left">
                <tt>payments:initiate:max_N</tt></td>
              <td align="left">Initiate payments up to N in the account's base currency</td>
            </tr>
            <tr>
              <td align="left">
                <tt>profile:read</tt></td>
              <td align="left">Read profile and identity information</td>
            </tr>
            <tr>
              <td align="left">
                <tt>contacts:read</tt></td>
              <td align="left">Read address book and contacts</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="custom-scopes">
        <name>Custom Scopes</name>
        <t>Services <bcp14>MAY</bcp14> define custom scopes using reverse-domain notation per <xref target="RFC3986"/>:</t>
        <artwork><![CDATA[
com.stripe.charges:create:max_5000
io.github.issues:create
]]></artwork>
        <t>Custom scopes <bcp14>MUST</bcp14> use reverse-domain notation to avoid collisions with the standard registry.</t>
      </section>
      <section anchor="scope-display-requirements">
        <name>Scope Display Requirements</name>
        <t>Authorization Servers <bcp14>MUST</bcp14> maintain a human-readable description for each scope in their registry. Consent UIs <bcp14>MUST</bcp14> display human-readable descriptions to Principals, never raw scope strings.</t>
      </section>
    </section>
    <section anchor="grant-flow">
      <name>Grant Authorization Flow</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>The DAAP grant flow is modelled on the OAuth 2.0 Authorization Code flow <xref target="RFC6749"/> with the following adaptations: the client is always a Developer (identified by an API key), the resource owner is a Principal identified by the Developer's internal user identifier, and the resulting token carries agent-specific claims.</t>
        <artwork type="ascii-art"><![CDATA[
Developer App          Authorization Server       Principal
     |                         |                      |
     | POST /v1/authorize       |                      |
     | {agentId, principalId,  |                      |
     |  scopes, redirectUri}    |                      |
     |------------------------>|                      |
     |                         |                      |
     |<------------------------|                      |
     | {authRequestId,          |                      |
     |  consentUrl}             |                      |
     |                         |                      |
     | redirect user --------------------------------->|
     |                         | consent UI displayed |
     |                         |<---------------------|
     |                         | Principal approves   |
     |                         |                      |
     |<------------------------------------------------|
     | redirectUri?code=AUTH_CODE                      |
     |                         |                      |
     | POST /v1/token           |                      |
     | {code, agentId}          |                      |
     |------------------------>|                      |
     |<------------------------|                      |
     | {grantToken,             |                      |
     |  refreshToken}           |                      |
]]></artwork>
      </section>
      <section anchor="authorization-request">
        <name>Authorization Request</name>
        <t>The Developer initiates the flow by sending:</t>
        <sourcecode type="http"><![CDATA[
POST /v1/authorize
Authorization: Bearer <api_key>
Content-Type: application/json

{
  "agentId": "ag_01HXYZ123abc",
  "principalId": "user_abc123",
  "scopes": ["calendar:read", "payments:initiate:max_500"],
  "expiresIn": "24h",
  "redirectUri": "https://yourapp.com/auth/callback",
  "state": "<csrf_token>",
  "audience": "https://api.targetservice.com"
}
]]></sourcecode>
        <t>The <tt>audience</tt> field is <bcp14>OPTIONAL</bcp14>. When present, it <bcp14>MUST</bcp14> be embedded as the <tt>aud</tt> claim in the issued Grant Token. The <tt>state</tt> parameter is <bcp14>REQUIRED</bcp14> and <bcp14>MUST</bcp14> be validated by the Developer's callback handler to prevent CSRF attacks. The <tt>redirectUri</tt> <bcp14>MUST</bcp14> match a URI pre-registered for the Agent at the Authorization Server.</t>
        <t>Authorization Servers <bcp14>MUST</bcp14> reject requests whose <tt>redirectUri</tt> does not exactly match a pre-registered value for the specified <tt>agentId</tt>.</t>
        <t>Response <tt>200 OK</tt>:</t>
        <sourcecode type="json"><![CDATA[
{
  "authRequestId": "areq_01HXYZ...",
  "consentUrl": "https://consent.example.com/authorize?req=eyJ...",
  "expiresAt": "2026-02-01T00:15:00Z"
}
]]></sourcecode>
      </section>
      <section anchor="consent-ui-requirements">
        <name>Consent UI Requirements</name>
        <t>Authorization Servers <bcp14>MUST</bcp14> render a consent UI to the Principal that displays all of the following before the Principal approves or denies:</t>
        <ol spacing="normal" type="1"><li>
            <t>The Agent's registered name and description</t>
          </li>
          <li>
            <t>The Developer's registered organization name</t>
          </li>
          <li>
            <t>The full list of requested scopes with human-readable descriptions</t>
          </li>
          <li>
            <t>The token expiry period</t>
          </li>
          <li>
            <t>A prominent deny/cancel action that is at least as visually prominent as the approve action</t>
          </li>
        </ol>
      </section>
      <section anchor="token-exchange">
        <name>Token Exchange</name>
        <t>After Principal approval, the Authorization Server calls <tt>redirectUri?code=AUTH_CODE&amp;state=STATE</tt>.</t>
        <sourcecode type="http"><![CDATA[
POST /v1/token
Authorization: Bearer <api_key>
Content-Type: application/json

{
  "code": "AUTH_CODE",
  "agentId": "ag_01HXYZ123abc"
}
]]></sourcecode>
        <t>Response <tt>200 OK</tt>:</t>
        <sourcecode type="json"><![CDATA[
{
  "grantToken": "eyJhbGciOiJSUzI1NiJ9...",
  "refreshToken": "ref_01HXYZ...",
  "grantId": "grnt_01HXYZ...",
  "scopes": ["calendar:read", "payments:initiate:max_500"],
  "expiresAt": "2026-02-02T00:00:00Z"
}
]]></sourcecode>
        <t>Refresh tokens are single-use. The Authorization Server <bcp14>MUST</bcp14> rotate the refresh token on every use. Refresh tokens <bcp14>MUST</bcp14> be invalidated when the underlying Grant is revoked.</t>
      </section>
    </section>
    <section anchor="grant-token-format">
      <name>Grant Token Format</name>
      <section anchor="jose-header">
        <name>JOSE Header</name>
        <sourcecode type="json"><![CDATA[
{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "<key_id>"
}
]]></sourcecode>
        <t>The <tt>alg</tt> field <bcp14>MUST</bcp14> be <tt>RS256</tt>. Authorization Servers <bcp14>MUST NOT</bcp14> issue tokens with any other algorithm. Verifiers <bcp14>MUST</bcp14> explicitly reject tokens with any <tt>alg</tt> value other than <tt>RS256</tt>, including <tt>none</tt> and <tt>HS256</tt>.</t>
      </section>
      <section anchor="jwt-claims">
        <name>JWT Claims</name>
        <sourcecode type="json"><![CDATA[
{
  "iss": "https://as.example.com",
  "sub": "user_abc123",
  "aud": "https://api.targetservice.com",
  "agt": "did:grantex:ag_01HXYZ123abc",
  "dev": "org_yourcompany",
  "grnt": "grnt_01HXYZ...",
  "scp": ["calendar:read", "payments:initiate:max_500"],
  "iat": 1709000000,
  "exp": 1709086400,
  "jti": "tok_01HXYZ987xyz"
}
]]></sourcecode>
        <t>The following claims are defined by this specification:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Claim</th>
              <th align="left">Type</th>
              <th align="left">Required</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>iss</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">Authorization Server identifier URI</td>
            </tr>
            <tr>
              <td align="left">
                <tt>sub</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">Principal identifier</td>
            </tr>
            <tr>
              <td align="left">
                <tt>aud</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>OPTIONAL</bcp14></td>
              <td align="left">Intended audience (target service URI)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>agt</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">Agent DID</td>
            </tr>
            <tr>
              <td align="left">
                <tt>dev</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">Developer organization identifier</td>
            </tr>
            <tr>
              <td align="left">
                <tt>grnt</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">Grant identifier (used for revocation lookup)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>scp</tt></td>
              <td align="left">string[]</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">Array of granted scope strings</td>
            </tr>
            <tr>
              <td align="left">
                <tt>iat</tt></td>
              <td align="left">NumericDate</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">Issued-at time</td>
            </tr>
            <tr>
              <td align="left">
                <tt>exp</tt></td>
              <td align="left">NumericDate</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">Expiration time</td>
            </tr>
            <tr>
              <td align="left">
                <tt>jti</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">Unique token identifier (for replay prevention)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="token-validation">
        <name>Token Validation</name>
        <t>Services receiving a Grant Token <bcp14>MUST</bcp14> verify all of the following:</t>
        <ol spacing="normal" type="1"><li>
            <t>The token signature is valid, verified using the JWK Set published at <tt>{iss}/.well-known/jwks.json</tt>, with the key identified by <tt>kid</tt>.</t>
          </li>
          <li>
            <t>The <tt>alg</tt> header value is <tt>RS256</tt>. Tokens with any other <tt>alg</tt> <bcp14>MUST</bcp14> be rejected.</t>
          </li>
          <li>
            <t>The <tt>exp</tt> claim has not passed (allowing for a reasonable clock skew of no more than 300 seconds).</t>
          </li>
          <li>
            <t>If the service has a registered audience identifier, the <tt>aud</tt> claim matches that identifier.</t>
          </li>
          <li>
            <t>The <tt>scp</tt> array contains all scopes required for the requested operation.</t>
          </li>
          <li>
            <t>For high-stakes operations (see <xref target="token-lifetime"/>), the token has not been revoked via the online verification endpoint.</t>
          </li>
        </ol>
      </section>
      <section anchor="token-lifetime">
        <name>Token Lifetime Guidance</name>
        <table>
          <thead>
            <tr>
              <th align="left">Use Case</th>
              <th align="left">Recommended Maximum TTL</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">High-stakes actions (<tt>payments:initiate</tt>, <tt>email:send</tt>, <tt>files:write</tt>)</td>
              <td align="left">1 hour</td>
            </tr>
            <tr>
              <td align="left">Standard agent tasks</td>
              <td align="left">8 hours</td>
            </tr>
            <tr>
              <td align="left">Long-running background agents</td>
              <td align="left">24 hours</td>
            </tr>
          </tbody>
        </table>
        <t>Implementations caching revocation state <bcp14>MUST NOT</bcp14> cache for longer than 300 seconds (5 minutes). Services processing high-stakes scopes (<tt>payments:initiate</tt>, <tt>email:send</tt>, <tt>files:write</tt>) <bcp14>SHOULD</bcp14> perform online verification for each token use.</t>
      </section>
    </section>
    <section anchor="revocation">
      <name>Token Revocation</name>
      <section anchor="revoke-a-grant">
        <name>Revoke a Grant</name>
        <sourcecode type="http"><![CDATA[
DELETE /v1/grants/{grantId}
Authorization: Bearer <principal_token>
]]></sourcecode>
        <t>Effect: all active Grant Tokens issued under this Grant are immediately invalidated. The Grant record is marked <tt>revoked</tt> with a timestamp.</t>
      </section>
      <section anchor="revoke-a-specific-token">
        <name>Revoke a Specific Token</name>
        <sourcecode type="http"><![CDATA[
POST /v1/tokens/revoke
Authorization: Bearer <api_key>
Content-Type: application/json

{
  "jti": "tok_01HXYZ987xyz"
}
]]></sourcecode>
        <t>Response: <tt>204 No Content</tt>.</t>
      </section>
      <section anchor="online-verification">
        <name>Online Verification</name>
        <sourcecode type="http"><![CDATA[
POST /v1/tokens/verify
Authorization: Bearer <api_key>
Content-Type: application/json

{
  "token": "eyJhbGciOiJSUzI1NiJ9..."
}
]]></sourcecode>
        <t>Response <tt>200 OK</tt>:</t>
        <sourcecode type="json"><![CDATA[
{
  "valid": true,
  "grantId": "grnt_01HXYZ...",
  "scopes": ["calendar:read"],
  "principal": "user_abc123",
  "agent": "did:grantex:ag_01HXYZ123abc",
  "expiresAt": "2026-02-02T00:00:00Z"
}
]]></sourcecode>
      </section>
      <section anchor="jti-replay-prevention">
        <name>JTI Replay Prevention</name>
        <t>Authorization Servers <bcp14>MUST</bcp14> track all issued <tt>jti</tt> values for the lifetime of the corresponding token. If a <tt>jti</tt> value is presented for verification more than once within its validity window, the Authorization Server <bcp14>MUST</bcp14> return <tt>valid: false</tt> and <bcp14>SHOULD</bcp14> log an anomaly event.</t>
      </section>
    </section>
    <section anchor="audit-trail">
      <name>Audit Trail</name>
      <section anchor="log-entry-schema">
        <name>Log Entry Schema</name>
        <sourcecode type="json"><![CDATA[
{
  "entryId": "alog_01HXYZ...",
  "agentId": "did:grantex:ag_01HXYZ123abc",
  "grantId": "grnt_01HXYZ...",
  "principalId": "user_abc123",
  "developerId": "org_yourcompany",
  "action": "payment.initiated",
  "status": "success",
  "metadata": {
    "amount": 420,
    "currency": "USD",
    "merchant": "Air India"
  },
  "timestamp": "2026-02-01T12:34:56.789Z",
  "hash": "sha256:abc123...",
  "prevHash": "sha256:xyz789..."
}
]]></sourcecode>
        <t><tt>action</tt> values use the format <tt>resource.verb</tt> (e.g., <tt>payment.initiated</tt>, <tt>email.sent</tt>). <tt>status</tt> <bcp14>MUST</bcp14> be one of <tt>success</tt>, <tt>failure</tt>, or <tt>blocked</tt>.</t>
      </section>
      <section anchor="hash-chain">
        <name>Hash Chain</name>
        <t>Each entry's <tt>hash</tt> is computed as a SHA-256 digest <xref target="RFC4648"/> over a canonical representation of the entry:</t>
        <artwork><![CDATA[
hash = SHA-256(canonical_json(entry_without_hash) || prevHash)
]]></artwork>
        <t>where <tt>canonical_json</tt> serializes all fields as a JSON object <xref target="RFC8259"/> with keys sorted alphabetically, and <tt>prevHash</tt> is the <tt>null</tt> string for the first entry in a chain. This construction makes any retrospective modification to a historical entry detectable, as it invalidates all subsequent hashes.</t>
      </section>
      <section anchor="audit-log-requirements">
        <name>Audit Log Requirements</name>
        <ul spacing="normal">
          <li>
            <t>Audit log entries <bcp14>MUST</bcp14> be append-only at the API level. No update or delete endpoints for audit entries are permitted.</t>
          </li>
          <li>
            <t>The Authorization Server <bcp14>MUST</bcp14> reject requests to modify or delete audit entries.</t>
          </li>
          <li>
            <t>The complete audit log for a Grant <bcp14>MUST</bcp14> remain accessible after the Grant is revoked, for a minimum retention period determined by the deployment's compliance requirements.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="delegation">
      <name>Multi-Agent Delegation</name>
      <section anchor="delegation-token-claims">
        <name>Delegation Token Claims</name>
        <t>When Agent A spawns Agent B, B's Grant Token <bcp14>MUST</bcp14> carry delegation claims linking it to the original Principal's authorization:</t>
        <sourcecode type="json"><![CDATA[
{
  "sub": "user_abc123",
  "agt": "did:grantex:ag_B_456",
  "parentAgt": "did:grantex:ag_A_123",
  "parentGrnt": "grnt_parentXYZ",
  "scp": ["email:read"],
  "delegationDepth": 1
}
]]></sourcecode>
        <t>Additional delegation claims:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Claim</th>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>parentAgt</tt></td>
              <td align="left">string</td>
              <td align="left">DID of the delegating (parent) Agent</td>
            </tr>
            <tr>
              <td align="left">
                <tt>parentGrnt</tt></td>
              <td align="left">string</td>
              <td align="left">Grant ID of the parent Grant</td>
            </tr>
            <tr>
              <td align="left">
                <tt>delegationDepth</tt></td>
              <td align="left">integer</td>
              <td align="left">Number of hops from the root Grant; 0 for root Grants</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="delegation-rules">
        <name>Delegation Rules</name>
        <ul spacing="normal">
          <li>
            <t>Sub-agent scopes <bcp14>MUST</bcp14> be a strict subset of the parent Grant's <tt>scp</tt> array. Authorization Servers <bcp14>MUST</bcp14> reject delegation requests whose requested scopes are not fully contained in the parent token's <tt>scp</tt> claim.</t>
          </li>
          <li>
            <t><tt>delegationDepth</tt> <bcp14>MUST</bcp14> be incremented by exactly 1 at each hop.</t>
          </li>
          <li>
            <t>Implementations <bcp14>MUST</bcp14> enforce a developer-configurable delegation depth limit. The <bcp14>RECOMMENDED</bcp14> default limit is <strong>3</strong>. Implementations <bcp14>MUST</bcp14> enforce a hard cap of <strong>10</strong> regardless of developer configuration.</t>
          </li>
          <li>
            <t>The expiry of a delegated Grant Token <bcp14>MUST NOT</bcp14> exceed <tt>min(parent_token_exp, now + requested_expires_in)</tt>.</t>
          </li>
        </ul>
      </section>
      <section anchor="delegation-endpoint">
        <name>Delegation Endpoint</name>
        <sourcecode type="http"><![CDATA[
POST /v1/grants/delegate
Authorization: Bearer <api_key>
Content-Type: application/json

{
  "parentGrantToken": "eyJhbGciOiJSUzI1NiJ9...",
  "subAgentId": "ag_01HXYZ_sub",
  "scopes": ["email:read"],
  "expiresIn": "1h"
}
]]></sourcecode>
        <t>The Authorization Server <bcp14>MUST</bcp14>:</t>
        <ol spacing="normal" type="1"><li>
            <t>Validate that the parent Grant has not been revoked.</t>
          </li>
          <li>
            <t>Reject with <tt>400</tt> if any requested scope is not present in the parent token's <tt>scp</tt> claim.</t>
          </li>
          <li>
            <t>Reject with <tt>400</tt> if the resulting <tt>delegationDepth</tt> would exceed the configured limit.</t>
          </li>
          <li>
            <t>Reject with <tt>404</tt> if <tt>subAgentId</tt> does not belong to the authenticated Developer.</t>
          </li>
          <li>
            <t>Compute expiry as <tt>min(parent token exp, now + expiresIn)</tt>.</t>
          </li>
        </ol>
        <t>Response <tt>201 Created</tt>:</t>
        <sourcecode type="json"><![CDATA[
{
  "grantToken": "eyJhbGciOiJSUzI1NiJ9...",
  "grantId": "grnt_01HXYZ_sub",
  "scopes": ["email:read"],
  "expiresAt": "2026-02-01T01:00:00Z"
}
]]></sourcecode>
      </section>
      <section anchor="cascade-revocation">
        <name>Cascade Revocation</name>
        <t>Revoking a Grant via <tt>DELETE /v1/grants/:id</tt> <bcp14>MUST</bcp14> atomically revoke all descendant Grants — that is, all Grants whose <tt>parent_grant_id</tt> traces back to the revoked Grant at any depth. Authorization Servers <bcp14>SHOULD</bcp14> implement this as a single recursive database transaction to eliminate any window during which descendant tokens remain valid.</t>
      </section>
    </section>
    <section anchor="conformance">
      <name>Conformance Requirements</name>
      <t>A conformant DAAP Authorization Server <bcp14>MUST</bcp14> expose the following endpoints:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Endpoint</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>POST /v1/agents</tt></td>
            <td align="left">Register an Agent</td>
          </tr>
          <tr>
            <td align="left">
              <tt>POST /v1/authorize</tt></td>
            <td align="left">Initiate the grant authorization flow</td>
          </tr>
          <tr>
            <td align="left">
              <tt>POST /v1/token</tt></td>
            <td align="left">Exchange authorization code for Grant Token</td>
          </tr>
          <tr>
            <td align="left">
              <tt>POST /v1/tokens/verify</tt></td>
            <td align="left">Online token verification</td>
          </tr>
          <tr>
            <td align="left">
              <tt>POST /v1/tokens/revoke</tt></td>
            <td align="left">Revoke a specific token by JTI</td>
          </tr>
          <tr>
            <td align="left">
              <tt>GET /v1/grants</tt></td>
            <td align="left">List a Principal's active Grants</td>
          </tr>
          <tr>
            <td align="left">
              <tt>GET /v1/grants/:id</tt></td>
            <td align="left">Retrieve a single Grant</td>
          </tr>
          <tr>
            <td align="left">
              <tt>DELETE /v1/grants/:id</tt></td>
            <td align="left">Revoke a Grant (cascades to all descendants)</td>
          </tr>
          <tr>
            <td align="left">
              <tt>POST /v1/grants/delegate</tt></td>
            <td align="left">Issue a delegated sub-agent Grant</td>
          </tr>
          <tr>
            <td align="left">
              <tt>POST /v1/audit/log</tt></td>
            <td align="left">Write an audit log entry</td>
          </tr>
          <tr>
            <td align="left">
              <tt>GET /v1/audit/entries</tt></td>
            <td align="left">Query the audit log</td>
          </tr>
          <tr>
            <td align="left">
              <tt>GET /v1/audit/:id</tt></td>
            <td align="left">Retrieve a single audit log entry</td>
          </tr>
          <tr>
            <td align="left">
              <tt>GET /.well-known/jwks.json</tt></td>
            <td align="left">JWK Set for offline token verification</td>
          </tr>
          <tr>
            <td align="left">
              <tt>GET /health</tt></td>
            <td align="left">Health check</td>
          </tr>
        </tbody>
      </table>
      <t>The following endpoints are <bcp14>OPTIONAL</bcp14>. Implementations that choose to support an optional extension <bcp14>MUST</bcp14> implement it as specified in this document:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Policy Engine</strong>: <tt>POST /v1/policies</tt>, <tt>GET /v1/policies</tt>, <tt>GET /v1/policies/:id</tt>, <tt>PATCH /v1/policies/:id</tt>, <tt>DELETE /v1/policies/:id</tt></t>
        </li>
        <li>
          <t><strong>Webhooks</strong>: <tt>POST /v1/webhooks</tt>, <tt>GET /v1/webhooks</tt>, <tt>DELETE /v1/webhooks/:id</tt></t>
        </li>
        <li>
          <t><strong>Anomaly Detection</strong>: <tt>POST /v1/anomalies/detect</tt>, <tt>GET /v1/anomalies</tt>, <tt>PATCH /v1/anomalies/:id/acknowledge</tt></t>
        </li>
        <li>
          <t><strong>Enterprise SCIM 2.0</strong>: <tt>/scim/v2/</tt> endpoints as defined in RFC 7642/7643/7644</t>
        </li>
        <li>
          <t><strong>SSO (OIDC)</strong>: <tt>POST /v1/sso/config</tt>, <tt>GET /sso/login</tt>, <tt>GET /sso/callback</tt></t>
        </li>
      </ul>
    </section>
    <section anchor="policy-engine">
      <name>Policy Engine</name>
      <section anchor="purpose">
        <name>Purpose</name>
        <t>The Policy Engine evaluates developer-defined rules against each authorization request before the consent UI is displayed. Policies enable developers to auto-approve routine low-risk requests and auto-deny requests that violate organizational constraints.</t>
      </section>
      <section anchor="effects">
        <name>Effects</name>
        <table>
          <thead>
            <tr>
              <th align="left">Effect</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>auto_approve</tt></td>
              <td align="left">Grant Token issued immediately without showing the consent UI</td>
            </tr>
            <tr>
              <td align="left">
                <tt>auto_deny</tt></td>
              <td align="left">Authorization request rejected immediately with <tt>403 Forbidden</tt></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="condition-fields">
        <name>Condition Fields</name>
        <table>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>scopes</tt></td>
              <td align="left">string[]</td>
              <td align="left">Matches when the requested scopes are a subset of this list</td>
            </tr>
            <tr>
              <td align="left">
                <tt>principalId</tt></td>
              <td align="left">string</td>
              <td align="left">Matches a specific Principal identifier</td>
            </tr>
            <tr>
              <td align="left">
                <tt>agentId</tt></td>
              <td align="left">string</td>
              <td align="left">Matches a specific Agent identifier</td>
            </tr>
            <tr>
              <td align="left">
                <tt>timeWindow</tt></td>
              <td align="left">object</td>
              <td align="left">Time constraint: <tt>{ "startHour": N, "endHour": N, "days": [1..7] }</tt> where days are ISO weekday integers (1=Monday, 7=Sunday)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="evaluation-order">
        <name>Evaluation Order</name>
        <t>Policy evaluation <bcp14>MUST</bcp14> follow this order:</t>
        <ol spacing="normal" type="1"><li>
            <t><tt>auto_deny</tt> rules are evaluated first. The first matching deny rule wins and the request is rejected immediately.</t>
          </li>
          <li>
            <t><tt>auto_approve</tt> rules are evaluated next. The first matching allow rule causes the Grant Token to be issued.</t>
          </li>
          <li>
            <t>If no rule matches, the consent UI is displayed to the Principal.</t>
          </li>
        </ol>
        <t>This ordering ensures that restrictive policies cannot be bypassed by a conflicting allow rule.</t>
      </section>
    </section>
    <section anchor="anomaly-detection">
      <name>Anomaly Detection</name>
      <section anchor="purpose-1">
        <name>Purpose</name>
        <t>The anomaly detection system monitors Agent behavior at runtime against each Agent's established activity baseline. It identifies behavioral deviations and surfaces them to Developers for review.</t>
      </section>
      <section anchor="non-blocking-requirement">
        <name>Non-Blocking Requirement</name>
        <t>Anomaly detection <bcp14>MUST NOT</bcp14> block token issuance. Detection operates asynchronously as an advisory layer. Authorization Servers <bcp14>MUST NOT</bcp14> delay Grant Token responses pending anomaly analysis.</t>
      </section>
      <section anchor="anomaly-types">
        <name>Anomaly Types</name>
        <table>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>unusual_scope_access</tt></td>
              <td align="left">Agent requested scopes outside its established pattern</td>
            </tr>
            <tr>
              <td align="left">
                <tt>high_frequency</tt></td>
              <td align="left">Token issuance rate significantly exceeds the agent's baseline</td>
            </tr>
            <tr>
              <td align="left">
                <tt>off_hours_activity</tt></td>
              <td align="left">Activity detected outside the Principal's normal active hours</td>
            </tr>
            <tr>
              <td align="left">
                <tt>new_principal</tt></td>
              <td align="left">Agent is requesting access for a previously unserved Principal</td>
            </tr>
            <tr>
              <td align="left">
                <tt>cascade_delegation</tt></td>
              <td align="left">Delegation chain depth approaching or exceeding configured limits</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="severity-levels">
        <name>Severity Levels</name>
        <t>Anomaly severity <bcp14>MUST</bcp14> be one of: <tt>low</tt>, <tt>medium</tt>, <tt>high</tt>, <tt>critical</tt>.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="algorithm-restrictions">
        <name>Algorithm Restrictions</name>
        <t>All Grant Tokens <bcp14>MUST</bcp14> be signed with RS256 (RSASSA-PKCS1-v1_5 with SHA-256). Symmetric signing algorithms, including HS256, are NOT PERMITTED. All verifiers <bcp14>MUST</bcp14> explicitly reject tokens presenting <tt>alg: none</tt> or any symmetric algorithm, regardless of library defaults. This prevents algorithm confusion attacks as described in <xref target="RFC8725"/>.</t>
        <t>RSA key moduli <bcp14>MUST</bcp14> be at least 2048 bits. Authorization Servers generating or importing signing keys <bcp14>MUST</bcp14> enforce this minimum.</t>
      </section>
      <section anchor="token-replay-prevention">
        <name>Token Replay Prevention</name>
        <t>Every issued Grant Token carries a unique <tt>jti</tt> claim. Authorization Servers providing online verification <bcp14>MUST</bcp14> track issued <tt>jti</tt> values and reject any verification request presenting a <tt>jti</tt> that has already been used, for the full lifetime of the token.</t>
      </section>
      <section anchor="csrf-and-redirect-uri-security">
        <name>CSRF and Redirect URI Security</name>
        <t>The <tt>state</tt> parameter in the authorization request <bcp14>MUST</bcp14> be a cryptographically random, unpredictable value generated per-request. Developer callback handlers <bcp14>MUST</bcp14> validate the returned <tt>state</tt> value against the value sent in the original request.</t>
        <t>Redirect URIs <bcp14>MUST</bcp14> be pre-registered by the Developer for each Agent. Authorization Servers <bcp14>MUST</bcp14> perform exact-match comparison of the <tt>redirectUri</tt> in each authorization request against the pre-registered set. Prefix matching and wildcard matching are NOT PERMITTED.</t>
      </section>
      <section anchor="scope-reduction-for-delegation">
        <name>Scope Reduction for Delegation</name>
        <t>Delegated Grant Tokens <bcp14>MUST</bcp14> carry a scope set that is a strict subset of the parent Grant's scope set. Authorization Servers <bcp14>MUST</bcp14> enforce this at token issuance time; it <bcp14>MUST NOT</bcp14> be enforced only at verification time.</t>
      </section>
      <section anchor="revocation-propagation">
        <name>Revocation Propagation</name>
        <t>Authorization Servers <bcp14>MUST</bcp14> propagate grant revocation to all descendant grants atomically. The maximum allowable latency between a revocation request and the invalidation of all descendant tokens via the online verification endpoint is implementation-defined, but implementations <bcp14>SHOULD</bcp14> target sub-second propagation.</t>
        <t>Implementations caching revocation state <bcp14>MUST NOT</bcp14> cache for longer than 300 seconds.</t>
      </section>
      <section anchor="consent-ui-integrity">
        <name>Consent UI Integrity</name>
        <t>Consent UIs <bcp14>MUST</bcp14> display the agent name, developer name, all requested scopes with human-readable descriptions, token expiry, and a prominent deny/cancel action. This information <bcp14>MUST</bcp14> be sourced from the Authorization Server's registry, not from the authorization request itself, to prevent a malicious Developer from displaying misleading scope descriptions.</t>
      </section>
      <section anchor="audit-log-integrity">
        <name>Audit Log Integrity</name>
        <t>The hash-chain construction defined in <xref target="audit-trail"/> ensures that any modification to a historical audit entry is detectable. Implementations <bcp14>MUST</bcp14> store audit log entries in an append-only manner and <bcp14>MUST</bcp14> expose no API for modification or deletion of audit entries. Audit log export implementations <bcp14>SHOULD</bcp14> verify the hash chain before serving exports.</t>
      </section>
      <section anchor="enterprise-identity-security">
        <name>Enterprise Identity Security</name>
        <t>SSO callback handlers <bcp14>MUST</bcp14> validate both the <tt>state</tt> (CSRF protection) and <tt>nonce</tt> (replay protection) parameters before establishing a session. ID tokens received in the SSO callback <bcp14>MUST</bcp14> be cryptographically verified against the identity provider's JWKS endpoint before any claims are trusted.</t>
        <t>SCIM provisioning endpoints <bcp14>MUST</bcp14> authenticate via a credential (SCIM Bearer token) that is entirely separate from the Developer API key infrastructure. Compromise of a Developer API key <bcp14>MUST NOT</bcp14> grant access to SCIM provisioning endpoints, and vice versa.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="jwt-claims-registration">
        <name>JWT Claims Registration</name>
        <t>This document requests registration of the following claims in the IANA "JSON Web Token Claims" registry established by <xref target="RFC7519"/>:</t>
        <dl newline="true">
          <dt><tt>agt</tt>:</dt>
          <dd>
            <t>Claim Name: <tt>agt</tt></t>
          </dd>
          <dt/>
          <dd>
            <t>Claim Description: Agent Decentralized Identifier</t>
          </dd>
          <dt/>
          <dd>
            <t>Change Controller: IETF</t>
          </dd>
          <dt/>
          <dd>
            <t>Specification Document: This document, <xref target="grant-token-format"/></t>
          </dd>
          <dt><tt>dev</tt>:</dt>
          <dd>
            <t>Claim Name: <tt>dev</tt></t>
          </dd>
          <dt/>
          <dd>
            <t>Claim Description: Developer organization identifier</t>
          </dd>
          <dt/>
          <dd>
            <t>Change Controller: IETF</t>
          </dd>
          <dt/>
          <dd>
            <t>Specification Document: This document, <xref target="grant-token-format"/></t>
          </dd>
          <dt><tt>grnt</tt>:</dt>
          <dd>
            <t>Claim Name: <tt>grnt</tt></t>
          </dd>
          <dt/>
          <dd>
            <t>Claim Description: Grant identifier for revocation lookup</t>
          </dd>
          <dt/>
          <dd>
            <t>Change Controller: IETF</t>
          </dd>
          <dt/>
          <dd>
            <t>Specification Document: This document, <xref target="grant-token-format"/></t>
          </dd>
          <dt><tt>scp</tt>:</dt>
          <dd>
            <t>Claim Name: <tt>scp</tt></t>
          </dd>
          <dt/>
          <dd>
            <t>Claim Description: Array of granted authorization scope strings</t>
          </dd>
          <dt/>
          <dd>
            <t>Change Controller: IETF</t>
          </dd>
          <dt/>
          <dd>
            <t>Specification Document: This document, <xref target="grant-token-format"/></t>
          </dd>
          <dt><tt>parentAgt</tt>:</dt>
          <dd>
            <t>Claim Name: <tt>parentAgt</tt></t>
          </dd>
          <dt/>
          <dd>
            <t>Claim Description: DID of the delegating parent Agent</t>
          </dd>
          <dt/>
          <dd>
            <t>Change Controller: IETF</t>
          </dd>
          <dt/>
          <dd>
            <t>Specification Document: This document, <xref target="delegation"/></t>
          </dd>
          <dt><tt>parentGrnt</tt>:</dt>
          <dd>
            <t>Claim Name: <tt>parentGrnt</tt></t>
          </dd>
          <dt/>
          <dd>
            <t>Claim Description: Grant identifier of the parent Grant</t>
          </dd>
          <dt/>
          <dd>
            <t>Change Controller: IETF</t>
          </dd>
          <dt/>
          <dd>
            <t>Specification Document: This document, <xref target="delegation"/></t>
          </dd>
          <dt><tt>delegationDepth</tt>:</dt>
          <dd>
            <t>Claim Name: <tt>delegationDepth</tt></t>
          </dd>
          <dt/>
          <dd>
            <t>Claim Description: Number of delegation hops from the root Grant</t>
          </dd>
          <dt/>
          <dd>
            <t>Change Controller: IETF</t>
          </dd>
          <dt/>
          <dd>
            <t>Specification Document: This document, <xref target="delegation"/></t>
          </dd>
        </dl>
      </section>
      <section anchor="well-known-uri-registration">
        <name>Well-Known URI Registration</name>
        <t>No new Well-Known URIs are defined by this specification. Implementations use the existing <tt>/.well-known/jwks.json</tt> path established by <xref target="RFC8414"/>.</t>
      </section>
    </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="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="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="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="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </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="RFC6750">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6750"/>
          <seriesInfo name="DOI" value="10.17487/RFC6750"/>
        </reference>
        <reference anchor="RFC7636">
          <front>
            <title>Proof Key for Code Exchange by OAuth Public Clients</title>
            <author fullname="N. Sakimura" initials="N." role="editor" surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Agarwal" initials="N." surname="Agarwal"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>OAuth 2.0 public clients utilizing the Authorization Code Grant are susceptible to the authorization code interception attack. This specification describes the attack as well as a technique to mitigate against the threat through the use of Proof Key for Code Exchange (PKCE, pronounced "pixy").</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7636"/>
          <seriesInfo name="DOI" value="10.17487/RFC7636"/>
        </reference>
        <reference anchor="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="RFC7662">
          <front>
            <title>OAuth 2.0 Token Introspection</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This specification defines a method for a protected resource to query an OAuth 2.0 authorization server to determine the active state of an OAuth 2.0 token and to determine meta-information about this token. OAuth 2.0 deployments can use this method to convey information about the authorization context of the token from the authorization server to the protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7662"/>
          <seriesInfo name="DOI" value="10.17487/RFC7662"/>
        </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="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="DID-CORE" target="https://www.w3.org/TR/did-core/">
          <front>
            <title>Decentralized Identifiers (DIDs) v1.0</title>
            <author>
              <organization>W3C</organization>
            </author>
            <date year="2022" month="July" day="19"/>
          </front>
        </reference>
        <reference anchor="ULID" target="https://github.com/ulid/spec">
          <front>
            <title>Universally Unique Lexicographically Sortable Identifier</title>
            <author initials="A." surname="Feerasta" fullname="Alizain Feerasta">
              <organization/>
            </author>
            <date year="2016"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 763?>

<section anchor="comparison-with-oauth-20-extensions">
      <name>Comparison with OAuth 2.0 Extensions</name>
      <t>DAAP shares OAuth 2.0's fundamental grant model but differs in the following respects:</t>
      <t><strong>versus RFC 6749 (OAuth 2.0):</strong>
OAuth 2.0 defines a general-purpose delegated authorization framework. DAAP specializes this for AI agents by: adding cryptographic agent identity (DID); defining agent-specific JWT claims (<tt>agt</tt>, <tt>dev</tt>, <tt>grnt</tt>, <tt>scp</tt>); mandating RS256 exclusively; and adding the delegation, audit, policy, and anomaly detection subsystems.</t>
      <t><strong>versus RFC 8693 (Token Exchange):</strong>
Token Exchange <xref target="RFC8693"/> enables a client to exchange one token for another, including impersonation and delegation use cases. DAAP's delegation model serves a narrower purpose — chaining AI agent sub-authorizations back to a human principal — and adds depth-limiting and cascade revocation semantics not present in RFC 8693.</t>
      <t><strong>versus RFC 7662 (Token Introspection):</strong>
Token Introspection <xref target="RFC7662"/> defines an endpoint for resource servers to query token metadata. DAAP's <tt>/v1/tokens/verify</tt> endpoint serves a similar purpose but returns DAAP-specific fields (<tt>agent</tt>, <tt>principal</tt>, <tt>scopes</tt>) and is used by agent-side SDKs rather than resource servers.</t>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors thank the members of the IETF OAuth Working Group for prior art in delegated authorization, and the W3C Decentralized Identifier Working Group for the DID specification that DAAP builds upon for agent identity.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
boEAAA==

-->

</rfc>
