<?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.30 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-aap-oauth-profile-00" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="AAP for OAuth 2.0">Agent Authorization Profile (AAP) for OAuth 2.0</title>
    <seriesInfo name="Internet-Draft" value="draft-aap-oauth-profile-00"/>
    <author fullname="Angel Cruz">
      <organization>Independent</organization>
      <address>
        <email>bullgram@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="02"/>
    <area>Security</area>
    <workgroup>OAuth Working Group</workgroup>
    <keyword>OAuth</keyword>
    <keyword>JWT</keyword>
    <keyword>AI Agents</keyword>
    <keyword>Authorization</keyword>
    <keyword>Machine-to-Machine</keyword>
    <abstract>
      <?line 58?>

<t>This document defines the Agent Authorization Profile (AAP), an authorization profile for OAuth 2.0 and JWT designed for autonomous AI agents. AAP extends existing standards with structured claims and validation rules so that systems can reason about agent identity, task context, operational constraints, delegation chains, and human oversight requirements. It does not introduce a new protocol; it specifies how to use OAuth 2.0, JWT, Token Exchange, and proof-of-possession mechanisms in agent-to-API (M2M) scenarios with context-aware, auditable authorization.</t>
    </abstract>
  </front>
  <middle>
    <?line 62?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Agent Authorization Profile (AAP) is an authorization profile built on OAuth 2.0 <xref target="RFC6749"/> and JWT <xref target="RFC7519"/>, designed to support secure, auditable, and context-aware authorization for autonomous AI agents. AAP extends existing standards with structured claims and validation rules that allow systems to reason about agent identity, task context, operational constraints, delegation chains, and human oversight requirements.</t>
      <section anchor="problem-statement">
        <name>Problem Statement</name>
        <t>Traditional OAuth-based systems were designed primarily for user-to-application-to-API interactions. Autonomous AI agents introduce different characteristics: actions can be autonomous and high frequency; human approval may not be present at execution time; risk depends on task context; and execution may be delegated across multiple tools or agents. Existing scope-based models are not expressive enough to represent these requirements safely and transparently.</t>
        <section anchor="goals">
          <name>Goals</name>
          <ul spacing="normal">
            <li>
              <t>Provide explicit and verifiable identity for AI agents.</t>
            </li>
            <li>
              <t>Support capability-based authorization with enforceable constraints.</t>
            </li>
            <li>
              <t>Bind access tokens to specific tasks and declared purposes.</t>
            </li>
            <li>
              <t>Enable auditable delegation across agents and tools.</t>
            </li>
            <li>
              <t>Support the expression of human oversight requirements.</t>
            </li>
            <li>
              <t>Remain compatible with OAuth 2.0, JWT, Token Exchange, and proof-of-possession mechanisms.</t>
            </li>
          </ul>
        </section>
        <section anchor="non-goals">
          <name>Non-Goals</name>
          <ul spacing="normal">
            <li>
              <t>Defining internal AI model behavior.</t>
            </li>
            <li>
              <t>Judging the correctness or ethics of agent decisions.</t>
            </li>
            <li>
              <t>Replacing organizational security or compliance frameworks.</t>
            </li>
            <li>
              <t>Standardizing log storage formats or SIEM integrations.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <table>
          <thead>
            <tr>
              <th align="left">Term</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <strong>Agent</strong></td>
              <td align="left">Autonomous software entity (e.g. LLM, bot) that acts as an OAuth client and performs actions on behalf of an operator.</td>
            </tr>
            <tr>
              <td align="left">
                <strong>Authorization Server (AS)</strong></td>
              <td align="left">Server that issues access tokens in accordance with OAuth 2.0 and applies AAP policies.</td>
            </tr>
            <tr>
              <td align="left">
                <strong>Capability</strong></td>
              <td align="left">Permitted action (e.g. <tt>action</tt>) together with its restrictions (<tt>constraints</tt>).</td>
            </tr>
            <tr>
              <td align="left">
                <strong>Delegation</strong></td>
              <td align="left">Transfer of a subset of privileges to another entity (tool or sub-agent) via token exchange or other mechanism.</td>
            </tr>
            <tr>
              <td align="left">
                <strong>Operator</strong></td>
              <td align="left">Organization or human role that registers and authorizes the agent.</td>
            </tr>
            <tr>
              <td align="left">
                <strong>Proof-of-possession (PoP)</strong></td>
              <td align="left">Mechanism by which the client demonstrates possession of a key (e.g. DPoP, mTLS) when using the token.</td>
            </tr>
            <tr>
              <td align="left">
                <strong>Resource Server (RS)</strong></td>
              <td align="left">Server that protects resources and validates AAP tokens before allowing access.</td>
            </tr>
            <tr>
              <td align="left">
                <strong>Task</strong></td>
              <td align="left">Unit of work to which the token is bound (identifier, purpose, sensitivity, etc.).</td>
            </tr>
          </tbody>
        </table>
        <t><strong>AAP token:</strong> An access token issued by an Authorization Server that conforms to this profile and contains AAP claims (e.g. <tt>aap_agent</tt>, <tt>aap_task</tt>, <tt>aap_capabilities</tt>).</t>
        <t><strong>Claim:</strong> A name/value pair in a JWT <xref target="RFC7519"/> payload. AAP defines additional claim names and structures for agent identity, task binding, capabilities, oversight, delegation, context, and audit.</t>
      </section>
      <section anchor="conventions-used-in-this-document">
        <name>Conventions Used in This Document</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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. For conformance: "MUST" and "SHALL" indicate mandatory requirements; "SHOULD" and "RECOMMENDED" indicate recommended but not mandatory behavior; "MAY" and "OPTIONAL" indicate optional behavior.</t>
      </section>
      <section anchor="overview-and-relationship-to-existing-standards">
        <name>Overview and Relationship to Existing Standards</name>
        <t>AAP operates within a standard OAuth architecture consisting of an Authorization Server (AS), Resource Servers (RS), and clients. In AAP, the client is an autonomous AI agent. Token issuance follows OAuth 2.0; typically the Client Credentials Grant <xref target="RFC6749"/> Section 4.4 is used for agent-to-API (M2M) flows. Client (agent) authentication MAY use standard client authentication (client secret, mTLS, etc.) or assertions (e.g. JWT-based client authentication) as per the deployment profile. When the agent is a workload identified by SPIFFE <xref target="SPIFFE"/>, the AS MAY accept SVIDs or derived tokens as part of client authentication; AAP does not define a new flow but MAY integrate with SPIFFE. Tokens issued by the AS include additional structured claims that Resource Servers MUST evaluate before allowing operations.</t>
        <t>AAP does not introduce a new identity or protocol scheme; it reuses existing standards and adds a layer of claims and validation rules.</t>
        <ul spacing="normal">
          <li>
            <t><strong>OAuth 2.0</strong> — AAP uses the standard OAuth flow (AS, RS, client); the client is the agent; tokens are JWTs with additional AAP claims.</t>
          </li>
          <li>
            <t><strong>OpenID Connect</strong> — Agent identity MAY be based on OIDC <tt>sub</tt> and <tt>iss</tt>; AAP adds agent-, task-, and capability-specific claims.</t>
          </li>
          <li>
            <t><strong>mTLS <xref target="RFC8705"/></strong> — RECOMMENDED for proof-of-possession and for agent authentication toward the AS and RS.</t>
          </li>
          <li>
            <t><strong>DPoP <xref target="RFC9449"/></strong> — Alternative to mTLS for proof-of-possession; RECOMMENDED when mTLS is not feasible.</t>
          </li>
          <li>
            <t><strong>SPIFFE</strong> — OPTIONAL; the agent identifier (e.g. in <tt>aap_agent</tt>) MAY be a SPIFFE ID (<tt>spiffe://trust-domain/...</tt>) when the deployment uses SPIFFE/SPIRE for workload identity.</t>
          </li>
          <li>
            <t><strong>Token Exchange <xref target="RFC8693"/></strong> — Used for delegation and for privilege reduction on token re-issuance; the <tt>act</tt> (actor) claim MAY be used in the delegation chain.</t>
          </li>
        </ul>
      </section>
      <section anchor="jwt-claim-schema-aap-profile">
        <name>JWT Claim Schema (AAP Profile)</name>
        <t>AAP tokens extend standard JWT claims <xref target="RFC7519"/> with the following structured sections. To avoid collisions, AAP uses a registered claim namespace; the normative claim names are: <tt>aap_agent</tt>, <tt>aap_task</tt>, <tt>aap_capabilities</tt>, <tt>aap_oversight</tt>, <tt>aap_delegation</tt>, <tt>aap_context</tt>, <tt>aap_audit</tt>.</t>
        <t><strong>Formal Schema:</strong> Complete JSON Schema definitions for all AAP claims are provided in Appendix A and in the <tt>/schemas</tt> directory of the reference implementation. Implementations SHOULD validate tokens against these schemas to ensure conformance.</t>
        <section anchor="claim-semantics">
          <name>Claim Semantics</name>
          <ul spacing="normal">
            <li>
              <t><strong>Agent identity</strong> — MAY be expressed via OIDC <tt>sub</tt> and <tt>iss</tt>, or via the <tt>aap_agent</tt> claim. The <tt>aap_agent</tt> claim MAY contain, among other fields, a SPIFFE ID (<tt>spiffe://trust-domain/...</tt>) when the deployment uses SPIFFE/SPIRE for workload identity.</t>
            </li>
            <li>
              <t><strong>Delegation</strong> — The delegation chain MAY use the standard <tt>act</tt> (actor) claim from <xref target="RFC8693"/>. Optionally, <tt>aap_delegation</tt> MAY carry additional metadata (e.g. depth, origin) when more than <tt>act</tt> is required.</t>
            </li>
            <li>
              <t><strong>Oversight</strong> — Human oversight requirements are expressed as policy metadata in <tt>aap_oversight</tt> (e.g. <tt>requires_approval_for</tt> for certain capability types, or <tt>max_autonomous_scope</tt>). AAP only carries the intent; enforcement is at the Resource Server or orchestrator (e.g. OIDC step-up with <tt>acr_values</tt> or an external approval API), and is out of scope for this profile.</t>
            </li>
            <li>
              <t><strong>Audit</strong> — Trace identifiers in <tt>aap_audit</tt> SHOULD be compatible with existing trace context propagation (e.g. W3C Trace Context, OpenTelemetry <xref target="OpenTelemetry"/>) so that logs can be correlated with distributed traces without defining a new audit schema.</t>
            </li>
          </ul>
        </section>
        <section anchor="structured-sections-claim-names">
          <name>Structured Sections (Claim Names)</name>
          <ul spacing="normal">
            <li>
              <t><tt>aap_agent</tt></t>
            </li>
            <li>
              <t><tt>aap_task</tt></t>
            </li>
            <li>
              <t><tt>aap_capabilities</tt></t>
            </li>
            <li>
              <t><tt>aap_oversight</tt></t>
            </li>
            <li>
              <t><tt>aap_delegation</tt> (and/or <tt>act</tt> per <xref target="RFC8693"/>)</t>
            </li>
            <li>
              <t><tt>aap_context</tt></t>
            </li>
            <li>
              <t><tt>aap_audit</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="example-claim-structures">
          <name>Example Claim Structures</name>
          <t>The following examples illustrate concrete claim shapes. In the profile, these may appear under the normative names above (e.g. <tt>aap_agent</tt> / <tt>agent</tt>). Standard JWT claims (<tt>iss</tt>, <tt>sub</tt>, <tt>aud</tt>, <tt>exp</tt>, <tt>iat</tt>, <tt>jti</tt>) are assumed.</t>
          <t><strong>Agent identity</strong> — Identifies the autonomous agent and its execution context.</t>
          <t><tt>json
{
  "agent": {
    "id": "agent-researcher-01",
    "type": "llm-autonomous",
    "operator": "org:blogcorp",
    "model": {
      "provider": "provider-name",
      "id": "model-id",
      "version": "model-version"
    },
    "runtime": {
      "environment": "kubernetes",
      "attested": true
    }
  }
}
</tt></t>
          <t><strong>Task binding</strong> — Binds the token to a specific task and purpose.</t>
          <t><tt>json
{
  "task": {
    "id": "task-id",
    "purpose": "research_and_draft_article",
    "topic": "example-topic",
    "data_sensitivity": "public",
    "created_by": "user-id"
  }
}
</tt></t>
          <t><strong>Capabilities</strong> — Authorized actions and constraints.</t>
          <t><tt>json
{
  "capabilities": [
    {
      "action": "search.web",
      "constraints": {
        "domains_allowed": ["example.org"],
        "max_requests_per_hour": 50
      }
    },
    {
      "action": "cms.create_draft",
      "constraints": {
        "status": "draft_only"
      }
    }
  ]
}
</tt></t>
          <t><strong>Oversight</strong> — Human approval requirements for certain actions.</t>
          <t><tt>json
{
  "oversight": {
    "requires_human_approval_for": ["cms.publish", "execute.payment"],
    "approval_reference": "policy-id"
  }
}
</tt></t>
          <t><strong>Delegation</strong> — Depth and chain of delegation.</t>
          <t><tt>json
{
  "delegation": {
    "depth": 0,
    "max_depth": 2,
    "chain": ["agent:agent-researcher-01"]
  }
}
</tt></t>
          <t><strong>Context</strong> — Network, time, and geo restrictions.</t>
          <t><tt>json
{
  "context": {
    "network_zone": "public-internet-only",
    "time_window": {
      "start": "ISO-8601",
      "end": "ISO-8601"
    },
    "geo_restriction": "none"
  }
}
</tt></t>
          <t><strong>Audit</strong> — Trace and session identifiers for logging.</t>
          <t><tt>json
{
  "audit": {
    "log_level": "full",
    "trace_id": "trace-id",
    "session_id": "session-id"
  }
}
</tt></t>
        </section>
        <section anchor="complete-example-payload">
          <name>Complete Example Payload</name>
          <t>The following is a single JSON object representing the decoded payload of an AAP access token (claims only; signature and encoding are per RFC 7519). Standard JWT claims and all AAP claims are combined with consistent values (e.g. same <tt>agent.id</tt> and <tt>task.id</tt> referenced in <tt>audit</tt>).</t>
          <t><tt>json
{
  "iss": "https://as.example.com",
  "sub": "agent-researcher-01",
  "aud": "https://api.example.com",
  "exp": 1704067200,
  "iat": 1704063600,
  "jti": "token-unique-id-123",
  "agent": {
    "id": "agent-researcher-01",
    "type": "llm-autonomous",
    "operator": "org:blogcorp",
    "model": {
      "provider": "provider-name",
      "id": "model-id",
      "version": "model-version"
    },
    "runtime": {
      "environment": "kubernetes",
      "attested": true
    }
  },
  "task": {
    "id": "task-id",
    "purpose": "research_and_draft_article",
    "topic": "example-topic",
    "data_sensitivity": "public",
    "created_by": "user-id"
  },
  "capabilities": [
    {
      "action": "search.web",
      "constraints": {
        "domains_allowed": ["example.org"],
        "max_requests_per_hour": 50
      }
    },
    {
      "action": "cms.create_draft",
      "constraints": {
        "status": "draft_only"
      }
    }
  ],
  "oversight": {
    "requires_human_approval_for": ["cms.publish", "execute.payment"],
    "approval_reference": "policy-id"
  },
  "delegation": {
    "depth": 0,
    "max_depth": 2,
    "chain": ["agent:agent-researcher-01"]
  },
  "context": {
    "network_zone": "public-internet-only",
    "time_window": {
      "start": "2024-01-01T00:00:00Z",
      "end": "2024-01-01T23:59:59Z"
    },
    "geo_restriction": "none"
  },
  "audit": {
    "log_level": "full",
    "trace_id": "trace-id",
    "session_id": "session-id"
  }
}
</tt></t>
        </section>
        <section anchor="action-name-grammar-abnf">
          <name>Action Name Grammar (ABNF)</name>
          <t>Action names in the <tt>action</tt> field of capabilities MUST conform to the following ABNF grammar <xref target="RFC5234"/>:</t>
          <t><tt>abnf
action-name = component *( "." component )
component = ALPHA *( ALPHA / DIGIT / "-" / "_" )
</tt></t>
          <t>Where:
- <tt>ALPHA</tt> is any ASCII alphabetic character (a-z, A-Z)
- <tt>DIGIT</tt> is any ASCII digit (0-9)
- Component names MUST start with an alphabetic character
- Component names MAY contain hyphens and underscores after the first character
- Action names are formed by concatenating components with dots (.)</t>
          <t>Examples of valid action names:
- <tt>search.web</tt>
- <tt>cms.create_draft</tt>
- <tt>cms.publish</tt>
- <tt>execute.payment</tt>
- <tt>api.v2.users.read</tt>
- <tt>data-pipeline.transform_records</tt></t>
          <t>Examples of invalid action names:
- <tt>search..web</tt> (double dot)
- <tt>.search.web</tt> (starts with dot)
- <tt>search.web.</tt> (ends with dot)
- <tt>9api.read</tt> (component starts with digit)
- <tt>search.web*</tt> (wildcard not allowed)</t>
          <t><strong>Matching Semantics:</strong></t>
          <t>Resource Servers MUST perform <strong>exact string matching</strong> on action names. Wildcard matching (e.g., <tt>cms.*</tt> matching <tt>cms.publish</tt>) is NOT part of this specification but MAY be defined in future extensions.</t>
          <t>Action names are <strong>case-sensitive</strong>. <tt>search.Web</tt> and <tt>search.web</tt> are different actions.</t>
          <t>Versioning MAY be expressed through namespace components:
- <tt>api.v1.search.web</tt>
- <tt>api.v2.search.web</tt></t>
        </section>
        <section anchor="standard-constraint-types-and-semantics">
          <name>Standard Constraint Types and Semantics</name>
          <t>This section defines the semantics of standard constraint types used within capability constraints. Resource Servers MUST enforce these constraints according to the semantics defined here.</t>
          <t><strong>Constraint Enforcement Semantics:</strong></t>
          <t>When multiple capabilities match the same action:
- <strong>OR semantics</strong>: If ANY capability grants the action, the request is authorized (subject to that capability's constraints)
- Resource Server evaluates capabilities in order and uses the first match</t>
          <t>When multiple constraints exist within a single capability:
- <strong>AND semantics</strong>: ALL constraints MUST be satisfied for the action to be authorized
- If any constraint fails, the entire request MUST be denied</t>
          <section anchor="rate-limiting-constraints">
            <name>Rate Limiting Constraints</name>
            <table>
              <thead>
                <tr>
                  <th align="left">Constraint Name</th>
                  <th align="left">Type</th>
                  <th align="left">Semantics</th>
                  <th align="left">Example</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">
                    <tt>max_requests_per_hour</tt></td>
                  <td align="left">integer</td>
                  <td align="left">Fixed hourly quota. Window resets at minute 0 of each hour (clock hour). Failed requests count toward quota. Retries count as new requests.</td>
                  <td align="left">
                    <tt>50</tt></td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>max_requests_per_minute</tt></td>
                  <td align="left">integer</td>
                  <td align="left">Sliding 60-second window from current request time backwards. Resource Server MUST track request timestamps.</td>
                  <td align="left">
                    <tt>10</tt></td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>max_requests_per_day</tt></td>
                  <td align="left">integer</td>
                  <td align="left">Fixed daily quota. Window resets at 00:00:00 UTC. Failed requests count toward quota.</td>
                  <td align="left">
                    <tt>1000</tt></td>
                </tr>
              </tbody>
            </table>
            <t><strong>Implementation Notes:</strong>
- Rate limits are per token (identified by <tt>jti</tt> claim)
- Resource Servers SHOULD use distributed rate limiting for multi-instance deployments
- On quota exceeded: Resource Server MUST return HTTP 429 with <tt>aap_constraint_violation</tt> error
- Rate limit state SHOULD be cleared when token expires</t>
          </section>
          <section anchor="domain-and-network-constraints">
            <name>Domain and Network Constraints</name>
            <table>
              <thead>
                <tr>
                  <th align="left">Constraint Name</th>
                  <th align="left">Type</th>
                  <th align="left">Semantics</th>
                  <th align="left">Example</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">
                    <tt>domains_allowed</tt></td>
                  <td align="left">array of strings</td>
                  <td align="left">DNS suffix matching (rightmost matching). <tt>subdomain.example.org</tt> matches <tt>example.org</tt> in allowlist. Resource Server MUST extract domain from request target URL and validate.</td>
                  <td align="left">
                    <tt>["example.org", "trusted.com"]</tt></td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>domains_blocked</tt></td>
                  <td align="left">array of strings</td>
                  <td align="left">Blocklist takes precedence over allowlist. If both are present, blocked domains MUST be checked first.</td>
                  <td align="left">
                    <tt>["malicious.com"]</tt></td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>ip_ranges_allowed</tt></td>
                  <td align="left">array of CIDR strings</td>
                  <td align="left">IP ranges in CIDR notation. Resource Server validates destination IP of request.</td>
                  <td align="left">
                    <tt>["192.168.1.0/24"]</tt></td>
                </tr>
              </tbody>
            </table>
            <t><strong>Domain Matching Algorithm:</strong>
              <tt>
1. Extract domain from request target URL
2. If domains_blocked is present and domain matches any blocked entry: DENY
3. If domains_allowed is present:
   a. Check if domain is exact match or has allowed domain as suffix
   b. If match found: ALLOW (proceed to other constraints)
   c. If no match: DENY
4. If neither constraint present: proceed to other constraints
</tt></t>
          </section>
          <section anchor="time-based-constraints">
            <name>Time-Based Constraints</name>
            <table>
              <thead>
                <tr>
                  <th align="left">Constraint Name</th>
                  <th align="left">Type</th>
                  <th align="left">Semantics</th>
                  <th align="left">Example</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">
                    <tt>time_window.start</tt></td>
                  <td align="left">ISO 8601 string</td>
                  <td align="left">Request timestamp MUST be after or equal to this time (inclusive). Resource Server uses its own clock with max 5-minute skew tolerance.</td>
                  <td align="left">
                    <tt>"2024-01-01T00:00:00Z"</tt></td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>time_window.end</tt></td>
                  <td align="left">ISO 8601 string</td>
                  <td align="left">Request timestamp MUST be before this time (exclusive).</td>
                  <td align="left">
                    <tt>"2024-12-31T23:59:59Z"</tt></td>
                </tr>
              </tbody>
            </table>
            <t><strong>Clock Skew Handling:</strong>
- Resource Server clock is authoritative
- Resource Server MAY tolerate up to 5 minutes of clock skew
- If request timestamp is outside window beyond skew tolerance: DENY with <tt>aap_constraint_violation</tt></t>
          </section>
          <section anchor="delegation-constraints">
            <name>Delegation Constraints</name>
            <table>
              <thead>
                <tr>
                  <th align="left">Constraint Name</th>
                  <th align="left">Type</th>
                  <th align="left">Semantics</th>
                  <th align="left">Example</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">
                    <tt>max_depth</tt></td>
                  <td align="left">integer (0-10)</td>
                  <td align="left">Maximum delegation depth for this capability. 0 means no delegation allowed. Resource Server MUST validate <tt>delegation.depth &lt;= max_depth</tt>.</td>
                  <td align="left">
                    <tt>2</tt></td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="data-and-security-constraints">
            <name>Data and Security Constraints</name>
            <table>
              <thead>
                <tr>
                  <th align="left">Constraint Name</th>
                  <th align="left">Type</th>
                  <th align="left">Semantics</th>
                  <th align="left">Example</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">
                    <tt>max_response_size</tt></td>
                  <td align="left">integer</td>
                  <td align="left">Maximum response size in bytes. Resource Server SHOULD enforce during response streaming.</td>
                  <td align="left">
                    <tt>10485760</tt> (10MB)</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>max_request_size</tt></td>
                  <td align="left">integer</td>
                  <td align="left">Maximum request payload size in bytes. Resource Server MUST validate before processing.</td>
                  <td align="left">
                    <tt>1048576</tt> (1MB)</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>data_classification_max</tt></td>
                  <td align="left">enum string</td>
                  <td align="left">Maximum data classification level accessible. Values: <tt>public</tt>, <tt>internal</tt>, <tt>confidential</tt>, <tt>restricted</tt>. Resource Server enforces based on resource classification.</td>
                  <td align="left">
                    <tt>"internal"</tt></td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>allowed_methods</tt></td>
                  <td align="left">array of strings</td>
                  <td align="left">HTTP methods allowed. Resource Server MUST validate request method against this list.</td>
                  <td align="left">
                    <tt>["GET", "POST"]</tt></td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>allowed_regions</tt></td>
                  <td align="left">array of ISO 3166-1 alpha-2 codes</td>
                  <td align="left">Geographic regions where requests are allowed. Resource Server validates based on request origin or target resource location.</td>
                  <td align="left">
                    <tt>["US", "CA", "GB"]</tt></td>
                </tr>
              </tbody>
            </table>
          </section>
        </section>
        <section anchor="delegation-chain-semantics">
          <name>Delegation Chain Semantics</name>
          <t>The <tt>delegation</tt> claim tracks authorization delegation across agents and tools using OAuth Token Exchange <xref target="RFC8693"/>.</t>
          <t><strong>Delegation Depth Calculation:</strong></t>
          <t><tt>
depth = 0: Original agent token (no delegation)
depth = 1: Token obtained via Token Exchange from depth=0 token
depth = n: Token obtained via Token Exchange from depth=n-1 token
</tt></t>
          <t><strong>Authorization Server Requirements:</strong>
- AS MUST increment <tt>delegation.depth</tt> by 1 on each Token Exchange
- AS MUST append the current agent/tool identifier to <tt>delegation.chain</tt> array
- AS MUST copy and preserve <tt>delegation.chain</tt> from parent token
- AS MUST NOT issue token if resulting depth would exceed capability's <tt>max_depth</tt> constraint
- AS MUST NOT issue token if resulting depth exceeds <tt>delegation.max_depth</tt> claim</t>
          <t><strong>Resource Server Requirements:</strong>
- RS MUST reject requests if <tt>delegation.depth &gt; delegation.max_depth</tt>
- RS MUST validate delegation depth against capability-specific <tt>max_depth</tt> constraints
- RS MUST validate that <tt>delegation.chain</tt> length equals <tt>delegation.depth + 1</tt></t>
          <t><strong>Delegation Chain Format:</strong></t>
          <t><tt>json
"delegation": {
  "depth": 2,
  "max_depth": 3,
  "chain": [
    "spiffe://trust.example.com/agent/researcher-01",  // depth=0 (origin)
    "spiffe://trust.example.com/tool/web-scraper",    // depth=1
    "https://as.example.com/agents/translator"        // depth=2 (current)
  ],
  "parent_jti": "parent-token-jti-value"
}
</tt></t>
          <t><strong>Privilege Reduction Requirements:</strong></t>
          <t>When issuing a derived token via Token Exchange, the Authorization Server MUST reduce privileges by one or more of:
- Removing capabilities (subset of parent capabilities)
- Adding stricter constraints (lower rate limits, narrower domain lists)
- Reducing token lifetime (shorter <tt>exp</tt> time)
- Reducing <tt>max_depth</tt> (limit further delegation)</t>
          <t>The Authorization Server MUST NOT grant capabilities not present in the parent token.</t>
          <t><strong>Preventing Confused Deputy Attacks:</strong></t>
          <t>To prevent confused deputy attacks where a delegated token is replayed:
- Each token MUST have a unique <tt>jti</tt> (JWT ID)
- Delegation chain MUST be immutable (copied, never modified)
- Token Exchange MUST record <tt>parent_jti</tt> linking to parent token
- Authorization Server MAY implement token family revocation (revoking parent revokes all descendants)</t>
        </section>
      </section>
      <section anchor="threat-model-summary">
        <name>Threat Model Summary</name>
        <t>AAP assumes environments where autonomous AI agents can access APIs, perform chained actions, and operate for extended periods without direct human intervention. The following threats are in scope; for each, agent-specific risks and AAP mitigations are noted.</t>
        <section anchor="agent-impersonation">
          <name>Agent Impersonation</name>
          <t><strong>Threat:</strong> An attacker obtains agent credentials or steals a token and acts as an authorized agent.</t>
          <t><strong>Agent-specific risk:</strong> An agent may have broad permissions and act many times per minute, amplifying impact.</t>
          <t><strong>Mitigations:</strong> Short-lived tokens; Proof-of-Possession (mTLS or DPoP); attested workload identity when possible; strong agent identity claims (<tt>aap_agent</tt> / <tt>agent.id</tt>, <tt>agent.model</tt>, <tt>runtime.attested</tt>).</t>
        </section>
        <section anchor="capability-escalation">
          <name>Capability Escalation</name>
          <t><strong>Threat:</strong> The agent attempts actions beyond what is authorized (e.g. publish instead of create draft).</t>
          <t><strong>Agent-specific risk:</strong> Agents may generate new strategies or calls not anticipated by the developer.</t>
          <t><strong>Mitigations:</strong> Structured capabilities with constraints (not broad scopes); mandatory validation of action + constraints by the Resource Server; task-bound tokens (<tt>task.purpose</tt>); explicit separation between automatic and human-supervised actions.</t>
        </section>
        <section anchor="purpose-drift">
          <name>Purpose Drift</name>
          <t><strong>Threat:</strong> A token issued for one task is reused for another (e.g. token for “public health research” used for “extracting sensitive data”).</t>
          <t><strong>Mitigations:</strong> Mandatory <tt>task</tt> claim with <tt>purpose</tt>; Resource Servers verify consistency between declared purpose and requested operation; short time windows; reject requests that do not match the declared context.</t>
        </section>
        <section anchor="malicious-or-excessive-delegation">
          <name>Malicious or Excessive Delegation</name>
          <t><strong>Threat:</strong> An agent delegates to tools or sub-agents with more privileges than intended.</t>
          <t><strong>Agent-specific risk:</strong> Agent ecosystems are often modular and chained.</t>
          <t><strong>Mitigations:</strong> OAuth Token Exchange with privilege reduction; <tt>delegation.depth</tt> and <tt>delegation.chain</tt> claims; maximum depth limit (<tt>max_depth</tt>); prohibition of delegation for certain critical capabilities.</t>
        </section>
        <section anchor="large-scale-automated-misuse">
          <name>Large-Scale Automated Misuse</name>
          <t><strong>Threat:</strong> An authorized agent performs valid actions at harmful volume (spam, abusive scraping, mass resource creation).</t>
          <t><strong>Mitigations:</strong> Quantitative constraints in capabilities (<tt>max_requests_per_hour</tt>, etc.); enforced by the Resource Server; monitoring and rapid token revocation; mandatory audit with traceability by task and agent.</t>
        </section>
        <section anchor="prompt-data-injection">
          <name>Prompt / Data Injection</name>
          <t><strong>Threat:</strong> A third party manipulates external data to induce the agent to use its permissions in unwanted ways.</t>
          <t><strong>Note:</strong> AAP does not control the AI model but can limit impact.</t>
          <t><strong>Mitigations:</strong> Tokens bound to specific purpose; restriction of domains, action types, and volumes; separation of read vs. write vs. execute capabilities; human oversight required for high-impact actions.</t>
        </section>
        <section anchor="lack-of-traceability">
          <name>Lack of Traceability</name>
          <t><strong>Threat:</strong> Inability to reconstruct which agent did which action under which authorization.</t>
          <t><strong>Agent-specific risk:</strong> Decisions can be complex and chained.</t>
          <t><strong>Mitigations:</strong> Audit claims (<tt>audit.trace_id</tt>, <tt>task.id</tt>); mandatory propagation of trace identifiers; inclusion of delegation chain in derived tokens.</t>
        </section>
        <section anchor="use-outside-intended-environment">
          <name>Use Outside Intended Environment</name>
          <t><strong>Threat:</strong> A valid token is used from a network, region, or environment other than the one authorized.</t>
          <t><strong>Mitigations:</strong> Context claims (<tt>context.network_zone</tt>, time windows); additional validation by the Resource Server; combination with traditional network controls.</t>
        </section>
        <section anchor="summary">
          <name>Summary</name>
          <t>AAP assumes that agents are potentially powerful and highly automated; risk depends not only on who accesses but on purpose, limits, and delegation chain; authorization MUST be contextual, restricted, and auditable. AAP extends OAuth from a broad-permission model toward verifiable operational contracts between organizations, agents, and services.</t>
        </section>
      </section>
      <section anchor="resource-server-validation-rules">
        <name>Resource Server Validation Rules</name>
        <t>This section defines the validation rules that a Resource Server (RS) MUST apply before accepting a request authenticated with an AAP access token. These rules extend standard OAuth 2.x token validation with agent-specific, task-bound, and capability-aware checks.</t>
        <section anchor="standard-token-validation">
          <name>Standard Token Validation</name>
          <ul spacing="normal">
            <li>
              <t>The RS MUST verify the token signature using trusted Authorization Server keys.</t>
            </li>
            <li>
              <t>The RS MUST verify the token has not expired (<tt>exp</tt> claim) and is within acceptable clock skew.</t>
            </li>
            <li>
              <t>The RS MUST verify the audience (<tt>aud</tt>) matches the Resource Server.</t>
            </li>
            <li>
              <t>The RS MUST verify the issuer (<tt>iss</tt>) is trusted.</t>
            </li>
            <li>
              <t>The RS MUST verify the token has not been revoked if a revocation or introspection mechanism is in place (<xref target="RFC7009"/>, <xref target="RFC7662"/> when introspection is used).</t>
            </li>
          </ul>
        </section>
        <section anchor="proof-of-possession-validation">
          <name>Proof of Possession Validation</name>
          <t>For AAP tokens, proof-of-possession is RECOMMENDED; for high-risk profiles it SHOULD be REQUIRED. Implementations MUST support at least one of: DPoP <xref target="RFC9449"/> or mTLS client authentication <xref target="RFC8705"/>. If mTLS or DPoP is used, the RS MUST validate that the requester demonstrates possession of the key bound to the token. Bearer-only usage is not sufficient for high-risk agent capabilities.</t>
        </section>
        <section anchor="agent-identity-validation">
          <name>Agent Identity Validation</name>
          <ul spacing="normal">
            <li>
              <t>The RS MUST ensure the <tt>agent</tt> (or <tt>aap_agent</tt>) claim is present and well-formed.</t>
            </li>
            <li>
              <t>The RS MUST verify <tt>agent.id</tt> is recognized or allowed by local policy.</t>
            </li>
            <li>
              <t>If present, the RS MUST evaluate <tt>agent.runtime.attested</tt> according to local trust requirements.</t>
            </li>
            <li>
              <t>If model information is included, the RS MUST ensure the model identifier is not on a deny list.</t>
            </li>
          </ul>
        </section>
        <section anchor="task-binding-validation">
          <name>Task Binding Validation</name>
          <ul spacing="normal">
            <li>
              <t>The RS MUST ensure the <tt>task</tt> (or <tt>aap_task</tt>) claim is present for agent-issued tokens.</t>
            </li>
            <li>
              <t>The RS MUST verify the current request is consistent with <tt>task.purpose</tt>.</t>
            </li>
            <li>
              <t>The RS MUST reject requests that clearly fall outside the declared purpose or data sensitivity.</t>
            </li>
            <li>
              <t>The RS MAY enforce that the token is used only within the declared time window.</t>
            </li>
          </ul>
        </section>
        <section anchor="capability-enforcement">
          <name>Capability Enforcement</name>
          <t>The Resource Server MUST treat the <tt>capabilities</tt> (or <tt>aap_capabilities</tt>) claim as the authoritative source of permitted actions.</t>
          <ul spacing="normal">
            <li>
              <t>The RS MUST match the requested operation to a <tt>capability.action</tt> entry.</t>
            </li>
            <li>
              <t>The RS MUST enforce all constraints associated with the matching capability.</t>
            </li>
            <li>
              <t>The RS MUST deny the request if no matching capability is found.</t>
            </li>
            <li>
              <t>The RS MUST apply quantitative limits such as rate limits or volume caps defined in constraints.</t>
            </li>
          </ul>
        </section>
        <section anchor="oversight-requirement-enforcement">
          <name>Oversight Requirement Enforcement</name>
          <ul spacing="normal">
            <li>
              <t>If the requested action appears in <tt>oversight.requires_human_approval_for</tt> (or equivalent in <tt>aap_oversight</tt>), the RS MUST NOT complete the action automatically.</t>
            </li>
            <li>
              <t>The RS SHOULD return a response indicating that human approval is required.</t>
            </li>
            <li>
              <t>The RS MAY provide a reference to the approval workflow indicated by <tt>approval_reference</tt>.</t>
            </li>
          </ul>
        </section>
        <section anchor="delegation-chain-validation">
          <name>Delegation Chain Validation</name>
          <ul spacing="normal">
            <li>
              <t>If a <tt>delegation</tt> (or <tt>aap_delegation</tt>) claim is present, the RS MUST verify that <tt>delegation.depth</tt> does not exceed local policy limits.</t>
            </li>
            <li>
              <t>The RS MUST inspect <tt>delegation.chain</tt> to understand upstream actors.</t>
            </li>
            <li>
              <t>The RS SHOULD apply stricter policy if the chain includes untrusted or unknown actors.</t>
            </li>
            <li>
              <t>The RS MUST ensure delegated tokens do not contain broader capabilities than the original agent token.</t>
            </li>
          </ul>
        </section>
        <section anchor="contextual-restrictions-enforcement">
          <name>Contextual Restrictions Enforcement</name>
          <ul spacing="normal">
            <li>
              <t>If <tt>context.network_zone</tt> is present, the RS MUST verify the request originates from an allowed environment when technically feasible.</t>
            </li>
            <li>
              <t>The RS MUST enforce time window constraints if <tt>context.time_window</tt> is present.</t>
            </li>
            <li>
              <t>The RS MUST apply additional checks for geo or network restrictions when provided.</t>
            </li>
          </ul>
        </section>
        <section anchor="audit-and-trace-propagation">
          <name>Audit and Trace Propagation</name>
          <ul spacing="normal">
            <li>
              <t>The RS MUST extract <tt>audit.trace_id</tt> and propagate it to internal logs.</t>
            </li>
            <li>
              <t>The RS MUST log <tt>agent.id</tt>, <tt>task.id</tt>, action performed, and authorization decision outcome.</t>
            </li>
            <li>
              <t>The RS MUST ensure logs are protected against tampering according to organizational policy.</t>
            </li>
          </ul>
        </section>
        <section anchor="failure-handling">
          <name>Failure Handling</name>
          <ul spacing="normal">
            <li>
              <t>If any mandatory validation step fails, the RS MUST deny the request.</t>
            </li>
            <li>
              <t>Error responses SHOULD avoid leaking sensitive authorization details.</t>
            </li>
            <li>
              <t>Repeated violations MAY trigger rate limiting or temporary blocking of the agent identity.</t>
            </li>
          </ul>
          <t><strong>Error responses:</strong> On validation failure, the RS SHOULD respond with HTTP 403 Forbidden when the token is valid but the request is not authorized (e.g. capability mismatch, task inconsistency, oversight required). Use HTTP 401 Unauthorized when the token is invalid, expired, or missing (per OAuth 2.0 practice, e.g. <xref target="RFC6750"/>). The response body SHOULD follow a structure such as <tt>error</tt> and optional <tt>error_description</tt> (e.g. RFC 6749 / RFC 6750 style) without revealing internal authorization details—e.g. use generic error codes such as <tt>insufficient_scope</tt> or <tt>invalid_request</tt> rather than describing the specific rule that failed (e.g. avoid “capability X not in token”). Avoid including in <tt>error_description</tt> the exact authorization rule that failed, so as not to leak information to an attacker.</t>
        </section>
      </section>
      <section anchor="authorization-server-requirements">
        <name>Authorization Server Requirements</name>
        <t>This section defines the requirements that an Authorization Server (AS) MUST satisfy to issue AAP access tokens. These extend standard OAuth 2.0 token issuance with agent-specific binding, capabilities, and audit.</t>
        <section anchor="authentication">
          <name>Authentication</name>
          <ul spacing="normal">
            <li>
              <t>Strongly authenticate agents before issuing tokens (e.g. Client Credentials Grant per RFC 6749 Section 4.4).</t>
            </li>
            <li>
              <t>Support client authentication via client secret, mTLS, or assertions (e.g. JWT-based client authentication) as per the deployment profile.</t>
            </li>
            <li>
              <t>Optionally integrate with SPIFFE SVIDs when the agent is a workload identified by SPIFFE <xref target="SPIFFE"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="token-binding">
          <name>Token Binding</name>
          <ul spacing="normal">
            <li>
              <t>Bind issued tokens to a specific task and declared purpose.</t>
            </li>
            <li>
              <t>Include task identifier and purpose in the token so that Resource Servers can verify request consistency.</t>
            </li>
          </ul>
        </section>
        <section anchor="capabilities-and-constraints">
          <name>Capabilities and Constraints</name>
          <ul spacing="normal">
            <li>
              <t>Embed in the token only capabilities and constraints authorized by AS policy for the agent and task.</t>
            </li>
            <li>
              <t>Do not issue tokens with broader capabilities than the operator has authorized for the given task.</t>
            </li>
          </ul>
        </section>
        <section anchor="token-lifetime">
          <name>Token Lifetime</name>
          <ul spacing="normal">
            <li>
              <t>Limit token lifetimes according to risk level (e.g. shorter for high-impact or high-frequency use).</t>
            </li>
            <li>
              <t>Apply policy-based rules for expiration and acceptable clock skew.</t>
            </li>
          </ul>
        </section>
        <section anchor="token-exchange">
          <name>Token Exchange</name>
          <ul spacing="normal">
            <li>
              <t>Support token exchange per <xref target="RFC8693"/> when delegation or privilege reduction is required.</t>
            </li>
            <li>
              <t>Enforce reduction of privileges when mapping <tt>subject_token</tt> to <tt>issued_token</tt> (e.g. subset of <tt>aap_capabilities</tt>); mapping rules are AS policy.</t>
            </li>
            <li>
              <t>Use the <tt>act</tt> (actor) claim when building delegation chains as per RFC 8693.</t>
            </li>
          </ul>
        </section>
        <section anchor="revocation">
          <name>Revocation</name>
          <ul spacing="normal">
            <li>
              <t>Support rapid revocation per <xref target="RFC7009"/> (Token Revocation) and/or RFC 7662 (Introspection) as appropriate to the deployment.</t>
            </li>
            <li>
              <t>Ensure Resource Servers can check revocation status when policy requires it (e.g. via introspection endpoint or revocation list).</t>
            </li>
          </ul>
        </section>
        <section anchor="proof-of-possession">
          <name>Proof-of-Possession</name>
          <ul spacing="normal">
            <li>
              <t>For AAP tokens, support at least one of DPoP <xref target="RFC9449"/> or mTLS <xref target="RFC8705"/> when the profile requires proof-of-possession.</t>
            </li>
            <li>
              <t>Issue tokens that indicate PoP binding when the client has demonstrated key possession during the token request.</t>
            </li>
          </ul>
        </section>
        <section anchor="audit">
          <name>Audit</name>
          <ul spacing="normal">
            <li>
              <t>Record issuance events (agent identity, task, capabilities granted, timestamp) for audit and traceability.</t>
            </li>
            <li>
              <t>Support correlation with trace identifiers included in the token (<tt>aap_audit</tt> / <tt>audit</tt>) where applicable.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="example-high-level-flow">
        <name>Example High-Level Flow</name>
        <ol spacing="normal" type="1"><li>
            <t>An operator defines allowed capabilities and policies for an agent.</t>
          </li>
          <li>
            <t>The agent authenticates with the Authorization Server (e.g. Client Credentials Grant).</t>
          </li>
          <li>
            <t>The agent requests a task-bound access token; optional token exchange (RFC 8693) for delegation or privilege reduction.</t>
          </li>
          <li>
            <t>The Authorization Server issues a JWT containing AAP claims.</t>
          </li>
          <li>
            <t>The agent calls Resource Servers using the token (with DPoP or mTLS when proof-of-possession is required).</t>
          </li>
          <li>
            <t>Resource Servers validate the token and enforce capabilities and constraints.</t>
          </li>
          <li>
            <t>All actions are logged with trace identifiers for audit.</t>
          </li>
        </ol>
      </section>
      <section anchor="extensibility">
        <name>Extensibility</name>
        <t>AAP is designed as a profile and allows additional claims or constraints to be defined by industry groups or organizations, provided they do not weaken core validation requirements.</t>
      </section>
      <section anchor="conformance">
        <name>Conformance</name>
        <t>A conforming implementation satisfies the requirements of this profile for its role (Authorization Server or Resource Server).</t>
        <ul spacing="normal">
          <li>
            <t><strong>Authorization Server:</strong> A conforming AS MUST satisfy all requirements in Section 8 (Authorization Server Requirements). It MUST issue tokens that include the AAP claims required by the deployment profile and MUST support proof-of-possession (DPoP and/or mTLS) when the profile requires it. It SHOULD support token exchange <xref target="RFC8693"/> and revocation <xref target="RFC7662">RFC7009</xref> as appropriate.</t>
          </li>
          <li>
            <t><strong>Resource Server:</strong> A conforming RS MUST apply all rules in Section 7 (Resource Server Validation Rules) (standard token validation, proof-of-possession when required, agent identity, task binding, capability enforcement, oversight, delegation chain, contextual restrictions, audit and trace propagation, failure handling). It MUST deny requests when any mandatory validation step fails and MUST NOT leak sensitive authorization details in error responses.</t>
          </li>
          <li>
            <t>A conforming implementation MAY support additional claims or options provided they do not weaken the requirements above.</t>
          </li>
        </ul>
      </section>
      <section anchor="security-considerations">
        <name>Security Considerations</name>
        <t>This section addresses security considerations specific to AAP beyond those covered in OAuth 2.0 Security Best Current Practice and related standards.</t>
        <section anchor="cryptographic-algorithms-and-key-management">
          <name>Cryptographic Algorithms and Key Management</name>
          <t><strong>Token Signing (REQUIRED):</strong></t>
          <t>Authorization Servers MUST sign AAP tokens using asymmetric cryptography. The following algorithms are REQUIRED:</t>
          <ul spacing="normal">
            <li>
              <t><strong>ES256</strong> (ECDSA with P-256 curve and SHA-256): RECOMMENDED for new deployments
              </t>
              <ul spacing="normal">
                <li>
                  <t>Provides 128-bit security level</t>
                </li>
                <li>
                  <t>Smaller signatures than RSA</t>
                </li>
                <li>
                  <t>Fast signature verification</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>RS256</strong> (RSA with SHA-256): REQUIRED for backward compatibility
              </t>
              <ul spacing="normal">
                <li>
                  <t>Minimum 2048-bit RSA keys</t>
                </li>
                <li>
                  <t>3072-bit or 4096-bit RSA keys RECOMMENDED for long-lived keys or high-security environments</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>Authorization Servers MUST NOT use symmetric algorithms (HS256) for production AAP tokens, as symmetric keys require sharing between AS and RS, which increases key exposure risk.</t>
          <t><strong>Proof-of-Possession Algorithms:</strong></t>
          <t>When using DPoP <xref target="RFC9449"/>:
- Agents MUST use ES256 for DPoP proof generation
- RS256 MAY be supported for legacy clients
- DPoP proof lifetime SHOULD be short (maximum 60 seconds)</t>
          <t>When using mTLS <xref target="RFC8705"/>:
- TLS 1.3 REQUIRED; TLS 1.2 MAY be supported with restricted cipher suites
- Cipher suites: ECDHE_ECDSA or ECDHE_RSA with AES_GCM
- Client certificates MUST be validated against trusted CA or certificate pinning</t>
          <t><strong>Key Sizes:</strong></t>
          <table>
            <thead>
              <tr>
                <th align="left">Key Type</th>
                <th align="left">Minimum</th>
                <th align="left">Recommended</th>
                <th align="left">Security Level</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">RSA</td>
                <td align="left">2048-bit</td>
                <td align="left">3072-bit</td>
                <td align="left">~112-bit / ~128-bit</td>
              </tr>
              <tr>
                <td align="left">ECDSA</td>
                <td align="left">P-256</td>
                <td align="left">P-384</td>
                <td align="left">128-bit / 192-bit</td>
              </tr>
              <tr>
                <td align="left">Symmetric (client secrets)</td>
                <td align="left">128-bit entropy</td>
                <td align="left">256-bit entropy</td>
                <td align="left">128-bit / 256-bit</td>
              </tr>
            </tbody>
          </table>
          <t><strong>Key Rotation:</strong></t>
          <ul spacing="normal">
            <li>
              <t>AS signing keys SHOULD be rotated every 90 days</t>
            </li>
            <li>
              <t>Previous keys MUST be retained for token validation during overlap period (RECOMMENDED: 24 hours after rotation)</t>
            </li>
            <li>
              <t>Resource Servers MUST support validation with multiple concurrent AS public keys</t>
            </li>
            <li>
              <t>Key rotation MUST be coordinated via JWKS (JSON Web Key Set) endpoint <xref target="RFC7517"/></t>
            </li>
          </ul>
          <t><strong>Key Storage:</strong></t>
          <ul spacing="normal">
            <li>
              <t>Authorization Server private signing keys MUST be stored in Hardware Security Modules (HSM) or equivalent secure key management services for production deployments</t>
            </li>
            <li>
              <t>Agent client credentials (secrets, private keys) SHOULD be stored in secure vaults (e.g., HashiCorp Vault, cloud KMS)</t>
            </li>
            <li>
              <t>Keys MUST NOT be logged, included in error messages, or transmitted over insecure channels</t>
            </li>
          </ul>
        </section>
        <section anchor="proof-of-possession-requirements">
          <name>Proof-of-Possession Requirements</name>
          <t><strong>Risk Assessment:</strong></t>
          <t>Bearer tokens (tokens without proof-of-possession) present elevated risk for autonomous agents due to:
- High request rates amplify impact of stolen tokens
- Agents may operate unattended for extended periods
- Token theft from agent memory or logs enables replay attacks</t>
          <t><strong>Deployment Profiles:</strong></t>
          <t>AAP defines three security profiles for proof-of-possession:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Profile</th>
                <th align="left">PoP Requirement</th>
                <th align="left">Use Case</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <strong>Strict</strong></td>
                <td align="left">REQUIRED (mTLS or DPoP)</td>
                <td align="left">Production systems, confidential data, high-risk capabilities</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Standard</strong></td>
                <td align="left">RECOMMENDED</td>
                <td align="left">Development, internal tools, low-risk capabilities</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Legacy</strong></td>
                <td align="left">OPTIONAL</td>
                <td align="left">Migration scenarios, backward compatibility</td>
              </tr>
            </tbody>
          </table>
          <t><strong>Profile Selection Criteria:</strong></t>
          <t>Proof-of-Possession SHOULD be REQUIRED when any of the following apply:
- Capability includes <tt>data_classification_max &gt;= "confidential"</tt>
- Capability includes write, delete, or execute actions
- <tt>oversight.level &gt;= "approval"</tt>
- Token lifetime &gt; 1 hour
- Agent accesses resources in different trust domains</t>
          <t><strong>Token Binding (cnf claim):</strong></t>
          <t>When PoP is used, tokens MUST include the <tt>cnf</tt> (confirmation) claim <xref target="RFC7800"/>:</t>
          <t>For DPoP:
<tt>json
"cnf": {
  "jkt": "0ZcOCORZNYy-DWpqq30jZyJGHTN0d2HglBV3uiguA4I"
}
</tt></t>
          <t>For mTLS:
<tt>json
"cnf": {
  "x5t#S256": "bwcK0esc3ACC3DB2Y5_lESsXE8o9ltc05O89jdN-dg"
}
</tt></t>
          <t>Resource Servers MUST validate the proof matches the <tt>cnf</tt> claim before accepting the token.</t>
        </section>
        <section anchor="token-lifetime-and-revocation">
          <name>Token Lifetime and Revocation</name>
          <t><strong>Token Lifetime Guidelines:</strong></t>
          <table>
            <thead>
              <tr>
                <th align="left">Capability Risk Level</th>
                <th align="left">Recommended Lifetime</th>
                <th align="left">Maximum Lifetime</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Read-only, public data</td>
                <td align="left">60 minutes</td>
                <td align="left">120 minutes</td>
              </tr>
              <tr>
                <td align="left">Read-only, internal data</td>
                <td align="left">30 minutes</td>
                <td align="left">60 minutes</td>
              </tr>
              <tr>
                <td align="left">Write, low-risk</td>
                <td align="left">15 minutes</td>
                <td align="left">30 minutes</td>
              </tr>
              <tr>
                <td align="left">Write, high-risk</td>
                <td align="left">5 minutes</td>
                <td align="left">15 minutes</td>
              </tr>
              <tr>
                <td align="left">Execute, delete</td>
                <td align="left">5 minutes</td>
                <td align="left">10 minutes</td>
              </tr>
            </tbody>
          </table>
          <t>Token lifetime SHOULD be reduced for:
- Derived tokens (via Token Exchange): 50% of parent lifetime
- Tokens with high delegation depth: Reduce by 25% per depth level
- Tokens without proof-of-possession: 50% of normal lifetime</t>
          <t><strong>Revocation Requirements:</strong></t>
          <t>Authorization Servers MUST support token revocation via one or both of:
- <strong>Revocation endpoint</strong> <xref target="RFC7009"/>: Agent or operator can revoke token
- <strong>Token introspection</strong> <xref target="RFC7662"/>: RS queries AS for token validity</t>
          <t><strong>Rapid Revocation:</strong></t>
          <t>For the purposes of this specification, "rapid revocation" is defined as:
- Maximum 60 seconds from revocation request to enforcement by all Resource Servers
- Authorization Server MUST distribute revocation events to Resource Servers within 30 seconds
- Resource Server MUST apply revocation updates within 30 seconds of receipt</t>
          <t><strong>Revocation Distribution:</strong></t>
          <t>For multi-RS deployments, AS SHOULD use:
- Push-based revocation (AS pushes to RS) rather than pull-based (RS polls AS)
- Revocation event stream (e.g., Server-Sent Events, WebSockets, message queue)
- Fallback to token introspection if revocation list fails to propagate</t>
          <t><strong>Token Family Revocation:</strong></t>
          <t>When a token is revoked:
- Authorization Server MAY revoke all descendant tokens (derived via Token Exchange)
- This is achieved by tracking <tt>parent_jti</tt> linkage
- Token family revocation enhances security but requires AS to maintain token graph</t>
        </section>
        <section anchor="constraint-enforcement">
          <name>Constraint Enforcement</name>
          <t><strong>Server-Side Enforcement (REQUIRED):</strong></t>
          <t>All capability constraints MUST be enforced by the Resource Server, NOT trusted to agent logic. Agents are potentially adversarial; they may attempt to bypass constraints.</t>
          <t><strong>Rate Limiting in Distributed Systems:</strong></t>
          <t>For Resource Servers deployed across multiple instances:
- Rate limits MUST be enforced consistently across all instances
- Use distributed rate limiting (e.g., Redis, shared counter service)
- Accept eventual consistency with conservative limits (deny when uncertain)</t>
          <t><strong>Constraint Validation Failures:</strong></t>
          <t>When a constraint is violated, Resource Server MUST:
- Return HTTP 403 (Forbidden) or 429 (Too Many Requests) as appropriate
- Include error code <tt>aap_constraint_violation</tt> in response
- Log violation event with <tt>agent.id</tt>, <tt>task.id</tt>, violated constraint
- NOT return details of constraint values in error response (privacy)</t>
        </section>
        <section anchor="delegation-security">
          <name>Delegation Security</name>
          <t><strong>Privilege Reduction (REQUIRED):</strong></t>
          <t>When issuing derived tokens via Token Exchange <xref target="RFC8693"/>, the Authorization Server MUST reduce privileges by one or more of:
- <strong>Capability removal</strong>: Subset of parent capabilities only
- <strong>Constraint tightening</strong>: Lower rate limits, narrower domain lists, shorter time windows
- <strong>Lifetime reduction</strong>: Shorter <tt>exp</tt> time than parent token
- <strong>Depth limit reduction</strong>: Lower <tt>max_depth</tt> to limit further delegation</t>
          <t>The Authorization Server MUST NOT grant capabilities not present in the parent token. "Privilege escalation via delegation" MUST be prevented.</t>
          <t><strong>Delegation Depth Enforcement:</strong></t>
          <t>Both Authorization Server and Resource Server MUST enforce delegation depth limits:
- AS MUST NOT issue token if resulting <tt>delegation.depth</tt> would exceed <tt>delegation.max_depth</tt>
- RS MUST reject requests if <tt>delegation.depth &gt; delegation.max_depth</tt>
- Defense-in-depth: Both layers validate to prevent bypass</t>
          <t><strong>Confused Deputy Prevention:</strong></t>
          <t>To prevent confused deputy attacks where delegation chains are replayed:
- Each token MUST have unique <tt>jti</tt> (JWT ID)
- Derived tokens MUST include <tt>delegation.parent_jti</tt> linking to parent token
- AS MUST validate parent token exists and is not expired/revoked before issuing derived token
- Delegation chain MUST be immutable (copied and appended, never modified by client)</t>
        </section>
        <section anchor="human-oversight-enforcement">
          <name>Human Oversight Enforcement</name>
          <t><strong>Approval Workflow Security:</strong></t>
          <t>When <tt>oversight.requires_human_approval_for</tt> includes an action:
- Resource Server MUST NOT execute action automatically
- RS MUST return HTTP 403 with error code <tt>aap_approval_required</tt>
- Response SHOULD include <tt>approval_reference</tt> URL for requesting approval
- Approval mechanism is out of scope for AAP but may use OIDC step-up authentication, external workflow systems, etc.</t>
          <t><strong>Approval Bypass Prevention:</strong></t>
          <ul spacing="normal">
            <li>
              <t>Approval requirement is in token (signed by AS), not in request (untrusted)</t>
            </li>
            <li>
              <t>Agent cannot bypass approval by modifying request headers</t>
            </li>
            <li>
              <t>Resource Server MUST validate oversight claim before execution</t>
            </li>
          </ul>
        </section>
        <section anchor="authorization-server-security">
          <name>Authorization Server Security</name>
          <t><strong>AS as Critical Component:</strong></t>
          <t>The Authorization Server is a critical security component. Compromise of the AS enables arbitrary token minting.</t>
          <t><strong>AS Hardening Requirements:</strong></t>
          <ul spacing="normal">
            <li>
              <t>Minimal software installation (reduce attack surface)</t>
            </li>
            <li>
              <t>Regular security patching (OS, libraries, dependencies)</t>
            </li>
            <li>
              <t>Network isolation (AS should not be internet-accessible if possible; use API gateway)</t>
            </li>
            <li>
              <t>Access control (admin access requires MFA, logging)</t>
            </li>
            <li>
              <t>Monitoring (detect anomalous token issuance patterns)</t>
            </li>
          </ul>
          <t><strong>Token Issuance Monitoring:</strong></t>
          <t>Authorization Server SHOULD monitor and alert on:
- Sudden increase in token issuance rate (possible compromise)
- Tokens with unusual capability combinations (possible policy bypass)
- Tokens issued to unknown agents (possible credential theft)
- Issuance outside normal business hours (possible unauthorized access)</t>
        </section>
        <section anchor="resource-server-security">
          <name>Resource Server Security</name>
          <t><strong>Input Validation:</strong></t>
          <t>Resource Servers MUST validate:
- Token signature with trusted AS public key
- Token expiration (<tt>exp</tt>) with acceptable clock skew (RECOMMENDED: ≤5 minutes)
- Audience (<tt>aud</tt>) matches Resource Server identifier
- Agent identity (<tt>agent.id</tt>) is recognized or allowed by policy
- All constraints in matching capability</t>
          <t><strong>Error Handling (Privacy-Preserving):</strong></t>
          <t>Resource Servers MUST NOT leak authorization details in error responses:</t>
          <t><strong>Bad</strong> (leaks constraint values):
<tt>json
{
  "error": "aap_constraint_violation",
  "error_description": "Rate limit exceeded: 51 requests when max is 50"
}
</tt></t>
          <t><strong>Good</strong> (privacy-preserving):
<tt>json
{
  "error": "aap_constraint_violation",
  "error_description": "Request violates capability constraints"
}
</tt></t>
          <t>Detailed violation information SHOULD be logged server-side for audit, not returned to client.</t>
        </section>
        <section anchor="additional-security-considerations">
          <name>Additional Security Considerations</name>
          <t><strong>Token Logging:</strong></t>
          <ul spacing="normal">
            <li>
              <t>Tokens MUST NOT be logged in plaintext in application logs</t>
            </li>
            <li>
              <t>Use token redaction in logging libraries (replace with hash or truncated value)</t>
            </li>
            <li>
              <t>If logging is necessary for debugging, use separate secure audit log with strict access control</t>
            </li>
          </ul>
          <t><strong>Clock Skew:</strong></t>
          <ul spacing="normal">
            <li>
              <t>Resource Servers SHOULD tolerate up to 5 minutes of clock skew for <tt>exp</tt> and <tt>nbf</tt> validation</t>
            </li>
            <li>
              <t>Skew tolerance MUST NOT exceed 5 minutes (to limit window for expired token use)</t>
            </li>
            <li>
              <t>Organizations SHOULD use NTP or equivalent for clock synchronization</t>
            </li>
          </ul>
          <t><strong>Compliance Considerations:</strong></t>
          <t>AAP enables compliance with regulations requiring:
- Explicit authorization (GDPR Article 6)
- Purpose limitation (GDPR Article 5)
- Audit trails (SOC 2, ISO 27001, HIPAA)
- Access controls (PCI-DSS, FedRAMP)</t>
          <t>However, AAP alone is not sufficient for compliance; organizational policies, procedures, and controls are also required.</t>
        </section>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>AAP tokens and audit logs may contain information that could identify agents, organizations, individuals, or sensitive operational details. This section provides guidance on privacy protection in AAP implementations.</t>
        <section anchor="personal-data-in-aap-tokens">
          <name>Personal Data in AAP Tokens</name>
          <t>AAP tokens MAY contain personal data under GDPR, CCPA, and similar privacy regulations:</t>
          <t><strong>Potentially Personal Claims:</strong>
- <tt>agent.operator</tt>: Organization identifier (may be personal if sole proprietor or individual developer)
- <tt>task.created_by</tt>: User ID who initiated the task
- <tt>task.purpose</tt>: May contain user-identifying details if not carefully crafted
- <tt>audit.trace_id</tt>: Potentially correlatable across requests (tracking)
- <tt>delegation.chain</tt>: Reveals agent interaction patterns and organizational structure
- <tt>context.location</tt>: Geographic location information</t>
          <t><strong>Data Controller and Processor:</strong>
- Authorization Server operator is typically the data controller for token claims
- Resource Server operators are data processors when validating tokens
- Delegation across organizations may create complex controller/processor relationships</t>
        </section>
        <section anchor="data-minimization-principles">
          <name>Data Minimization Principles</name>
          <t>Implementations SHOULD apply the principle of data minimization [GDPR Article 5(1)(c)]:</t>
          <t><strong>Guideline: Include Only What Is Necessary</strong></t>
          <table>
            <thead>
              <tr>
                <th align="left">Claim</th>
                <th align="left">Privacy-Preserving Approach</th>
                <th align="left">Privacy-Risky Approach</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>agent.id</tt></td>
                <td align="left">Use pseudonymous ID: <tt>urn:uuid:550e8400-...</tt></td>
                <td align="left">Use descriptive name: <tt>agent-for-alice@example.com</tt></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>task.id</tt></td>
                <td align="left">Use UUID: <tt>550e8400-e29b-41d4-...</tt></td>
                <td align="left">Use descriptive ID: <tt>task-research-for-alice-project-secret</tt></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>task.purpose</tt></td>
                <td align="left">Use category: <tt>research</tt> or <tt>content-creation</tt></td>
                <td align="left">Use full description: <tt>Research climate data for Alice's PhD thesis on...</tt></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>task.created_by</tt></td>
                <td align="left">Use pseudonymous ID: <tt>user:u123456</tt></td>
                <td align="left">Use email: <tt>alice.smith@example.com</tt></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>audit.trace_id</tt></td>
                <td align="left">Use per-task UUID (rotated)</td>
                <td align="left">Use stable agent-wide ID (enables long-term correlation)</td>
              </tr>
            </tbody>
          </table>
          <t><strong>Unnecessary Claims SHOULD Be Omitted:</strong>
- Don't include <tt>agent.name</tt> if <tt>agent.id</tt> is sufficient for authorization
- Don't include <tt>task.metadata</tt> unless necessary for constraint enforcement
- Don't include <tt>context.location.ip_address</tt> unless geofencing is required</t>
        </section>
        <section anchor="retention-and-lifecycle">
          <name>Retention and Lifecycle</name>
          <t><strong>Token Retention:</strong>
- Tokens expire per <tt>exp</tt> claim (typically minutes to hours)
- Expired tokens SHOULD be immediately discarded by agents
- Tokens SHOULD NOT be persisted to disk (memory-only storage)</t>
          <t><strong>Audit Log Retention:</strong>
- Audit logs SHOULD follow organizational retention policy
- Minimum retention: As required by compliance framework (e.g., SOC 2: 1 year)
- Maximum retention: Only as long as necessary for audit and investigation
- After retention period: Logs MUST be securely deleted or anonymized</t>
          <t><strong>Delegation Chain Retention:</strong>
- Delegation chains SHOULD NOT be retained in logs beyond audit window
- When logging delegation events, consider hashing agent IDs rather than storing plaintext</t>
          <t><strong>Right to Erasure (GDPR Article 17):</strong>
- If <tt>task.created_by</tt> contains personal data, organizations MUST support erasure requests
- Consider using pseudonymous IDs that can be de-linked from personal data
- Audit logs may be exempt from erasure if required for legal compliance; consult legal counsel</t>
        </section>
        <section anchor="cross-domain-correlation">
          <name>Cross-Domain Correlation</name>
          <t><strong>Threat:</strong> Malicious Resource Servers in different organizations could correlate requests across services using stable identifiers in AAP tokens (e.g., <tt>audit.trace_id</tt>, <tt>agent.id</tt>).</t>
          <t><strong>Impact:</strong>
- Agent behavior profiling (what capabilities, what resources, what patterns)
- Competitive intelligence (infer agent strategies from request patterns)
- Privacy violation (correlate agent activity across unrelated services)</t>
          <t><strong>Mitigations:</strong></t>
          <t><strong>Trace ID Rotation (REQUIRED for Cross-Domain):</strong>
- When token audience changes trust domain, generate new <tt>audit.trace_id</tt>
- Example: Token for <tt>api.example.com</tt> has <tt>trace_id: abc123</tt>; delegated token for <tt>external-service.org</tt> has <tt>trace_id: xyz789</tt>
- Correlation within single organization preserved; cross-organization correlation prevented</t>
          <t><strong>Domain-Specific Agent IDs:</strong>
- Use different <tt>agent.id</tt> per Resource Server trust domain
- Example: Agent presents <tt>agent:internal-001</tt> to internal APIs, <tt>agent:partner-facing-alpha</tt> to partner APIs
- Authorization Server maintains mapping; Resource Servers see domain-specific IDs</t>
          <t><strong>Minimize Identifiable Information in Delegated Tokens:</strong>
- When delegating to external tool, remove non-essential claims
- Example: Strip <tt>task.created_by</tt>, <tt>context.location</tt> when crossing trust boundary
- Token Exchange request SHOULD specify <tt>required_claims</tt> (minimal set)</t>
          <t><strong>Trace ID Scope Claim (RECOMMENDED):</strong>
            <tt>json
"audit": {
  "trace_id": "550e8400-e29b-41d4-a716-446655440000",
  "trace_id_scope": "task"  // or "session", "agent", "domain"
}
</tt></t>
          <t>This signals the intended correlation boundary:
- <tt>task</tt>: Trace ID unique per task (rotated between tasks)
- <tt>session</tt>: Trace ID unique per agent session (rotated on agent restart)
- <tt>agent</tt>: Trace ID stable for agent lifetime (enables long-term correlation; privacy-risky)
- <tt>domain</tt>: Trace ID unique per trust domain (rotated when crossing domains)</t>
        </section>
        <section anchor="privacy-preserving-error-messages">
          <name>Privacy-Preserving Error Messages</name>
          <t>Resource Servers MUST NOT leak authorization details in error responses that could enable privacy violations or capability profiling.</t>
          <t><strong>Avoid:</strong>
- "Agent does not have capability 'delete.data'" (reveals capabilities)
- "Rate limit: 51 requests, max allowed 50" (reveals constraint values)
- "Domain blocked: malicious.com is in blocklist" (reveals policy details)
- "Task purpose 'research for Alice' does not match action 'publish'" (reveals task details)</t>
          <t><strong>Prefer:</strong>
- "Insufficient permissions" (generic, privacy-preserving)
- "Request violates capability constraints" (doesn't specify which constraint)
- "Authorization failed" (minimal information disclosure)</t>
          <t><strong>Detailed Error Information:</strong>
- Log server-side with full details (for audit and debugging)
- Include error correlation ID in response for support tickets
- Client can reference correlation ID when contacting support; support team accesses server logs</t>
          <t><strong>Example Privacy-Preserving Error Response:</strong>
            <tt>json
{
  "error": "insufficient_permissions",
  "error_description": "The request could not be authorized",
  "error_correlation_id": "err-550e8400-e29b-41d4-a716-446655440000"
}
</tt></t>
          <t>Server log (not returned to client):
<tt>json
{
  "error_correlation_id": "err-550e8400-e29b-41d4-a716-446655440000",
  "error": "aap_constraint_violation",
  "constraint_violated": "domains_allowed",
  "requested_domain": "malicious.com",
  "allowed_domains": ["example.org"],
  "agent_id": "agent-researcher-01",
  "task_id": "task-12345",
  "timestamp": "2024-01-01T12:00:00Z"
}
</tt></t>
        </section>
        <section anchor="anonymization-and-pseudonymization">
          <name>Anonymization and Pseudonymization</name>
          <t><strong>Pseudonymization (GDPR Article 4(5)):</strong></t>
          <t>Pseudonymization is the processing of personal data such that it can no longer be attributed to a specific data subject without additional information (kept separately and secured).</t>
          <t><strong>AAP Pseudonymization Techniques:</strong></t>
          <table>
            <thead>
              <tr>
                <th align="left">Data Type</th>
                <th align="left">Pseudonymization Approach</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">User IDs (<tt>task.created_by</tt>)</td>
                <td align="left">Use UUID mapped to real user ID in separate database</td>
              </tr>
              <tr>
                <td align="left">Agent names</td>
                <td align="left">Use <tt>agent:0001</tt> instead of <tt>agent-for-alice</tt></td>
              </tr>
              <tr>
                <td align="left">Task purposes</td>
                <td align="left">Use task category codes instead of free-text descriptions</td>
              </tr>
              <tr>
                <td align="left">Trace IDs</td>
                <td align="left">Use cryptographic hash of (user ID + task ID + salt)</td>
              </tr>
            </tbody>
          </table>
          <t><strong>Anonymization (Irreversible):</strong></t>
          <t>For audit logs past retention period:
- Replace <tt>agent.id</tt> with hash (if agent identity no longer needed)
- Remove <tt>task.created_by</tt> entirely
- Aggregate statistics (e.g., "1000 requests by research agents") instead of individual records</t>
        </section>
        <section anchor="consent-and-transparency">
          <name>Consent and Transparency</name>
          <t><strong>Agent Operator Transparency:</strong></t>
          <t>When an agent acts on behalf of a human user:
- User SHOULD be informed that an agent will perform actions
- User SHOULD be shown the task purpose and capabilities granted
- User SHOULD be able to review and revoke agent authorizations</t>
          <t><strong>Example User Notification:</strong>
```
Your request to "research climate change impacts" has been assigned to an AI agent.</t>
          <t>The agent will be able to:
- Search web resources from example.org (max 50 requests/hour)
- Create draft articles in the CMS</t>
          <t>The agent will NOT be able to:
- Publish articles (requires your approval)
- Access data outside example.org
- Perform actions unrelated to research</t>
          <t>You can revoke this authorization at any time in your account settings.
```</t>
          <t><strong>Token Transparency:</strong></t>
          <t>For compliance with transparency requirements (GDPR Article 13-14):
- Organizations SHOULD document what claims are included in AAP tokens
- Organizations SHOULD inform users when their actions trigger agent authorization
- Organizations SHOULD provide access to audit logs (subject to security and legal constraints)</t>
        </section>
        <section anchor="third-party-tool-privacy">
          <name>Third-Party Tool Privacy</name>
          <t>When delegating to third-party tools (external organizations):</t>
          <t><strong>Data Sharing Agreement:</strong>
- Delegation to external tool constitutes data sharing
- Organizations SHOULD have data processing agreements (DPAs) with tool providers
- Token Exchange to external AS SHOULD trigger data sharing notification/consent</t>
          <t><strong>Claim Filtering:</strong>
- Authorization Server SHOULD filter claims when delegating to external tool
- Remove non-essential claims: <tt>task.created_by</tt>, <tt>agent.operator</tt> internal details
- Retain only authorization-essential claims: <tt>capabilities</tt>, <tt>delegation.depth</tt></t>
          <t><strong>Example Filtered Delegation:</strong></t>
          <t>Original token (internal):
<tt>json
{
  "agent": {"id": "agent-001", "operator": "org:acme-corp"},
  "task": {"id": "task-123", "purpose": "research", "created_by": "user:alice"},
  "capabilities": [{"action": "search.web"}]
}
</tt></t>
          <t>Delegated token (external tool):
<tt>json
{
  "agent": {"id": "delegated-from:acme-corp", "operator": "org:acme-corp"},
  "task": {"id": "task-123-external", "purpose": "research"},
  // "created_by" removed for privacy
  "capabilities": [{"action": "search.web", "constraints": {"domains_allowed": ["example.org"]}}],
  "delegation": {"depth": 1, "chain": ["agent-001", "external-tool"]}
}
</tt></t>
        </section>
        <section anchor="privacy-by-design-recommendations">
          <name>Privacy by Design Recommendations</name>
          <t><strong>For Authorization Server Implementations:</strong></t>
          <ol spacing="normal" type="1"><li>
              <t>Default to short trace ID rotation (per-task, not per-agent)</t>
            </li>
            <li>
              <t>Provide configuration options for privacy levels (minimal, standard, full disclosure)</t>
            </li>
            <li>
              <t>Support claim filtering on Token Exchange</t>
            </li>
            <li>
              <t>Log privacy-impacting events (cross-domain delegation, long trace ID retention)</t>
            </li>
          </ol>
          <t><strong>For Resource Server Implementations:</strong></t>
          <ol spacing="normal" type="1"><li>
              <t>Never log tokens in plaintext</t>
            </li>
            <li>
              <t>Redact personal data in error responses</t>
            </li>
            <li>
              <t>Provide audit log access controls (only authorized personnel)</t>
            </li>
            <li>
              <t>Support audit log anonymization after retention period</t>
            </li>
          </ol>
          <t><strong>For Agent Implementations:</strong></t>
          <ol spacing="normal" type="1"><li>
              <t>Request minimal capabilities (least privilege reduces privacy risk)</t>
            </li>
            <li>
              <t>Specify minimal <tt>required_claims</tt> on Token Exchange</t>
            </li>
            <li>
              <t>Rotate trace IDs when crossing trust boundaries</t>
            </li>
            <li>
              <t>Discard tokens immediately upon expiration (don't cache expired tokens)</t>
            </li>
          </ol>
        </section>
        <section anchor="regulatory-compliance-guidance">
          <name>Regulatory Compliance Guidance</name>
          <t><strong>GDPR Compliance:</strong>
- AAP supports GDPR principles: purpose limitation (task binding), data minimization (constrained capabilities), accountability (audit logs)
- Organizations MUST implement additional controls: consent management, data subject rights, DPIAs</t>
          <t><strong>CCPA Compliance:</strong>
- AAP audit logs may constitute "personal information" if they identify consumers
- Organizations MUST support consumer rights: access, deletion, opt-out of sale
- Consider using pseudonymous IDs to reduce CCPA applicability</t>
          <t><strong>HIPAA Compliance (Healthcare):</strong>
- AAP tokens accessing Protected Health Information (PHI) MUST use proof-of-possession
- Audit logs MUST meet HIPAA retention requirements (6 years)
- Delegation chains provide required access audit trail</t>
          <t><strong>Note:</strong> AAP is an authorization protocol, not a complete privacy framework. Organizations MUST implement privacy policies, procedures, and controls beyond AAP technical mechanisms.</t>
        </section>
      </section>
      <section anchor="iana-considerations">
        <name>IANA Considerations</name>
        <t>This document has no IANA actions. If in the future the AAP claim names (<tt>aap_agent</tt>, <tt>aap_task</tt>, <tt>aap_capabilities</tt>, <tt>aap_oversight</tt>, <tt>aap_delegation</tt>, <tt>aap_context</tt>, <tt>aap_audit</tt>) are registered in the "JSON Web Token Claims Registry" as defined in <xref target="RFC7519"/>, the required registration procedure would be followed.</t>
      </section>
      <section anchor="related-work-and-comparison">
        <name>Related Work and Comparison</name>
        <t>This section positions AAP within the broader ecosystem of authorization, access control, and identity systems. AAP is designed to complement and extend existing standards rather than replace them.</t>
        <section anchor="oauth-20-scopes">
          <name>OAuth 2.0 Scopes</name>
          <t>Traditional OAuth 2.0 scopes <xref target="RFC6749"/> provide coarse-grained authorization through simple string tokens (e.g., <tt>read:articles</tt>, <tt>write:cms</tt>). While effective for user-delegated access, scopes have limitations for autonomous agent scenarios:</t>
          <t><strong>OAuth Scopes Characteristics:</strong>
- Simple string-based permissions
- No built-in constraint mechanism
- No task context binding
- No delegation tracking
- Limited expressiveness for complex policies</t>
          <t><strong>AAP Enhancements:</strong>
- <strong>Structured capabilities</strong>: Actions (<tt>search.web</tt>) with typed, enforceable constraints (<tt>max_requests_per_hour: 50</tt>, <tt>domains_allowed: ["example.org"]</tt>)
- <strong>Task binding</strong>: Scopes don't express purpose or context; AAP tokens bind authorization to specific tasks with declared purposes
- <strong>Delegation chains</strong>: OAuth has no built-in delegation tracking; AAP provides <tt>delegation.depth</tt> and <tt>delegation.chain</tt> for auditable multi-hop authorization
- <strong>Operational limits</strong>: Scopes are binary (granted/not granted); AAP constraints enable quantitative limits (rate, volume, time windows)</t>
          <t><strong>Comparison Example:</strong></t>
          <table>
            <thead>
              <tr>
                <th align="left">Scenario</th>
                <th align="left">OAuth Scope Approach</th>
                <th align="left">AAP Approach</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Research agent web scraping</td>
                <td align="left">
                  <tt>scope=read:web</tt> (grants unlimited web access)</td>
                <td align="left">
                  <tt>capabilities: [{"action": "search.web", "constraints": {"domains_allowed": ["example.org"], "max_requests_per_hour": 50}}]</tt></td>
              </tr>
              <tr>
                <td align="left">Content creation with approval</td>
                <td align="left">
                  <tt>scope=write:cms</tt> (cannot distinguish draft vs. publish)</td>
                <td align="left">
                  <tt>capabilities: [{"action": "cms.create_draft"}]</tt> with <tt>oversight: {"requires_human_approval_for": ["cms.publish"]}</tt></td>
              </tr>
              <tr>
                <td align="left">Delegated tool calls</td>
                <td align="left">Requires new OAuth flow per delegation</td>
                <td align="left">Token Exchange with automatic <tt>delegation.depth</tt> increment and privilege reduction</td>
              </tr>
            </tbody>
          </table>
          <t><strong>Compatibility:</strong> AAP maintains backward compatibility by optionally including OAuth <tt>scope</tt> claim alongside AAP capabilities.</t>
        </section>
        <section anchor="fine-grained-authorization-systems-zanzibar-rebac">
          <name>Fine-Grained Authorization Systems (Zanzibar, ReBAC)</name>
          <t>Google Zanzibar and Relation-Based Access Control (ReBAC) systems focus on resource-level permissions with global consistency ("user X can read document Y based on relationship graph").</t>
          <t><strong>Zanzibar/ReBAC Characteristics:</strong>
- Resource-centric authorization
- Graph-based relationship evaluation
- Highly scalable, globally consistent
- Focus: "Who can access what resource?"</t>
          <t><strong>AAP Focus:</strong>
- Agent-centric authorization
- Task context and operational constraints
- Delegation chain tracking
- Focus: "What can this agent do, under what conditions, for what purpose?"</t>
          <t><strong>Complementary Use:</strong> AAP and Zanzibar address different layers:
- <strong>AAP</strong>: Authorizes the agent to call APIs, binds actions to tasks, enforces operational limits
- <strong>Zanzibar</strong>: Determines whether the agent (once authorized) can access specific resources</t>
          <t><strong>Integration Pattern:</strong>
            <tt>
1. Agent presents AAP token to API (capability: "document.read")
2. API validates AAP token (RS validation)
3. API calls Zanzibar to check if agent can read specific document
4. Both checks must pass for request to succeed
</tt></t>
        </section>
        <section anchor="cloud-identity-and-access-management">
          <name>Cloud Identity and Access Management</name>
          <t>Major cloud providers offer identity and temporary credential systems:</t>
          <t><strong>AWS Security Token Service (STS):</strong>
- Cross-account delegation with session policies
- Temporary credentials with limited lifetime
- AssumeRole for privilege escalation/reduction
- IAM policies define permissions</t>
          <t><strong>GCP Workload Identity:</strong>
- Kubernetes ServiceAccount federation to GCP IAM
- Workload identity binding for containerized applications
- OAuth 2.0-based token exchange</t>
          <t><strong>AAP Differences:</strong>
- <strong>Vendor-neutral</strong>: AAP is not tied to a specific cloud provider
- <strong>Agent-specific claims</strong>: <tt>agent.model</tt>, <tt>task.purpose</tt>, <tt>oversight</tt> requirements not present in cloud IAM
- <strong>Explicit delegation tracking</strong>: Cloud IAM tracks roles/sessions but not multi-hop agent delegation chains
- <strong>Task binding</strong>: Cloud credentials are session-bound, not task-bound</t>
          <t><strong>Integration:</strong> AAP can be used as a policy enforcement layer above cloud IAM. For example:
- AAP token authorizes agent for a task
- Agent exchanges AAP token for cloud-specific credentials (AWS STS, GCP token)
- Cloud IAM enforces resource-level permissions</t>
        </section>
        <section anchor="service-mesh-authorization-istio-linkerd">
          <name>Service Mesh Authorization (Istio, Linkerd)</name>
          <t>Service meshes provide network-level security with mutual TLS and Layer 7 policies:</t>
          <t><strong>Service Mesh Capabilities:</strong>
- mTLS for service-to-service encryption
- SPIFFE/SPIRE for workload identity
- Authorization policies based on service identity
- Network-level request routing and policy enforcement</t>
          <t><strong>AAP Capabilities:</strong>
- Application-level agent identity with model and operator metadata
- Task semantics and purpose binding
- Business logic constraints (rate limits, domain allowlists, approval workflows)
- Delegation chain for multi-agent workflows</t>
          <t><strong>Complementary Layers:</strong></t>
          <table>
            <thead>
              <tr>
                <th align="left">Layer</th>
                <th align="left">Technology</th>
                <th align="left">What It Provides</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Network (L4/L7)</td>
                <td align="left">Service Mesh</td>
                <td align="left">Identity (SPIFFE), mTLS, service-to-service authz</td>
              </tr>
              <tr>
                <td align="left">Application</td>
                <td align="left">AAP</td>
                <td align="left">Agent identity, task binding, capability constraints, oversight</td>
              </tr>
            </tbody>
          </table>
          <t><strong>Integration:</strong>
- Use SPIFFE IDs in AAP <tt>agent.id</tt> claim
- Service mesh enforces network policy ("can agent reach API?")
- AAP enforces business logic ("can agent perform this action with these constraints?")</t>
        </section>
        <section anchor="capability-based-security">
          <name>Capability-Based Security</name>
          <t>AAP uses the term "capability" from classic capability-based security literature (Dennis &amp; Van Horn 1966, Levy 1984):</t>
          <t><strong>Classic Capability Systems:</strong>
- Unforgeable tokens (capabilities) that grant access to specific objects
- Capabilities combine authority and designation
- No ambient authority (no ACLs checked at access time)
- Pure object-capability model (E language, seL4 microkernel)</t>
          <t><strong>AAP Capabilities:</strong>
- Structured claims in signed JWTs representing permissions
- Combine action designation (<tt>search.web</tt>) with constraints
- Rely on centralized Authorization Server (not pure capability model)
- Inherit unforgeability from JWT signature (not object references)</t>
          <t><strong>Key Difference:</strong> AAP is not a pure object-capability system. It uses centralized issuance (AS) and validation (RS) rather than distributed capability passing. However, AAP borrows the principle of <strong>least authority</strong>: each capability explicitly states what is allowed and under what constraints, rather than checking ambient permissions.</t>
        </section>
        <section anchor="openid-connect-and-step-up-authentication">
          <name>OpenID Connect and Step-Up Authentication</name>
          <t>OpenID Connect (OIDC) <xref target="OIDC"/> provides identity claims and authentication strength signaling:</t>
          <t><strong>OIDC Capabilities:</strong>
- User identity claims (<tt>sub</tt>, <tt>email</tt>, <tt>name</tt>)
- Authentication context (<tt>acr</tt>, <tt>amr</tt> claims)
- Step-up authentication via <tt>acr_values</tt> parameter
- ID tokens separate from access tokens</t>
          <t><strong>AAP Capabilities:</strong>
- Agent identity (non-human, autonomous software)
- Task binding and operational constraints
- Oversight requirements signal when human approval needed
- Access tokens include both identity and authorization</t>
          <t><strong>Overlap:</strong> Both use JWT and OAuth 2.0 foundation.</t>
          <t><strong>Integration:</strong>
- AAP <tt>oversight.requires_human_approval_for</tt> can trigger OIDC step-up authentication
- Resource Server can request user approval via OIDC interaction, using <tt>acr_values</tt> for higher assurance
- Human supervisor identified in <tt>oversight.supervisor</tt> can authenticate via OIDC</t>
        </section>
        <section anchor="oauth-20-rich-authorization-requests-rar">
          <name>OAuth 2.0 Rich Authorization Requests (RAR)</name>
          <t>Rich Authorization Requests [draft-ietf-oauth-rar] extend OAuth to support complex authorization requirements beyond simple scopes.</t>
          <t><strong>RAR Features:</strong>
- Structured authorization details in JSON
- Request-specific authorization (e.g., payment with amount)
- Detailed, fine-grained permissions</t>
          <t><strong>AAP vs. RAR:</strong>
- <strong>RAR</strong>: Request-time authorization details sent by client
- <strong>AAP</strong>: Token-time structured claims issued by AS, enforced by RS
- <strong>RAR</strong>: Focuses on authorization request
- <strong>AAP</strong>: Focuses on token structure and enforcement</t>
          <t><strong>Complementary:</strong> RAR can be used to request AAP capabilities. Client sends RAR with desired capabilities; AS issues AAP token with granted capabilities.</t>
        </section>
        <section anchor="summary-where-aap-fits">
          <name>Summary: Where AAP Fits</name>
          <t>AAP occupies a unique position in the authorization ecosystem:</t>
          <table>
            <thead>
              <tr>
                <th align="left">System</th>
                <th align="left">Focus</th>
                <th align="left">AAP Relationship</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">OAuth Scopes</td>
                <td align="left">Coarse-grained API access</td>
                <td align="left">AAP extends with structured capabilities</td>
              </tr>
              <tr>
                <td align="left">Zanzibar/ReBAC</td>
                <td align="left">Resource-level permissions</td>
                <td align="left">AAP handles agent/task layer; Zanzibar handles resource layer</td>
              </tr>
              <tr>
                <td align="left">Cloud IAM</td>
                <td align="left">Cloud resource access</td>
                <td align="left">AAP is vendor-neutral layer; can integrate with cloud IAM</td>
              </tr>
              <tr>
                <td align="left">Service Mesh</td>
                <td align="left">Network-level security</td>
                <td align="left">AAP adds application-level semantics (task, constraints)</td>
              </tr>
              <tr>
                <td align="left">OIDC</td>
                <td align="left">User identity</td>
                <td align="left">AAP focuses on agent identity; integrates for human oversight</td>
              </tr>
              <tr>
                <td align="left">RAR</td>
                <td align="left">Authorization requests</td>
                <td align="left">AAP defines token structure; RAR can request AAP capabilities</td>
              </tr>
            </tbody>
          </table>
          <t><strong>AAP is designed for scenarios where:</strong>
- The client is an autonomous AI agent (not a human user)
- Actions must be bound to explicit tasks with declared purposes
- Authorization requires operational constraints (rate limits, domain restrictions, time windows)
- Delegation chains must be tracked and auditable
- Human oversight is required for high-risk actions
- Standard OAuth scopes are insufficient for expressing agent policies</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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="RFC6749" target="https://www.rfc-editor.org/info/rfc6749" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml">
          <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" target="https://www.rfc-editor.org/info/rfc6750" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6750.xml">
          <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="RFC7519" target="https://www.rfc-editor.org/info/rfc7519" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
          <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="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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="RFC8693" target="https://www.rfc-editor.org/info/rfc8693" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8693.xml">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </reference>
        <reference anchor="RFC8705" target="https://www.rfc-editor.org/info/rfc8705" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8705.xml">
          <front>
            <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8705"/>
          <seriesInfo name="DOI" value="10.17487/RFC8705"/>
        </reference>
        <reference anchor="RFC9449" target="https://www.rfc-editor.org/info/rfc9449" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9449.xml">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC5234" target="https://www.rfc-editor.org/info/rfc5234" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC7009" target="https://www.rfc-editor.org/info/rfc7009" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7009.xml">
          <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="RFC7517" target="https://www.rfc-editor.org/info/rfc7517" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7517.xml">
          <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="RFC7662" target="https://www.rfc-editor.org/info/rfc7662" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7662.xml">
          <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="RFC7800" target="https://www.rfc-editor.org/info/rfc7800" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7800.xml">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="OIDC" target="https://openid.net/specs/openid-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0</title>
            <author>
              <organization>OpenID Foundation</organization>
            </author>
            <date year="2014"/>
          </front>
        </reference>
        <reference anchor="SPIFFE" target="https://spiffe.io">
          <front>
            <title>SPIFFE: Secure Production Identity Framework for Everyone</title>
            <author>
              <organization>SPIFFE</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="OpenTelemetry" target="https://opentelemetry.io">
          <front>
            <title>OpenTelemetry</title>
            <author>
              <organization>CNCF</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1500?>

<section anchor="a-complete-json-schema-reference">
      <name>A: Complete JSON Schema Reference</name>
      <t>This appendix provides links to the complete JSON Schema definitions for AAP tokens. These schemas are normative and MUST be used for validation in conforming implementations.</t>
      <section anchor="a1-schema-files">
        <name>A.1. Schema Files</name>
        <t>All schemas are available in the <tt>/schemas</tt> directory of the reference implementation repository:</t>
        <ul spacing="normal">
          <li>
            <t><strong>aap-token.schema.json</strong> - Root schema for complete AAP token payload
            </t>
            <ul spacing="normal">
              <li>
                <t>Validates all required standard JWT claims (<tt>iss</tt>, <tt>sub</tt>, <tt>aud</tt>, <tt>exp</tt>, <tt>iat</tt>)</t>
              </li>
              <li>
                <t>Validates all required AAP claims (<tt>agent</tt>, <tt>task</tt>, <tt>capabilities</tt>)</t>
              </li>
              <li>
                <t>Validates optional AAP claims (<tt>oversight</tt>, <tt>delegation</tt>, <tt>context</tt>, <tt>audit</tt>)</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>aap-agent.schema.json</strong> - Schema for <tt>agent</tt> claim
            </t>
            <ul spacing="normal">
              <li>
                <t>Validates agent identity structure</t>
              </li>
              <li>
                <t>Required fields: <tt>id</tt>, <tt>type</tt>, <tt>operator</tt></t>
              </li>
              <li>
                <t>Optional fields: <tt>name</tt>, <tt>version</tt>, <tt>model</tt>, <tt>runtime</tt>, <tt>certification</tt></t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>aap-task.schema.json</strong> - Schema for <tt>task</tt> claim
            </t>
            <ul spacing="normal">
              <li>
                <t>Validates task binding structure</t>
              </li>
              <li>
                <t>Required fields: <tt>id</tt>, <tt>purpose</tt></t>
              </li>
              <li>
                <t>Optional fields: <tt>created_by</tt>, <tt>created_at</tt>, <tt>expires_at</tt>, <tt>priority</tt>, <tt>category</tt></t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>aap-capabilities.schema.json</strong> - Schema for <tt>capabilities</tt> array
            </t>
            <ul spacing="normal">
              <li>
                <t>Validates capability structure</t>
              </li>
              <li>
                <t>Each capability requires <tt>action</tt> field (validated against ABNF grammar via regex)</t>
              </li>
              <li>
                <t>Optional <tt>constraints</tt>, <tt>resources</tt>, <tt>conditions</tt> fields</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>aap-constraints.schema.json</strong> - Schema for constraint objects
            </t>
            <ul spacing="normal">
              <li>
                <t>Defines all standard constraint types with validation rules</t>
              </li>
              <li>
                <t>Includes type definitions for rate limits, domain lists, time windows, etc.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>aap-oversight.schema.json</strong> - Schema for <tt>oversight</tt> claim
            </t>
            <ul spacing="normal">
              <li>
                <t>Validates human oversight requirements</t>
              </li>
              <li>
                <t>Includes <tt>requires_human_approval_for</tt> array, <tt>approval_reference</tt>, etc.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>aap-delegation.schema.json</strong> - Schema for <tt>delegation</tt> claim
            </t>
            <ul spacing="normal">
              <li>
                <t>Validates delegation chain structure</t>
              </li>
              <li>
                <t>Required fields: <tt>depth</tt>, <tt>max_depth</tt></t>
              </li>
              <li>
                <t>Optional fields: <tt>chain</tt>, <tt>parent_jti</tt>, <tt>privilege_reduction</tt></t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>aap-context.schema.json</strong> - Schema for <tt>context</tt> claim
            </t>
            <ul spacing="normal">
              <li>
                <t>Validates execution context information</t>
              </li>
              <li>
                <t>Includes environment, location, runtime, session details</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>aap-audit.schema.json</strong> - Schema for <tt>audit</tt> claim
            </t>
            <ul spacing="normal">
              <li>
                <t>Validates audit and logging requirements</t>
              </li>
              <li>
                <t>Required field: <tt>trace_id</tt></t>
              </li>
              <li>
                <t>Optional fields: <tt>log_level</tt>, <tt>retention_period</tt>, <tt>compliance_framework</tt></t>
              </li>
            </ul>
          </li>
        </ul>
        <section anchor="a2-using-the-schemas">
          <name>A.2. Using the Schemas</name>
          <t><strong>JSON Schema Version:</strong> All schemas use JSON Schema Draft 2020-12.</t>
          <t><strong>Validation Example (Node.js with Ajv):</strong></t>
          <t>```javascript
const Ajv = require('ajv');
const addFormats = require('ajv-formats');</t>
          <t>const ajv = new Ajv();
addFormats(ajv);</t>
          <t>// Load all schemas
const schemas = {
  token: require('./schemas/aap-token.schema.json'),
  agent: require('./schemas/aap-agent.schema.json'),
  task: require('./schemas/aap-task.schema.json'),
  // ... load other schemas
};</t>
          <t>// Add referenced schemas
ajv.addSchema(schemas.agent);
ajv.addSchema(schemas.task);
// ... add other schemas</t>
          <t>// Validate token
const validate = ajv.compile(schemas.token);
const valid = validate(decodedJWT);</t>
          <t>if (!valid) {
  console.error('Validation errors:', validate.errors);
}
```</t>
          <t><strong>Validation Example (Python with jsonschema):</strong></t>
          <t>```python
import jsonschema
import json</t>
        </section>
      </section>
    </section>
    <section anchor="load-schemas">
      <name>Load schemas</name>
      <t>with open('schemas/aap-token.schema.json') as f:
    token_schema = json.load(f)</t>
    </section>
    <section anchor="create-resolver-for-ref">
      <name>Create resolver for $ref</name>
      <t>store = {}
for schema_file in ['aap-agent.schema.json', 'aap-task.schema.json', ...]:
    with open(f'schemas/{schema_file}') as f:
        store[schema_file] = json.load(f)</t>
      <t>resolver = jsonschema.RefResolver.from_schema(token_schema, store=store)</t>
    </section>
    <section anchor="validate">
      <name>Validate</name>
      <t>try:
    jsonschema.validate(decoded_jwt, token_schema, resolver=resolver)
    print("Token is valid")
except jsonschema.ValidationError as e:
    print(f"Validation error: {e.message}")
```</t>
      <section anchor="a3-schema-updates">
        <name>A.3. Schema Updates</name>
        <t>When the AAP specification is updated:
- Schema version will be incremented in the <tt>$id</tt> field
- Breaking changes will trigger new major version
- Non-breaking additions (new optional fields) will increment minor version
- Implementations SHOULD validate against the schema version matching the specification version</t>
      </section>
    </section>
    <section anchor="b-token-exchange-flow-example">
      <name>B: Token Exchange Flow Example</name>
      <t>This appendix provides a detailed example of OAuth 2.0 Token Exchange <xref target="RFC8693"/> for AAP delegation scenarios.</t>
      <section anchor="b1-scenario">
        <name>B.1. Scenario</name>
        <t>A research agent (Agent A) needs to delegate web scraping capability to a specialized tool (Tool B):</t>
        <ul spacing="normal">
          <li>
            <t><strong>Original agent:</strong> <tt>agent-researcher-01</tt> (depth=0)</t>
          </li>
          <li>
            <t><strong>Delegated tool:</strong> <tt>tool-web-scraper</tt> (depth=1)</t>
          </li>
          <li>
            <t><strong>Capability reduction:</strong> Remove <tt>cms.create_draft</tt>, keep only <tt>search.web</tt> with tighter constraints</t>
          </li>
          <li>
            <t><strong>Lifetime reduction:</strong> Original token: 3600s, derived token: 1800s</t>
          </li>
        </ul>
        <section anchor="b2-step-1-agent-obtains-original-token">
          <name>B.2. Step 1: Agent Obtains Original Token</name>
          <t><strong>Request to Authorization Server:</strong></t>
          <t>```http
POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded</t>
          <t>grant_type=client_credentials
&amp;client_id=agent-researcher-01
&amp;client_secret=[SECRET]
&amp;scope=aap:research
```</t>
          <t><strong>Authorization Server Response:</strong></t>
          <t><tt>json
{
  "access_token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2FzLmV4YW1wbGUuY29tIiwic3ViIjoiYWdlbnQtcmVzZWFyY2hlci0wMSIsImF1ZCI6Imh0dHBzOi8vYXBpLmV4YW1wbGUuY29tIiwiZXhwIjoxNzA0MDY3MjAwLCJpYXQiOjE3MDQwNjM2MDAsImp0aSI6InRva2VuLW9yaWdpbmFsLTEyMyIsImFnZW50Ijp7ImlkIjoiYWdlbnQtcmVzZWFyY2hlci0wMSIsInR5cGUiOiJsbG0tYXV0b25vbW91cyIsIm9wZXJhdG9yIjoib3JnOmFjbWUtY29ycCJ9LCJ0YXNrIjp7ImlkIjoidGFzay0xMjMiLCJwdXJwb3NlIjoicmVzZWFyY2hfY2xpbWF0ZV9kYXRhIn0sImNhcGFiaWxpdGllcyI6W3siYWN0aW9uIjoic2VhcmNoLndlYiIsImNvbnN0cmFpbnRzIjp7ImRvbWFpbnNfYWxsb3dlZCI6WyJleGFtcGxlLm9yZyIsInRydXN0ZWQuY29tIl0sIm1heF9yZXF1ZXN0c19wZXJfaG91ciI6MTAwfX0seyJhY3Rpb24iOiJjbXMuY3JlYXRlX2RyYWZ0In1dLCJkZWxlZ2F0aW9uIjp7ImRlcHRoIjowLCJtYXhfZGVwdGgiOjIsImNoYWluIjpbImFnZW50LXJlc2VhcmNoZXItMDEiXX19.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "aap:research"
}
</tt></t>
          <t><strong>Decoded Token Payload (Original):</strong></t>
          <t><tt>json
{
  "iss": "https://as.example.com",
  "sub": "agent-researcher-01",
  "aud": "https://api.example.com",
  "exp": 1704067200,
  "iat": 1704063600,
  "jti": "token-original-123",
  "agent": {
    "id": "agent-researcher-01",
    "type": "llm-autonomous",
    "operator": "org:acme-corp"
  },
  "task": {
    "id": "task-123",
    "purpose": "research_climate_data"
  },
  "capabilities": [
    {
      "action": "search.web",
      "constraints": {
        "domains_allowed": ["example.org", "trusted.com"],
        "max_requests_per_hour": 100
      }
    },
    {
      "action": "cms.create_draft"
    }
  ],
  "delegation": {
    "depth": 0,
    "max_depth": 2,
    "chain": ["agent-researcher-01"]
  }
}
</tt></t>
        </section>
        <section anchor="b3-step-2-agent-exchanges-token-for-tool-specific-token">
          <name>B.3. Step 2: Agent Exchanges Token for Tool-Specific Token</name>
          <t><strong>Token Exchange Request:</strong></t>
          <t>```http
POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded</t>
          <t>grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&amp;subject_token=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOi...
&amp;subject_token_type=urn:ietf:params:oauth:token-type:access_token
&amp;resource=https://tool-scraper.example.com
&amp;scope=aap:research.scraping
&amp;requested_token_type=urn:ietf:params:oauth:token-type:access_token
```</t>
          <t><strong>Key Parameters:</strong>
- <tt>grant_type</tt>: Token Exchange grant type
- <tt>subject_token</tt>: The original AAP token (from Step 1)
- <tt>resource</tt>: Intended audience for derived token (Tool B)
- <tt>scope</tt>: Reduced scope for delegation</t>
          <t><strong>Authorization Server Processing:</strong></t>
          <ol spacing="normal" type="1"><li>
              <t>Validate <tt>subject_token</tt> (signature, expiration, issuer)</t>
            </li>
            <li>
              <t>Extract delegation depth from subject token: <tt>depth = 0</tt></t>
            </li>
            <li>
              <t>Check if delegation allowed: <tt>depth &lt; max_depth</tt> (0 &lt; 2) ✓</t>
            </li>
            <li>
              <t>Determine reduced capabilities:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Keep only <tt>search.web</tt> (remove <tt>cms.create_draft</tt> - not needed by scraper)</t>
                </li>
                <li>
                  <t>Tighten constraints: <tt>max_requests_per_hour: 100 → 50</tt></t>
                </li>
                <li>
                  <t>Narrow <tt>domains_allowed</tt>: Keep only <tt>example.org</tt> (remove <tt>trusted.com</tt>)</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Reduce token lifetime: <tt>3600s → 1800s</tt> (50% reduction for delegated token)</t>
            </li>
            <li>
              <t>Increment delegation depth: <tt>0 → 1</tt></t>
            </li>
            <li>
              <t>Append to delegation chain: <tt>["agent-researcher-01"] → ["agent-researcher-01", "tool-web-scraper"]</tt></t>
            </li>
            <li>
              <t>Record <tt>parent_jti</tt>: <tt>token-original-123</tt></t>
            </li>
            <li>
              <t>Generate new <tt>jti</tt>: <tt>token-delegated-456</tt></t>
            </li>
            <li>
              <t>Sign and issue derived token</t>
            </li>
          </ol>
          <t><strong>Authorization Server Response:</strong></t>
          <t><tt>json
{
  "access_token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2FzLmV4YW1wbGUuY29tIiwic3ViIjoiYWdlbnQtcmVzZWFyY2hlci0wMSIsImF1ZCI6Imh0dHBzOi8vdG9vbC1zY3JhcGVyLmV4YW1wbGUuY29tIiwiZXhwIjoxNzA0MDY1NDAwLCJpYXQiOjE3MDQwNjM2MDAsImp0aSI6InRva2VuLWRlbGVnYXRlZC00NTYiLCJhZ2VudCI6eyJpZCI6ImFnZW50LXJlc2VhcmNoZXItMDEiLCJ0eXBlIjoibGxtLWF1dG9ub21vdXMiLCJvcGVyYXRvciI6Im9yZzphY21lLWNvcnAifSwidGFzayI6eyJpZCI6InRhc2stMTIzIiwicHVycG9zZSI6InJlc2VhcmNoX2NsaW1hdGVfZGF0YSJ9LCJjYXBhYmlsaXRpZXMiOlt7ImFjdGlvbiI6InNlYXJjaC53ZWIiLCJjb25zdHJhaW50cyI6eyJkb21haW5zX2FsbG93ZWQiOlsiZXhhbXBsZS5vcmciXSwibWF4X3JlcXVlc3RzX3Blcl9ob3VyIjo1MH19XSwiZGVsZWdhdGlvbiI6eyJkZXB0aCI6MSwibWF4X2RlcHRoIjoyLCJjaGFpbiI6WyJhZ2VudC1yZXNlYXJjaGVyLTAxIiwidG9vbC13ZWItc2NyYXBlciJdLCJwYXJlbnRfanRpIjoidG9rZW4tb3JpZ2luYWwtMTIzIn19.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk",
  "issued_token_type": "urn:ietf:params:oauth:token-type:access_token",
  "token_type": "Bearer",
  "expires_in": 1800,
  "scope": "aap:research.scraping"
}
</tt></t>
          <t><strong>Decoded Token Payload (Derived):</strong></t>
          <t><tt>json
{
  "iss": "https://as.example.com",
  "sub": "agent-researcher-01",
  "aud": "https://tool-scraper.example.com",
  "exp": 1704065400,
  "iat": 1704063600,
  "jti": "token-delegated-456",
  "agent": {
    "id": "agent-researcher-01",
    "type": "llm-autonomous",
    "operator": "org:acme-corp"
  },
  "task": {
    "id": "task-123",
    "purpose": "research_climate_data"
  },
  "capabilities": [
    {
      "action": "search.web",
      "constraints": {
        "domains_allowed": ["example.org"],
        "max_requests_per_hour": 50
      }
    }
  ],
  "delegation": {
    "depth": 1,
    "max_depth": 2,
    "chain": [
      "agent-researcher-01",
      "tool-web-scraper"
    ],
    "parent_jti": "token-original-123",
    "privilege_reduction": {
      "capabilities_removed": ["cms.create_draft"],
      "constraints_added": [],
      "lifetime_reduced_by": 1800
    }
  }
}
</tt></t>
        </section>
        <section anchor="b4-key-changes-in-derived-token">
          <name>B.4. Key Changes in Derived Token</name>
          <table>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Original Token</th>
                <th align="left">Derived Token</th>
                <th align="left">Change Type</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>aud</tt></td>
                <td align="left">
                  <tt>https://api.example.com</tt></td>
                <td align="left">
                  <tt>https://tool-scraper.example.com</tt></td>
                <td align="left">Audience changed</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>exp</tt></td>
                <td align="left">1704067200 (3600s)</td>
                <td align="left">1704065400 (1800s)</td>
                <td align="left">Lifetime reduced 50%</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>jti</tt></td>
                <td align="left">
                  <tt>token-original-123</tt></td>
                <td align="left">
                  <tt>token-delegated-456</tt></td>
                <td align="left">New unique ID</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>capabilities</tt></td>
                <td align="left">2 capabilities</td>
                <td align="left">1 capability</td>
                <td align="left">
                  <tt>cms.create_draft</tt> removed</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>capabilities[0].constraints.domains_allowed</tt></td>
                <td align="left">
                  <tt>["example.org", "trusted.com"]</tt></td>
                <td align="left">
                  <tt>["example.org"]</tt></td>
                <td align="left">Domain list narrowed</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>capabilities[0].constraints.max_requests_per_hour</tt></td>
                <td align="left">100</td>
                <td align="left">50</td>
                <td align="left">Rate limit reduced</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>delegation.depth</tt></td>
                <td align="left">0</td>
                <td align="left">1</td>
                <td align="left">Depth incremented</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>delegation.chain</tt></td>
                <td align="left">1 entry</td>
                <td align="left">2 entries</td>
                <td align="left">Tool appended to chain</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>delegation.parent_jti</tt></td>
                <td align="left">(absent)</td>
                <td align="left">
                  <tt>token-original-123</tt></td>
                <td align="left">Parent link added</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="b5-privilege-reduction-summary">
          <name>B.5. Privilege Reduction Summary</name>
          <t>The Authorization Server applied the principle of <strong>least privilege</strong> by:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Capability Removal:</strong> Tool doesn't need <tt>cms.create_draft</tt> (CMS access) for scraping task</t>
            </li>
            <li>
              <t><strong>Constraint Tightening:</strong> Reduced rate limit from 100 to 50 requests/hour</t>
            </li>
            <li>
              <t><strong>Domain Narrowing:</strong> Removed <tt>trusted.com</tt> from allowed domains (tool only accesses <tt>example.org</tt>)</t>
            </li>
            <li>
              <t><strong>Lifetime Reduction:</strong> 1800s instead of 3600s (shorter validity window reduces risk)</t>
            </li>
          </ol>
          <t>These reductions ensure that if the tool is compromised or malicious, damage is limited to the specific delegated capabilities and constraints.</t>
        </section>
        <section anchor="b6-further-delegation-depth2">
          <name>B.6. Further Delegation (Depth=2)</name>
          <t>If Tool B needs to delegate to another tool (e.g., HTML parser), it can repeat the Token Exchange process:</t>
          <ul spacing="normal">
            <li>
              <t>Tool B exchanges <tt>token-delegated-456</tt> for new token with <tt>depth=2</tt></t>
            </li>
            <li>
              <t>Further capability reduction (e.g., read-only access to specific URLs)</t>
            </li>
            <li>
              <t>Shorter lifetime (e.g., 900s)</t>
            </li>
            <li>
              <t>Chain becomes: <tt>["agent-researcher-01", "tool-web-scraper", "tool-html-parser"]</tt></t>
            </li>
            <li>
              <t><tt>max_depth=2</tt> prevents delegation beyond this point</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="c-aap-specific-error-codes">
      <name>C: AAP-Specific Error Codes</name>
      <t>This appendix defines error codes specific to AAP authorization failures, extending the OAuth 2.0 error code registry.</t>
      <section anchor="c1-error-code-reference">
        <name>C.1. Error Code Reference</name>
        <table>
          <thead>
            <tr>
              <th align="left">Error Code</th>
              <th align="left">HTTP Status</th>
              <th align="left">Description</th>
              <th align="left">Example Scenario</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>aap_invalid_capability</tt></td>
              <td align="left">403 Forbidden</td>
              <td align="left">No matching capability for requested action</td>
              <td align="left">Agent has <tt>search.web</tt> but requests <tt>cms.publish</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>aap_constraint_violation</tt></td>
              <td align="left">429 Too Many Requests or 403 Forbidden</td>
              <td align="left">Capability constraint violated</td>
              <td align="left">51st request when <tt>max_requests_per_hour: 50</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>aap_task_mismatch</tt></td>
              <td align="left">403 Forbidden</td>
              <td align="left">Request inconsistent with task purpose</td>
              <td align="left">Token for "research" task used for data deletion</td>
            </tr>
            <tr>
              <td align="left">
                <tt>aap_approval_required</tt></td>
              <td align="left">403 Forbidden</td>
              <td align="left">Action requires human approval</td>
              <td align="left">
                <tt>cms.publish</tt> in <tt>oversight.requires_human_approval_for</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>aap_excessive_delegation</tt></td>
              <td align="left">403 Forbidden</td>
              <td align="left">Delegation depth exceeded</td>
              <td align="left">Token with <tt>depth=3</tt> when <tt>max_depth=2</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>aap_invalid_context</tt></td>
              <td align="left">403 Forbidden</td>
              <td align="left">Context restriction violated</td>
              <td align="left">Request outside <tt>time_window</tt> or from blocked region</td>
            </tr>
            <tr>
              <td align="left">
                <tt>aap_domain_not_allowed</tt></td>
              <td align="left">403 Forbidden</td>
              <td align="left">Target domain not in allowlist</td>
              <td align="left">Request to <tt>malicious.com</tt> when <tt>domains_allowed: ["example.org"]</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>aap_agent_not_recognized</tt></td>
              <td align="left">403 Forbidden</td>
              <td align="left">Agent identity not recognized by policy</td>
              <td align="left">Unknown <tt>agent.id</tt> value</td>
            </tr>
            <tr>
              <td align="left">
                <tt>aap_invalid_delegation_chain</tt></td>
              <td align="left">403 Forbidden</td>
              <td align="left">Delegation chain validation failed</td>
              <td align="left">Chain length doesn't match depth, or parent token invalid</td>
            </tr>
            <tr>
              <td align="left">
                <tt>aap_capability_expired</tt></td>
              <td align="left">403 Forbidden</td>
              <td align="left">Time-based capability expired</td>
              <td align="left">Request after <tt>time_window.end</tt></td>
            </tr>
          </tbody>
        </table>
        <section anchor="c2-error-response-format">
          <name>C.2. Error Response Format</name>
          <t>AAP error responses SHOULD follow OAuth 2.0 error response format [RFC6749 Section 5.2] with AAP-specific error codes:</t>
          <t><tt>json
{
  "error": "aap_constraint_violation",
  "error_description": "The request violates capability constraints",
  "error_uri": "https://aap-protocol.org/errors#constraint-violation"
}
</tt></t>
          <t><strong>Privacy Consideration:</strong> Error descriptions SHOULD be generic and MUST NOT leak constraint values, agent details, or policy information. Detailed errors SHOULD be logged server-side only.</t>
        </section>
        <section anchor="c3-error-code-usage-examples">
          <name>C.3. Error Code Usage Examples</name>
          <t><strong>Example 1: Rate Limit Exceeded</strong></t>
          <t>```http
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 3600</t>
          <t>{
  "error": "aap_constraint_violation",
  "error_description": "Rate limit exceeded for this capability"
}
```</t>
          <t><strong>Example 2: Domain Not Allowed</strong></t>
          <t>```http
HTTP/1.1 403 Forbidden
Content-Type: application/json</t>
          <t>{
  "error": "aap_domain_not_allowed",
  "error_description": "The requested domain is not in the allowed list"
}
```</t>
          <t><strong>Example 3: Approval Required</strong></t>
          <t>```http
HTTP/1.1 403 Forbidden
Content-Type: application/json</t>
          <t>{
  "error": "aap_approval_required",
  "error_description": "This action requires human approval",
  "approval_reference": "https://approval.example.com/request?task_id=task-123"
}
```</t>
        </section>
        <section anchor="c4-error-handling-guidance-for-clients">
          <name>C.4. Error Handling Guidance for Clients</name>
          <t>When receiving AAP error codes, agents SHOULD:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>aap_constraint_violation with 429:</strong> Respect <tt>Retry-After</tt> header; back off requests</t>
            </li>
            <li>
              <t><strong>aap_approval_required:</strong> Present <tt>approval_reference</tt> to operator for human approval</t>
            </li>
            <li>
              <t><strong>aap_invalid_capability:</strong> Do not retry; request new token with correct capabilities</t>
            </li>
            <li>
              <t><strong>aap_excessive_delegation:</strong> Do not attempt further delegation; use current token directly</t>
            </li>
            <li>
              <t><strong>aap_domain_not_allowed:</strong> Validate domains before requests to avoid repeated errors</t>
            </li>
          </ol>
          <t>Agents MUST NOT attempt to bypass errors by modifying tokens (signature validation will fail).</t>
        </section>
      </section>
    </section>
    <section anchor="d-conformance-checklist">
      <name>D: Conformance Checklist</name>
      <t>This appendix provides implementation checklists for Authorization Servers and Resource Servers to verify AAP conformance.</t>
      <section anchor="d1-authorization-server-conformance-checklist">
        <name>D.1. Authorization Server Conformance Checklist</name>
        <t>An AAP-conformant Authorization Server MUST implement the following:</t>
        <t><strong>Token Issuance:</strong>
- [ ] Supports OAuth 2.0 Client Credentials Grant [RFC6749 Section 4.4]
- [ ] Issues JWTs with all required AAP claims: <tt>agent</tt>, <tt>task</tt>, <tt>capabilities</tt>
- [ ] Validates capabilities against operator policy before issuance
- [ ] Supports at least one proof-of-possession mechanism (DPoP <xref target="RFC9449"/> or mTLS <xref target="RFC8705"/>)
- [ ] Signs tokens with ES256 or RS256 (not HS256)
- [ ] Issues tokens with unique <tt>jti</tt> (JWT ID) for each token</t>
        <t><strong>Delegation (Token Exchange):</strong>
- [ ] Supports OAuth 2.0 Token Exchange <xref target="RFC8693"/>
- [ ] Implements privilege reduction on delegation (capability subset, constraint tightening, lifetime reduction)
- [ ] Increments <tt>delegation.depth</tt> on each Token Exchange
- [ ] Appends tool/agent ID to <tt>delegation.chain</tt>
- [ ] Validates parent token (via <tt>parent_jti</tt>) is not expired or revoked before issuing derived token
- [ ] Enforces <tt>delegation.depth &lt; delegation.max_depth</tt> before issuance
- [ ] MUST NOT issue token if resulting depth exceeds <tt>max_depth</tt></t>
        <t><strong>Claim Validation:</strong>
- [ ] Validates <tt>capabilities</tt> array is non-empty
- [ ] Validates <tt>action</tt> fields conform to ABNF grammar (Section 5.5)
- [ ] Validates constraint types against standard definitions (Section 5.6)
- [ ] Applies operator policy to reduce requested capabilities to authorized subset</t>
        <t><strong>Key Management:</strong>
- [ ] Stores private signing keys in HSM or equivalent secure storage (production)
- [ ] Rotates signing keys every 90 days (or per organization policy)
- [ ] Publishes public keys via JWKS endpoint <xref target="RFC7517"/>
- [ ] Supports multiple concurrent signing keys (for rotation overlap)</t>
        <t><strong>Revocation:</strong>
- [ ] Provides token revocation endpoint <xref target="RFC7009"/> or introspection <xref target="RFC7662"/>
- [ ] Distributes revocation events to Resource Servers within 30 seconds
- [ ] Optionally supports token family revocation (revoke parent + descendants)</t>
        <t><strong>Audit and Logging:</strong>
- [ ] Logs all token issuance events with <tt>agent.id</tt>, <tt>task.id</tt>, capabilities, timestamp
- [ ] Logs Token Exchange events with parent-child JTI linkage
- [ ] Supports trace ID correlation (<tt>audit.trace_id</tt> from request)
- [ ] Provides tamper-evident audit logs (cryptographic chaining or append-only storage)</t>
        <section anchor="d2-resource-server-conformance-checklist">
          <name>D.2. Resource Server Conformance Checklist</name>
          <t>An AAP-conformant Resource Server MUST implement the following:</t>
          <t><strong>Standard Token Validation:</strong>
- [ ] Validates token signature using AS public key (via JWKS)
- [ ] Validates token expiration (<tt>exp</tt> claim) with acceptable clock skew (≤5 minutes)
- [ ] Validates audience (<tt>aud</tt> claim) matches Resource Server identifier
- [ ] Validates issuer (<tt>iss</tt> claim) is trusted Authorization Server
- [ ] Checks token revocation status (if revocation mechanism in place)</t>
          <t><strong>Proof-of-Possession Validation:</strong>
- [ ] Validates DPoP proof if <tt>cnf.jkt</tt> present in token
- [ ] Validates mTLS client certificate if <tt>cnf.x5t#S256</tt> present in token
- [ ] Rejects bearer tokens if proof-of-possession is required by policy</t>
          <t><strong>Agent Identity Validation:</strong>
- [ ] Validates <tt>agent</tt> claim is present and well-formed
- [ ] Validates <tt>agent.id</tt> is recognized or allowed by local policy
- [ ] Validates <tt>agent.runtime.attested</tt> if required by policy
- [ ] Rejects tokens with agents on deny list</t>
          <t><strong>Task Binding Validation:</strong>
- [ ] Validates <tt>task</tt> claim is present
- [ ] Validates requested action is consistent with <tt>task.purpose</tt>
- [ ] Rejects requests that clearly fall outside declared purpose
- [ ] Enforces time window if <tt>task.expires_at</tt> is present</t>
          <t><strong>Capability Enforcement:</strong>
- [ ] Matches requested operation to <tt>capability.action</tt> entry
- [ ] Uses exact string matching for action names (case-sensitive)
- [ ] Denies request if no matching capability found (returns <tt>aap_invalid_capability</tt>)
- [ ] Enforces ALL constraints in matching capability (AND semantics)</t>
          <t><strong>Constraint Enforcement:</strong>
- [ ] Enforces <tt>max_requests_per_hour</tt> (fixed window, resets at minute 0)
- [ ] Enforces <tt>max_requests_per_minute</tt> (sliding 60-second window)
- [ ] Enforces <tt>domains_allowed</tt> (DNS suffix matching, rightmost)
- [ ] Enforces <tt>domains_blocked</tt> (takes precedence over allowlist)
- [ ] Enforces <tt>time_window</tt> (inclusive start, exclusive end)
- [ ] Enforces <tt>max_depth</tt> for delegation
- [ ] Uses distributed rate limiting for multi-instance deployments</t>
          <t><strong>Oversight Enforcement:</strong>
- [ ] Checks if action in <tt>oversight.requires_human_approval_for</tt>
- [ ] Returns HTTP 403 with <tt>aap_approval_required</tt> if approval needed
- [ ] Includes <tt>approval_reference</tt> in error response</t>
          <t><strong>Delegation Validation:</strong>
- [ ] Validates <tt>delegation.depth &lt;= delegation.max_depth</tt>
- [ ] Validates <tt>delegation.chain</tt> length equals <tt>depth + 1</tt>
- [ ] Validates delegation depth against capability-specific <tt>max_depth</tt> constraints</t>
          <t><strong>Error Handling:</strong>
- [ ] Returns privacy-preserving error messages (no constraint values, agent details)
- [ ] Returns appropriate HTTP status codes (401, 403, 429)
- [ ] Returns AAP-specific error codes (Appendix C)
- [ ] Logs detailed error information server-side (not in response)</t>
          <t><strong>Audit and Logging:</strong>
- [ ] Logs all authorized requests with <tt>agent.id</tt>, <tt>task.id</tt>, action, outcome
- [ ] Propagates trace ID from <tt>audit.trace_id</tt> to downstream services
- [ ] Logs authorization failures (with reason, not returned to client)
- [ ] Supports tamper-evident audit logs</t>
        </section>
        <section anchor="d3-optional-features-recommended">
          <name>D.3. Optional Features (RECOMMENDED)</name>
          <t><strong>Authorization Server:</strong>
- [ ] Supports multiple token lifetimes based on risk level
- [ ] Supports dynamic rate limit adjustment
- [ ] Implements behavioral anomaly detection
- [ ] Provides policy approval workflow (draft → review → active)
- [ ] Supports claim filtering on Token Exchange (privacy)</t>
          <t><strong>Resource Server:</strong>
- [ ] Implements behavioral anomaly detection for agent requests
- [ ] Provides real-time monitoring dashboards
- [ ] Supports audit log anonymization after retention period
- [ ] Implements re-validation before executing high-risk actions (TOCTOU mitigation)</t>
        </section>
        <section anchor="d4-testing-conformance">
          <name>D.4. Testing Conformance</name>
          <t>Organizations SHOULD test conformance using:
- <strong>Test Vectors:</strong> Validate against AAP test vectors (valid and invalid tokens)
- <strong>Interoperability Tests:</strong> Verify interoperability with reference implementations
- <strong>Security Audits:</strong> Third-party security review of AS and RS implementations
- <strong>Compliance Scans:</strong> Automated conformance checking tools</t>
        </section>
      </section>
    </section>
    <section anchor="e-implementation-examples">
      <name>E: Implementation Examples</name>
      <section anchor="e1-example-policy-configuration">
        <name>E.1. Example Policy Configuration</name>
        <t><strong>Operator Policy (JSON format):</strong></t>
        <t><tt>json
{
  "policy_id": "policy-research-agents-v1",
  "policy_version": "1.0",
  "applies_to": {
    "agent_type": "llm-autonomous",
    "operator": "org:acme-corp"
  },
  "allowed_capabilities": [
    {
      "action": "search.web",
      "default_constraints": {
        "domains_allowed": ["example.org", "trusted.com"],
        "max_requests_per_hour": 100,
        "max_requests_per_minute": 10
      }
    },
    {
      "action": "cms.create_draft",
      "default_constraints": {
        "max_requests_per_hour": 20
      }
    },
    {
      "action": "cms.publish",
      "requires_oversight": true
    }
  ],
  "global_constraints": {
    "token_lifetime": 3600,
    "max_delegation_depth": 2,
    "require_pop": true
  },
  "oversight": {
    "level": "approval",
    "requires_human_approval_for": ["cms.publish", "data.delete"],
    "approval_reference": "https://approval.acme-corp.com/agent-actions"
  },
  "audit": {
    "log_level": "full",
    "retention_period_days": 90,
    "compliance_framework": ["SOC2", "GDPR"]
  }
}
</tt></t>
        <section anchor="e2-example-token-validation-code-pseudocode">
          <name>E.2. Example Token Validation Code (Pseudocode)</name>
          <t>```python
def validate_aap_token(token, request):
    # 1. Standard OAuth validation
    if not verify_signature(token, AS_PUBLIC_KEY):
        raise InvalidSignature()</t>
          <artwork><![CDATA[
if token.exp < now():
    raise TokenExpired()

if token.aud != RESOURCE_SERVER_ID:
    raise InvalidAudience()

# 2. Proof-of-possession (if required)
if REQUIRE_POP:
    if 'cnf' not in token:
        raise ProofOfPossessionRequired()
    validate_pop(token.cnf, request)

# 3. Agent identity
if token.agent.id not in ALLOWED_AGENTS:
    raise AgentNotRecognized()

# 4. Task binding
if not is_consistent(request.action, token.task.purpose):
    raise TaskMismatch()

# 5. Capability matching
matching_cap = find_capability(token.capabilities, request.action)
if not matching_cap:
    raise NoMatchingCapability()

# 6. Constraint enforcement
enforce_constraints(matching_cap.constraints, request, token)

# 7. Oversight
if request.action in token.oversight.requires_human_approval_for:
    raise ApprovalRequired(token.oversight.approval_reference)

# 8. Delegation depth
if token.delegation.depth > token.delegation.max_depth:
    raise ExcessiveDelegation()

# 9. Audit logging
log_authorized_request(token.agent.id, token.task.id, request.action)

return AUTHORIZED
]]></artwork>
          <t>def enforce_constraints(constraints, request, token):
    # Rate limiting
    if 'max_requests_per_hour' in constraints:
        if get_hourly_count(token.jti) &gt;= constraints.max_requests_per_hour:
            raise RateLimitExceeded()
        increment_hourly_count(token.jti)</t>
          <artwork><![CDATA[
# Domain allowlist
if 'domains_allowed' in constraints:
    domain = extract_domain(request.target_url)
    if not domain_matches_allowlist(domain, constraints.domains_allowed):
        raise DomainNotAllowed()

# Time window
if 'time_window' in constraints:
    if not (constraints.time_window.start <= now() < constraints.time_window.end):
        raise OutsideTimeWindow()

# Additional constraints... ```
]]></artwork>
        </section>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
tmjHyY9io1Kr3O7KOq7n89na6eveebDBlhAsLLrRaXXWXqQ5iAvADB0g4jXJ
mWgiTFjXtbpufGne3t6S2NNcZBNg7UjO1tbIan+J2tITtkNeOhFva7+T7+LR
k4oNNj9zEYgnv/ae7Z89O/+49jtOzADe0DWwO8I9K0MMXFDBAuQE2asvaeqE
trd8eT14Poxfxy8P33w96pzER/lRcrYz3D96ePR59u7t/svHLXhoNtw6xofS
0Yuz2+HX9ObV5uHXV9O32+8vOreD528W7zcfz4/i23i49TY++pTG7y9Gk0Hy
x/lw+vbrh4vD5fvN68kwbt8e96CD6WHnA3YwvW6PXjz9+jr+5eb9u6ezqvY+
vLu+hfa+nHzdax8fvN86/rR3+2r/5ez9uz/Grz892zo++OPtyafjzeODPWh3
1g570G5ydhNuvl28uni8DC9Gs8H0MH91/mx5vKS+kw8XO+2jT7NHR9PJ5++O
FRfj+Rucez543p6/f/e2PdjcuRlcPO4Mqb3Htx/evbwePX+8xLYGWy+T19PD
T4OLN3OYw3IICwjjbb9/d5K5fY6eH34Nl+0vx5+OY/j9dvTu5e1g62SCvznj
GL/f/DIbXBy2P7x9/Pn9u7Pro6QNfZ5cD58fxuHFl9no+WQC43h4sZXDPE7a
4cXjBbWx+fZ6OD1JXyWjyXvc1OnJzSA5aQ+nh7NBcvaVx3IG88C/T8bvL77k
g63RBPflYvlyEj0/nA+ff5m8mj5efljSOixH707aHy7+yHszwXF0rqND+P0d
7Cf8NuzQWozD57A28dHD4/O92/G7do6H7P3W2WywuY3r+Gnw7njxfuvlBOYz
ebd5tnx/8aF9lHRGsA6fP1x8mXzYPJR50BgnwxdnKcwJ9x3W/3r84fnb29Hz
K9h/mlf6/mKCzw50b1+9eznR+X94dzQ/PngWv3vXedzqjSd/+HJ79rJ3HP3h
D4ebfzzfHt/OjqOX462Hp68/P1y+fHsZjv6Y57c7Q4FfJMEEbzNelqdw86JM
gCfFgEWQJEjJ6FsDpuxeVafU4QFLPcKnTtkIG9SUmtXLFzbOMQdsHclW3t3Y
8MkTDyVfDO6FlwTt12vCx1o300GYlUft7fbDR5symzicmy/NFD/NYwKYIf9t
KgNnmB0P04bkrfX7kS9xhWVtJ5Np0/pq9NfVqDfwuw984/ZnkX/42wrgm0sB
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

-->

</rfc>
