<?xml version="1.0" encoding="utf-8"?>
<?xml-model href="rfc7991bis.rnc"?>
<!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-diaconu-agents-authz-info-sharing-00" ipr="trust200902" submissionType="IETF" xml:lang="en" version="3">
  <front>
    <title abbrev="AuthZ Sharing for Agents">Cross-Domain AuthZ Information sharing for Agents</title>
    <seriesInfo name="Internet-Draft" value="draft-diaconu-agents-authz-info-sharing-00"/>
    <author fullname="Jean Diaconu" surname="Diaconu">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Av. des Uttins 5</street>
          <city>ROLLE</city>
          <code>1180</code>
          <country>Switzerland</country>
        </postal>
        <email>jdiaconu@cisco.com</email>
      </address>
    </author>
    <author fullname="Marcelo Yannuzzi" surname="Yannuzzi">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Av. des Uttins 5</street>
          <city>ROLLE</city>
          <code>1180</code>
          <country>Switzerland</country>
        </postal>
        <email>mayannuz@cisco.com</email>
      </address>
    </author>
    <author fullname="Herve Muyal" surname="Muyal">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Av. des Uttins 5</street>
          <city>ROLLE</city>
          <code>1180</code>
          <country>Switzerland</country>
        </postal>
        <email>hmuyal@cisco.com</email>
      </address>
    </author>
    <author fullname="Frank Brockners" surname="Brockners">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Hansaallee 249, 3rd Floor</street>
          <city>DUESSELDORF</city>
          <code>40549</code>
          <country>Germany</country>
        </postal>
        <email>fbrockne@cisco.com</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
    <author fullname="Nik Kale" surname="Kale">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>170 W Tasman Dr</street>
          <city>SAN JOSE, CA</city>
          <code>95134</code>
          <country>USA</country>
        </postal>
        <email>nikkal@cisco.com</email>
      </address>
    </author>
    <author fullname="Ankit Agarwal" surname="Ankit">
      <organization abbrev="Skyfire">Skyfire, Inc.</organization>
      <address>
        <postal>
          <city>Kentfield, CA</city>
          <country>USA</country>
        </postal>
        <email>ankit@skyfire.xyz</email>
      </address>
    </author>
    <author fullname="Jeffrey Hickman" surname="Hickman">
      <organization abbrev="Ory Corp">Ory Corp, Inc.</organization>
      <address>
        <postal>
          <street>15169 N Scottsdale Rd Suite 205</street>
          <city>Scottsdale, AZ</city>
          <code>85254</code>
          <country>USA</country>
        </postal>
        <email>jeff.hickman@ory.com</email>
      </address>
    </author>
    <author fullname="Amritha Lal" surname="Lal">
      <organization abbrev="AWS">Amazon Web Services</organization>
      <address>
        <postal>
          <city>Seattle, WA</city>
          <country>USA</country>
        </postal>
        <email>amrithak@amazon.com</email>
      </address>
    </author>
    <date year="2026"/>
    <area>Security</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <abstract>
      <t>Distributed Multi-Agent Systems consist of Agents and MCP Servers operating across multiple administrative domains, each with its own Identity Providers (IdPs) and Authorization Servers (AS).</t>
      <t>This document discusses the challenges and solution approaches for sharing authorization information securely and flexibly across domains, including the use of dynamic identity, interoperable claims, and verifiable credentials.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Distributed Multi-Agent Systems, consisting of Agents and Model Context 
            Protocol (MCP) Servers, are increasingly deployed across multiple administrative 
            domains. Each domain typically operates its own Identity Providers (IdPs) and 
            Authorization Servers (AS), creating a fundamental challenge: how can an agent 
            from Organization A securely prove its identity and authorization to resources 
            in Organization B?</t>
      <t>While OAuth 2.0 and related specifications provide robust authorization 
            frameworks for human users and pre-registered clients, the emergence of 
            autonomous agent systems operating across organizational boundaries presents 
            new challenges that existing mechanisms do not fully address.</t>
      <t>This challenge is distinct from traditional cross-domain identity federation 
            for human users. Humans rarely delegate authority through multiple organizational 
            boundaries. Agents routinely do so--an orchestrator agent in Domain X may invoke a 
            tool agent in Domain Y, which accesses an MCP server in Domain Z. Existing 
            authorization mechanisms such as OAuth 2.0 Dynamic Client Registration 
            <xref target="RFC7591"/> and Token Exchange <xref target="RFC8693"/> assume 
            single-domain operation or pre-established relationships, and do not address the 
            dynamic, multi-hop delegation patterns that characterize modern agentic systems.</t>
      <t>This document analyzes the cross-domain agent authorization problem and 
            evaluates solution approaches. The proposed solution extends OAuth 2.0 Client-ID 
            Metadata <xref target="I-D.ietf-oauth-client-id-metadata-document"/> with W3C 
            Verifiable Credentials <xref target="W3C.VCDM2.0"/> to enable dynamic identity 
            establishment without pre-registration across domains, cryptographically verifiable 
            authorization claims that travel with the agent, multi-hop delegation with 
            monotonic scope narrowing and accountability chains, and selective disclosure 
            of sensitive authorization attributes.</t>
      <t>The document is structured as follows: <xref target="definitions"/> defines 
            key terminology. <xref target="use-cases"/> presents use cases demonstrating 
            cross-domain scenarios. <xref target="threat-model"/> identifies 
            threats specific to cross-domain authorization sharing. <xref target="requirements-summary"/> 
            establishes requirements and evaluates solution approaches. 
            <xref target="security-considerations"/> covers security considerations.</t>
    </section>
    <section anchor="conventions" title="Conventions Used in This Document">
      <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 <xref target="RFC2119"/> and <xref target="RFC8174"/> when, and
        only when, they appear in all capitals, as shown here.
    </t>
    </section>
    <section anchor="definitions">
      <name>Abbreviations / Definitions</name>
      <dl>
        <dt>Agent</dt>
        <dd>An autonomous entity that performs tasks on behalf of a user or another program within a multi-agent system.</dd>
        <dt>MCP Server</dt>
        <dd>A program that exposes specific capabilities, like data access or tools, to AI models through the Model Context Protocol (MCP).</dd>
        <dt>AS (Authorization Server)</dt>
        <dd>A server that issues authorization tokens to clients after successfully authenticating them.</dd>
        <dt>IdP (Identity Provider)</dt>
        <dd>A service that creates, manages, and verifies digital identities for users and service users, often for accessing multiple applications and services.</dd>
        <dt>Subject</dt>
        <dd>The principal (user or service).</dd>
        <dt>Claim</dt>
        <dd>Essentially a piece of information asserted about a subject.</dd>
        <dt>Domain</dt>
        <dd>Scope over which a specific, uniform set of security policies and user management rules are enforced.</dd>
        <dt>VCDM 2.0</dt>
        <dd>Verifiable Credentials Data Model 2.0, a W3C standard for expressing verifiable credentials on the web.</dd>
        <dt>VC</dt>
        <dd>Verifiable Credential, a digital credential that is cryptographically secure and can be verified independently.</dd>
        <dt>SD-JWT</dt>
        <dd>Selective Disclosure JSON Web Token, a JWT that allows the holder to disclose only specific parts of the token.</dd>
        <dt>DID</dt>
        <dd>Decentralized Identifier, a new type of identifier that enables verifiable, self-sovereign digital identities.</dd>
      </dl>
    </section>
    <section anchor="use-cases">
      <name>Use Cases</name>
      <t>The following use cases demonstrate scenarios where cross-domain agent 
            authorization presents challenges not addressed by existing single-domain 
            mechanisms.</t>
      <section>
        <name>Cross-Domain Tool Invocation</name>
        <t>A coding assistant agent operated by Developer Tools Inc. needs to 
                invoke a code review tool provided by Code Analysis Corp. The tool is 
                exposed as an MCP Server protected by Code Analysis Corp's Authorization 
                Server.</t>
        <dl>
          <dt>Cross-Domain Challenge</dt>
          <dd>Developer Tools Inc.'s agent must present credentials that 
                    Code Analysis Corp's AS can verify, despite having no pre-existing 
                    trust relationship. The AS must determine what operations the agent 
                    may perform based on claims issued by a foreign domain.</dd>
          <dt>Requirements</dt>
          <dd>Verifiable agent and MCP server identity across domain boundaries, authorization 
                    claims that are interpretable by the receiving domain.</dd>
        </dl>
      </section>
      <section>
        <name>Enterprise Partnership Integration</name>
        <t>Company A partners with Company B to provide integrated customer support services. 
                Company A deploys a support agent that needs to access Company B's 
                customer ticketing system and knowledge base to resolve customer issues.</t>
        <dl>
          <dt>Cross-Domain Challenge</dt>
          <dd>Company A's agent authenticates using Company A's IdP and holds 
                    a Verifiable Credential issued by Company A. Company B's Authorization 
                    Server has no trust relationship with Company A's IdP--it cannot verify 
                    Company A's tokens. Company B needs a mechanism to verify the agent's 
                    identity and authorization claims without requiring bilateral federation 
                    setup for every partner.</dd>
          <dt>Requirements</dt>
          <dd>Dynamic identity verification across domains, verifiable compliance 
                    attestations, and scope restrictions that Company B's AS can enforce 
                    based on Company A's authorization grants.</dd>
        </dl>
      </section>
      <section>
        <name>Multi-Vendor Workflow Orchestration</name>
        <t>A security operations workflow involves agents from multiple vendors: 
                an orchestrator agent from Security Vendor X coordinates a threat 
                intelligence agent from Vendor Y and a remediation agent from Vendor Z. 
                The orchestrator must delegate appropriate permissions to each specialized 
                agent.</t>
        <dl>
          <dt>Cross-Domain Challenge</dt>
          <dd>The orchestrator in Domain X must delegate authority to agents 
                    in Domains Y and Z. Each receiving domain must verify the delegation 
                    chain, ensure the delegated scope does not exceed what the originating 
                    principal authorized, and maintain an auditable record of the 
                    delegation chain.
		Receiving domains must ensure that the authorization decisions do not 
		rely on revoked, suspended, or superseded delegations by performing
		runtime delegation chain verification according to the local policy.</dd>
          <dt>Requirements</dt>
          <dd>Multi-hop delegation with scope narrowing, cross-domain 
                        accountability chains, privacy-preserving identity claims, 
                        and domain-specific policy enforcement at each 
                        trust boundary crossing.</dd>
        </dl>
      </section>
      <section>
        <name>Supply Chain Data Exchange</name>
        <t>A manufacturer's inventory management agent needs to query suppliers' 
                availability systems. Multiple suppliers operate their own authorization 
                infrastructure. The agent must access each supplier's MCP servers with 
                appropriate credentials.</t>
        <dl>
          <dt>Cross-Domain Challenge</dt>
          <dd>Each supplier's AS must verify the manufacturer's agent without 
                    requiring manual pre-registration. Dynamic Client Registration 
                    <xref target="RFC7591"/> would require the agent to register separately 
                    with each supplier's AS, creating operational overhead and not providing 
                    cryptographic verification of the agent's authorization claims from its 
                    home domain. The agent may need different permission levels at different 
                    suppliers based on partnership agreements. Suppliers must be able to 
                    audit which manufacturer agents accessed their data.</dd>
          <dt>Requirements</dt>
          <dd>Dynamic agent provisioning across multiple foreign domains, 
                    verifiable identity without pre-registration, and domain-specific 
                    scope mappings.</dd>
        </dl>
      </section>
      <section>
        <name>Regulatory Compliance Across Jurisdictions</name>
        <t>A financial services agent operating in the EU needs to access data 
                from a partner institution in the US. Both jurisdictions have different 
                regulatory requirements.</t>
        <dl>
          <dt>Cross-Domain Challenge</dt>
          <dd>The receiving domain's AS must verify that the requesting agent's 
                    compliance attestations meet local policy requirements. The VC issued 
                    by the originating domain asserts compliance with GDPR; the receiving 
                    domain must determine whether this satisfies its own data handling 
                    requirements without assuming equivalence of compliance frameworks.</dd>
          <dt>Requirements</dt>
          <dd>Verifiable compliance attestations that receiving domains can 
                        evaluate against local policies,
                        and data sensitivity clearance, verification across regulatory boundaries.</dd>
        </dl>
      </section>
    </section>
    <section anchor="requirements-summary">
      <name>Requirements Summary</name>
      <t>A system for cross-domain sharing of authorization information of agents needs to meet the following set of requirements:</t>
      <ul>
        <li><strong>Dynamic Identity for Agents and MCP Servers:</strong> The Agents and MCP Servers can onboard dynamically and get an assigned identity in the IdP.</li>
        <li><strong>Interoperability Across Domains:</strong> The system must enable seamless interaction between Agents across different domains.</li>
        <li><strong>Flexible Definition of Claims:</strong> Claims should be adaptable as they may vary from organization to organization. They may include information related to authorization, compliance requirements, chains of delegation, and other domain-specific concerns.</li>
        <li><strong>Dynamic Management of Authorization Information:</strong> The system must allow creation, removal, updating, and deletion of authorization information for agents, as agents can be highly dynamic.</li>
        <li><strong>Security and Privacy:</strong> Ensuring secure and private sharing of authorization information across domains.</li>
        <li><strong>Compliance and Auditability:</strong> Support for compliance with regulatory standards and auditability of authorization exchanges.</li>
      </ul>
    </section>
    <section anchor="solution-approaches">
      <name>Solution Approaches</name>
      <section>
        <name>Solution Approach 1: Dynamic Client Registration (RFC 7591)</name>
        <t><strong>Description:</strong> Dynamic Client Registration as outlined in <xref target="RFC7591"/> allows clients to register with an AS dynamically, facilitating the management of client credentials and metadata.</t>
        <t>
          <strong>Discussion:</strong>
        </t>
        <table>
          <thead>
            <tr>
              <th>Requirement</th>
              <th>Met or Partially Met</th>
              <th>Not Met</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Dynamic Identity for Agents and MCP Servers</td>
              <td>Met</td>
              <td/>
            </tr>
            <tr>
              <td>Interoperability Across Domains</td>
              <td>Partially Met (Granted by the Dynamic Registration, however no common ground between AS)</td>
              <td/>
            </tr>
            <tr>
              <td>Flexible Definition of Claims</td>
              <td/>
              <td>Not Met (OAuth2 claims only)</td>
            </tr>
            <tr>
              <td>Dynamic Management of Authorization Information</td>
              <td/>
              <td>Not Met (Delete or Update not supported)</td>
            </tr>
            <tr>
              <td>Security and Privacy</td>
              <td/>
              <td>Not Met (Claims are shared but no common schema)</td>
            </tr>
            <tr>
              <td>Compliance and Auditability</td>
              <td>Partially Met (Claims are shared, APIs are auditable, but no regulatory standards are defined for the schema)</td>
              <td/>
            </tr>
          </tbody>
        </table>
      </section>
      <section>
        <name>Solution Approach 2: SCIM extensions</name>
        <t><xref target="I-D.abbey-scim-agent-extension"/> proposes extending the SCIM (System for Cross-Domain Identity Management) protocol to standardize the provisioning, management, and governance of AI agents and other digital workers.</t>
        <t><xref target="I-D.wahl-scim-agent-schema"/> is a companion document to the draft-abbey-scim-agent-extension. Its purpose is to define the specific SCIM schema and attributes required to represent AI agents (digital workers) and agentic applications within the SCIM framework.</t>
        <t><strong>Description:</strong> Provision Agents / MCP Servers through a SCIM extension.</t>
        <t>
          <strong>Discussion:</strong>
        </t>
        <table>
          <thead>
            <tr>
              <th>Requirement</th>
              <th>Met or Partially Met</th>
              <th>Not Met</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Dynamic Identity for Agents and MCP Servers</td>
              <td>Partially Met (SCIM support is limited and with constraints, example for Azure: “Subsequent syncs are triggered every 20-40 minutes”.)</td>
              <td/>
            </tr>
            <tr>
              <td>Interoperability Across Domains</td>
              <td>Partially Met (SCIM is supported and schema is well defined)</td>
              <td/>
            </tr>
            <tr>
              <td>Flexible Definition of Claims</td>
              <td>Met (Defined by the schema)</td>
              <td/>
            </tr>
            <tr>
              <td>Dynamic Management of Authorization Information</td>
              <td>Partially Met (SCIM support is limited and with constraints, example for Azure: “Subsequent syncs are triggered every 20-40 minutes”.)</td>
              <td/>
            </tr>
            <tr>
              <td>Security and Privacy</td>
              <td>Partially Met (A schema is defined but Selective Disclosure not supported)</td>
              <td/>
            </tr>
            <tr>
              <td>Compliance and Auditability</td>
              <td>Partially Met (Claims are shared, APIs are auditable, but no regulatory standards are defined for the schema)</td>
              <td/>
            </tr>
          </tbody>
        </table>
      </section>
      <section>
        <name>Solution Approach 3: Client-ID Metadata</name>
        <t><strong>Description:</strong> Client ID Metadata <xref target="I-D.ietf-oauth-client-id-metadata-document"/> is a method for OAuth clients to identify themselves using a URL, which points to a JSON file containing their OAuth metadata. Instead of requiring pre-registration, an authorization server can fetch this JSON document at the client's provided URL to provision the identity.</t>
        <t>
          <strong>Discussion:</strong>
        </t>
        <table>
          <thead>
            <tr>
              <th>Requirement</th>
              <th>Met or Partially Met</th>
              <th>Not Met</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Dynamic Identity for Agents and MCP Servers</td>
              <td>Met</td>
              <td/>
            </tr>
            <tr>
              <td>Interoperability Across Domains</td>
              <td>Met</td>
              <td/>
            </tr>
            <tr>
              <td>Flexible Definition of Claims</td>
              <td/>
              <td>Not Met* (client_id is common, all the rest is limited to OAuth2 claims)</td>
            </tr>
            <tr>
              <td>Dynamic Management of Authorization Information</td>
              <td>Met</td>
              <td/>
            </tr>
            <tr>
              <td>Security and Privacy</td>
              <td>Partially Met** (A schema is defined but Selective Disclosure not supported)</td>
              <td/>
            </tr>
            <tr>
              <td>Compliance and Auditability</td>
              <td>Partially Met** (Claims are shared, APIs are auditable, but no regulatory standards are defined for the schema)</td>
              <td/>
            </tr>
          </tbody>
        </table>
        <t><strong>*Flexible Definition of Claims:</strong> The OAuth claims in the draft follow the claims exposed and defined by IANA OAuth Parameters. Hence, the metadata fields are limited to a fixed set of claims. This makes it difficult to convey richer features about the client, including provenance details, compliance attestations, or contextual trust scores without introducing vendor-specific extensions, thereby reducing portability and interoperability.</t>
        <t><strong>**Security and Privacy, Compliance and Auditability:</strong> All metadata is published to a publicly accessible endpoint. There is no native ability to keep certain attributes private, apply selective disclosure, or restrict visibility based on trust relationships. Sensitive operational data or compliance-related data must be handled outside the metadata framework, leading to fragmented trust models. There is no mechanism for revocation and expiration.</t>
      </section>
      <section>
        <name>Solution Approach 4: Client-ID Metadata + W3C Verifiable Credentials Extension</name>
        <figure>
          <name>Client-ID Metadata with VC Verification Flow</name>
          <artwork type="ascii-art"><![CDATA[
Agent (Client)             AuthZ Server (AS)         Metadata Endpoint
      |                            |                      |
      | 1. Authorization Request   |                      |
      |    (client_id = URL)       |                      |
      |--------------------------->|                      |
      |                            |                      |
      |                            | 2. HTTP GET (URL)    |
      |                            |--------------------->|
      |                            |                      |
      |                            | 3. Returns Metadata  |
      |                            |    (JWKS + "vc+jwt") |
      |                            |<---------------------|
      |                            |                      |
      |                            | 4. Validate Metadata |
      |                            |    & Verify VC Signature (JWKS)
      |                            |                      |
]]></artwork>
        </figure>
        <t><strong>Description:</strong> The proposed solution is based on Solution 3, but enhances the supported claims with a new claim, "vc+jwt", based on the Verifiable Credentials Data Model 2.0 from W3C.</t>
        <dl>
          <dt>vc+jwt</dt>
          <dd>A standard method used in decentralized identity to package and secure a digital credential. The Verifiable Credential (VC)—the actual data proving a fact (e.g., identity or degree)—is encapsulated within a JSON Web Token (JWT), which provides a cryptographic signature from the issuer. This signature allows any third party (the Verifier) to instantly confirm the credential's authenticity and integrity. Modern formats like SD-JWT VC further enhance this by enabling the holder to share only specific parts of the credential (Selective Disclosure) to protect privacy.</dd>
        </dl>
        <t>
          <strong>Discussion:</strong>
        </t>
        <table>
          <thead>
            <tr>
              <th>Requirement</th>
              <th>Met or Partially Met</th>
              <th>Not Met</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Dynamic Identity for Agents and MCP Servers</td>
              <td>Met</td>
              <td/>
            </tr>
            <tr>
              <td>Interoperability Across Domains</td>
              <td>Met (1)</td>
              <td/>
            </tr>
            <tr>
              <td>Flexible Definition of Claims</td>
              <td>Met (2)</td>
              <td/>
            </tr>
            <tr>
              <td>Dynamic Management of Authorization Information</td>
              <td>Met</td>
              <td/>
            </tr>
            <tr>
              <td>Security and Privacy</td>
              <td>Met (3)</td>
              <td/>
            </tr>
            <tr>
              <td>Compliance and Auditability</td>
              <td>Met (4)</td>
              <td/>
            </tr>
          </tbody>
        </table>
        <t>
          <strong>Detailed explanations:</strong>
        </t>
        <t>The W3C Verifiable Credentials Data Model 2.0 addresses the shortcomings of the previous Solution 3, by introducing a cryptographically verifiable and standards-based way to assert identities, capabilities, and compliance attestations. It supports selective disclosure to protect sensitive information, enables time-bound and revocable authorizations, and ensures provenance tracking for audit and regulatory compliance. They are part of a broader decentralized identity (DID) specification.</t>
        <t>Using the W3C Verifiable Credentials Data Model 2.0 for Agents, MCP Clients, and MCP Servers provides a standardized, cryptographically secure way to establish trust, delegate authority, and ensure interoperability across different systems.</t>
        <t>It enables Agents, MCP Clients, and MCP Servers to prove, among other things, their identities, identity issuers and provenance, supported skills and permitted actions through verifiable proofs, including support for fine-grained and time-bound access control, while maintaining transparency enabling audit trails for compliance.</t>
        <t>Additionally, it enhances privacy through selective disclosure and privacy-preserving proofs (e.g., allowing Agents to prove skills and authorized actions without exposing unnecessary details).</t>
        <t>The Verifiable Credentials Data Model 2.0 is a W3C standard that fits the needs expressed above:</t>
        <t><strong>(1) Enhanced Interoperability:</strong> VCDM 2.0 provides a standardized, extensible way to express identities, capabilities, and compliance data across different systems. Its use of DIDs and schema-governed claims ensures that Agents, MCP Clients, and MCP Servers can verify and exchange trust information, enabling consistent interoperability across domains and platforms.</t>
        <t><strong>(2) Flexible Definition of Claims:</strong> VCDM 2.0 allows arbitrary, schema-governed claims that can represent complex concepts such as provenance, software supply-chain attestations (e.g., SLSA), security posture, audit certifications (SOC2, ISO-27001), or dynamic trust signals. These claims can be extended without breaking interoperability, thanks to widely adopted JSON-LD and schema registries.</t>
        <t><strong>(3) Security and Privacy:</strong> Credentials are signed using verifiable cryptographic proofs (e.g., JSON Web Signatures, Data Integrity proofs). This ensures that Agents, MCP clients, and MCP servers can verify the authenticity of claims without relying solely on HTTPS endpoints or centralized registries. Through techniques like BBS+ signatures, holders can disclose only the subset of claims required for a given authorization flow. This is essential for scenarios where Agents must prove capabilities (e.g., "I'm allowed to execute this skill") without revealing unnecessary or sensitive identity attributes.</t>
        <t><strong>(4) Compliance and Auditability:</strong> VCDM 2.0 enables cryptographically verifiable audit trails by binding each credential to an issuer, timestamp, and revocation status. Compliance attestations can be embedded directly in credentials, and real-time revocation checks ensure they remain valid. This provides trustworthy provenance, regulatory-grade accountability, and reliable lifecycle tracking across distributed systems.</t>
        <section anchor="delegation-semantics" numbered="true" toc="default">
          <name>Delegation Semantics for Cross-Domain Multi-Agent Workflows</name>
          <t>Multi-agent systems frequently involve chains of delegation where Agent A 
                    invokes Agent B, which may invoke Agent C—potentially spanning multiple 
                    administrative domains. This section defines authorization semantics for such 
                    delegation chains, addressing the novel challenges of cross-domain delegation.</t>
          <t>Humans rarely delegate authority through multiple levels across 
                    organizational boundaries. Agents routinely do so. Existing delegation 
                    mechanisms (<xref target="RFC8693"/> Token Exchange 'act' claims) assume 
                    single-domain operation and do not address cross-domain VC-based delegation 
                    with verifiable accountability chains.</t>
          <section anchor="delegation-models" numbered="true" toc="default">
            <name>Delegation Models</name>
            <t>This specification supports two delegation models:</t>
            <dl>
              <dt>Direct Invocation</dt>
              <dd>Agent A directly invokes MCP Server M using A's own credentials. 
                            No delegation occurs; authorization is based solely on A's VC.</dd>
              <dt>Delegated Invocation (Cross-Domain)</dt>
              <dd>Agent A in Domain X invokes Agent B in Domain Y to perform a task. 
                            B acts on A's behalf (and transitively, on behalf of A's originating 
                            principal) when accessing resources. The authorization decision considers 
                            both A's delegation grant and B's own credentials, applying Domain Y's 
                            policies.</dd>
            </dl>
            <figure anchor="cross-domain-delegation-flow">
              <name>Cross-Domain Delegation Flow</name>
              <artwork><![CDATA[
Domain X                          |  Domain Y
                                  |
+-----------+   +---------+       |  +---------+   +--------------+
| Principal |   | Agent A |       |  | Agent B |   | MCP Server M |
|     P     |   |         |       |  |         |   |              |
+-----------+   +---------+       |  +---------+   +--------------+
      |              |            |       |               |
      | 1. Task      |            |       |               |
      |------------->|            |       |               |
      |              |            |       |               |
      |              | 2. Delegate + VC(A)|               |
      |              |------------|------>|               |
      |              |            |       |               |
      |              |            |       | 3. Request    |
      |              |            |       |    + VC(B)    |
      |              |            |       |    + Deleg(A) |
      |              |            |       |-------------->|
      |              |            |       |               |
      |              |            |       |  4. Verify chain
      |              |            |       |  5. Apply local policy
      |              |            |       |  6. Authorize
]]></artwork>
            </figure>
          </section>
          <section anchor="scope-derivation" numbered="true" toc="default">
            <name>Scope Derivation Rules</name>
            <t>When Agent A delegates to Agent B (potentially across domains), B's 
                        effective scope MUST be computed as the intersection of:</t>
            <ol>
              <li>A's delegatable scope: The subset of A's permissions that A is 
                            authorized to delegate</li>
              <li>B's intrinsic scope: The permissions B holds in its own VC</li>
              <li>Explicit delegation grant: What A actually delegated to B for this 
                            invocation</li>
              <li>Receiving domain policy: The maximum scope the receiving domain 
                            permits for this cross-domain delegation</li>
            </ol>
            <figure anchor="scope-formula">
              <name>Scope Derivation Formula</name>
              <artwork><![CDATA[
Effective_Scope(B) = A.delegatable_scope
                     INTERSECT B.intrinsic_scope
                     INTERSECT Delegation.granted_scope
                     INTERSECT Receiving_Domain_Policy
]]></artwork>
            </figure>
            <t>This ensures:</t>
            <ul>
              <li>B cannot exceed A's authority (no privilege amplification)</li>
              <li>B cannot exceed its own authority (intrinsic limits apply)</li>
              <li>A can further restrict B for specific tasks (explicit grant)</li>
              <li>The receiving domain retains sovereignty over its resources 
                            (local policy)</li>
            </ul>
            <t>Implementations MUST enforce monotonic scope narrowing: at each 
                        delegation step, effective scope can only decrease or remain the same, 
                        never increase.</t>
            <t>This intersection semantics aligns with capability-based security 
                        principles (see: Mark Miller's Principle of Least Authority, Google 
                        Macaroons, Biscuit authorization tokens) and extends <xref target="RFC8693"/> 
                        Token Exchange delegation semantics to cross-domain VC-based scenarios.</t>
          </section>
          <section anchor="accountability-chain" numbered="true" toc="default">
            <name>Accountability Chain Construction</name>
            <t>Each delegation step MUST produce a verifiable record enabling 
                        cross-domain forensic reconstruction.To support revocation and 
			scope-change handling, delegation records SHOULD enable downstream verifiers
			to identify and validate upstream delegation elements so that authorization decisions
			do not depend on revoked or superseded delegation claims.  The delegation record MUST include:</t>
            <table anchor="delegation-record-fields">
              <name>Delegation Record Fields</name>
              <thead>
                <tr>
                  <th>Field</th>
                  <th>Description</th>
                  <th>Cross-Domain Relevance</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td>delegator_id</td>
                  <td>Agent A's id from its VC</td>
                  <td>Enables tracing to originating domain</td>
                </tr>
                <tr>
                  <td>delegator_domain</td>
                  <td>Domain that issued A's VC</td>
                  <td>Identifies trust relationship to verify</td>
                </tr>
                <tr>
                  <td>delegatee_id</td>
                  <td>Agent B's id from its VC</td>
                  <td>Identifies receiving agent</td>
                </tr>
                <tr>
                  <td>delegatee_domain</td>
                  <td>Domain that issued B's VC</td>
                  <td>Identifies receiving domain</td>
                </tr>
                <tr>
                  <td>timestamp</td>
                  <td>Time of delegation</td>
                  <td>Temporal ordering for forensics</td>
                </tr>
                <tr>
                  <td>granted_scope</td>
                  <td>Scopes delegated</td>
                  <td>Audit of intended authorization</td>
                </tr>
                <tr>
                  <td>expiration</td>
                  <td>Delegation validity period</td>
                  <td>MUST NOT exceed delegator's VC expiration</td>
                </tr>
                <tr>
                  <td>chain_hash</td>
                  <td>Cryptographic binding to prior chain</td>
                  <td>Ensures chain integrity across domains</td>
                </tr>
              </tbody>
            </table>
            <t>The complete accountability chain enables:</t>
            <ol>
              <li>Cross-domain attribution: Determining which principal originated a 
                            request that traversed multiple domains</li>
              <li>Forensic reconstruction: Rebuilding the sequence of delegations 
                            across domain boundaries</li>
              <li>Coordinated revocation: Identifying downstream delegations in other 
                            domains that must be invalidated</li>
            </ol>
          </section>
          <section anchor="delegation-depth" numbered="true" toc="default">
            <name>Delegation Depth Limits</name>
            <t>Implementations SHOULD enforce maximum delegation depth. Cross-domain 
                        delegations SHOULD count toward depth limits regardless of whether they're 
                        same-domain or cross-domain.</t>
            <t>Receiving domains MAY impose stricter depth limits than the originating 
                        domain. When a delegation would exceed the receiving domain's depth limit, 
                        the AS MUST reject the request with an error indicating the depth 
                        violation.</t>
          </section>
          <section anchor="delegation-vc-claims" numbered="true" toc="default">
            <name>Delegation Claims in VCs</name>
            <t>To express delegation authority in VCs, the following claims are defined 
                        for credentialSubject:</t>
            <figure anchor="delegation-claims-example">
              <name>Delegation Claims Example</name>
              <sourcecode type="json"><![CDATA[
{
  "credentialSubject": {
    "id": "https://example.com/agents/agent-a",
    "delegation": {
      "permitted": true,
      "maxDepth": 2,
      "crossDomainDelegation": {
        "permitted": true,
        "allowedDomains": ["partner.example.org"],
        "deniedDomains": ["competitor.example.com"]
      },
      "allowedDelegateeTypes": ["tool-agent", "workflow-agent"],
      "scopeRestrictions": {
        "nonDelegatable": ["admin:*", "pii:write"],
        "crossDomainNonDelegatable": ["internal:*"]
      }
    }
  }
}
]]></sourcecode>
            </figure>
            <dl>
              <dt>delegation.permitted</dt>
              <dd>Boolean indicating whether this agent may delegate. Default: false.</dd>
              <dt>delegation.maxDepth</dt>
              <dd>Maximum additional delegation hops this agent may initiate. 
                            Default: 0.</dd>
              <dt>delegation.crossDomainDelegation.permitted</dt>
              <dd>Whether cross-domain delegation is allowed at all.</dd>
              <dt>delegation.crossDomainDelegation.allowedDomains</dt>
              <dd>Domains to which delegation is permitted (wildcards allowed).</dd>
              <dt>delegation.scopeRestrictions.crossDomainNonDelegatable</dt>
              <dd>Scopes that may be delegated within the same domain but MUST NOT be 
                            delegated across domain boundaries.</dd>
            </dl>
          </section>
        </section>
        <section anchor="vc-profile" numbered="true" toc="default">
          <name>Agent Authorization Verifiable Credential Profile</name>
          <t>This section defines a Verifiable Credential profile that enables 
                    interoperable cross-domain agent authorization. The profile specifies claims 
                    that Authorization Servers in different domains can reliably interpret.</t>
          <t>W3C VCDM 2.0 is intentionally flexible. For cross-domain interoperability, 
                    domains must agree on claim semantics. This profile provides that common 
                    language.</t>
          <section anchor="profile-objectives" numbered="true" toc="default">
            <name>Profile Objectives</name>
            <t>The Agent Authorization VC Profile (AAVC) enables:</t>
            <ul>
              <li>Cross-domain interoperability: ASs in different domains can parse 
                            and evaluate the same VC</li>
              <li>Semantic clarity: Claim meanings are defined, reducing policy skew 
                            risk</li>
              <li>Extensibility: Organizations can add custom claims without breaking 
                            base interoperability</li>
              <li>Selective disclosure compatibility: Claims are structured to support 
                            SD-JWT VC presentation</li>
            </ul>
          </section>
          <section anchor="required-claims" numbered="true" toc="default">
            <name>Required Claims for Cross-Domain Interoperability</name>
            <t>The credentialSubject MUST include these claims for a VC to be 
                        recognized across domains:</t>
            <dl>
              <dt>id (required)</dt>
              <dd>Globally unique identifier for the agent. SHOULD be a dereferenceable 
                            URI pointing to client-id metadata.</dd>
              <dt>agentType (required)</dt>
              <dd>
                <t>Classification of the agent. Receiving domains use this to apply 
                            type-specific policies. Implementations MUST support:</t>
                <ul>
                  <li>tool-agent: Provides specific tool/skill capabilities</li>
                  <li>orchestrator-agent: Coordinates other agents</li>
                  <li>workflow-agent: Executes multi-step workflows</li>
                  <li>system-agent: Long-running infrastructure agent</li>
                  <li>ephemeral-agent: Short-lived, single-task</li>
                </ul>
              </dd>
              <dt>authorizedScopes (required)</dt>
              <dd>Authorization scopes this agent may request. Receiving domains map 
                            these to local authorization policies.</dd>
              <dt>issuerDomain (required)</dt>
              <dd>Administrative domain of the credential issuer. Receiving ASs use 
                            this to look up trust relationships and policy mappings.</dd>
            </dl>
          </section>
          <section anchor="recommended-claims" numbered="true" toc="default">
            <name>Recommended Claims for Production Deployments</name>
            <dl>
              <dt>dataSensitivityClearance (recommended)</dt>
              <dd>
                <t>Maximum data sensitivity level this agent may access. Standard 
                            values:</t>
                <ul>
                  <li>public - Publicly available information</li>
                  <li>internal - Organization-internal, non-sensitive</li>
                  <li>confidential - Business-sensitive information</li>
                  <li>restricted - Highly sensitive, need-to-know basis</li>
                  <li>regulated - Subject to regulatory controls (PII, PHI, PCI)</li>
                </ul>
              </dd>
              <dt>complianceAttestations (recommended)</dt>
              <dd>Compliance certifications relevant to cross-domain trust decisions. 
                            Should include standard, scope, validUntil, and optionally 
                            certificationBody.</dd>
              <dt>operationalConstraints (recommended)</dt>
              <dd>Runtime constraints that receiving domains MAY enforce, including 
                            maxConcurrentSessions, maxRequestsPerMinute, allowedTimeWindows, and 
                            geofence restrictions.</dd>
              <dt>delegation (recommended)</dt>
              <dd>Delegation permissions as defined in 
                            <xref target="delegation-vc-claims"/>.</dd>
            </dl>
          </section>
          <section anchor="extension-mechanism" numbered="true" toc="default">
            <name>Extension Mechanism</name>
            <t>Organizations MAY extend the profile with additional claims by:</t>
            <ol>
              <li>Defining a JSON-LD context document for the extension</li>
              <li>Including the extension context URI in the VC's @context array</li>
              <li>Adding extension claims under a namespace prefix</li>
            </ol>
            <t>Implementations receiving VCs with unrecognized claims SHOULD:</t>
            <ul>
              <li>Ignore unknown claims (do not reject the VC)</li>
              <li>Log unrecognized claims for operational visibility</li>
              <li>NOT make authorization decisions based on claims they cannot 
                            interpret</li>
            </ul>
          </section>
          <section anchor="interop-requirements" numbered="true" toc="default">
            <name>Interoperability Requirements</name>
            <t>For cross-domain interoperability, implementations:</t>
            <t>MUST:</t>
            <ul>
              <li>Support required claims (id, agentType, authorizedScopes, 
                            issuerDomain)</li>
              <li>Recognize the AgentAuthorizationCredential type</li>
              <li>Verify the credential proof before processing claims</li>
              <li>Reject VCs missing required claims</li>
            </ul>
            <t>SHOULD:</t>
            <ul>
              <li>Support recommended claims</li>
              <li>Implement selective disclosure for cross-domain presentations</li>
              <li>Maintain logs of cross-domain VC presentations</li>
            </ul>
            <t>MAY:</t>
            <ul>
              <li>Define and process organization-specific extensions</li>
              <li>Implement additional validation beyond profile requirements</li>
            </ul>
          </section>
        </section>
      </section>
    </section>
    <section anchor="example" numbered="true" toc="default">
      <name>Example</name>
      <t>This section provides illustrative examples of how Client-ID Metadata can be extended with Verifiable Credentials for agent identity. These examples demonstrate the recommended Approach 4 and show how the concepts apply to scenarios similar to the travel booking use case described earlier. These examples are non-normative and intended to demonstrate the concepts discussed in this document.</t>
      <section>
        <name>Client-ID Metadata Example</name>
        <t>The following example shows OAuth client metadata that includes a Verifiable Credential in the "vc+jwt" field:</t>
        <sourcecode name="metadata-example.json" type="json"><![CDATA[
{
  "client_id": "https://agents.example.com/agent-001/metadata.json",
  "client_name": "Customer Service Agent 001",
  "jwks_uri": "https://agents.example.com/agent-001/jwks.json",
  "token_endpoint_auth_method": "private_key_jwt",
  "grant_types": ["client_credentials"],
  "scope": "read:orders write:tickets",
  "vc+jwt": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJAY29udGV4dCI6W..."
}
]]></sourcecode>
        <t>The "vc+jwt" field contains a JWT-encoded Verifiable Credential. The actual JWT would be significantly longer and contain the complete credential structure shown in the next subsection.</t>
      </section>
      <section>
        <name>Verifiable Credential Example</name>
        <t>The following example shows the decoded structure of a Verifiable Credential for an agent (before JWT encoding):</t>
        <sourcecode name="vc-example.json" type="json"><![CDATA[
{
  "@context": [
    "https://www.w3.org/2018/credentials/v1",
    "https://example.org/agent-credentials/v1"
  ],
  "type": ["VerifiableCredential", "AgentIdentityCredential"],
  "issuer": "did:web:issuer.example.com",
  "issuanceDate": "2025-01-15T10:30:00Z",
  "expirationDate": "2026-01-15T10:30:00Z",
  "credentialSubject": {
    "id": "https://agents.example.com/agent-001/metadata.json",
    "agentName": "Customer Service Agent 001",
    "agentVersion": "2.1.0",
    "agentType": "customer-service",
    "owner": "did:web:example.com",
    "authorizedCapabilities": [
      "order-lookup",
      "ticket-creation",
      "customer-notification"
    ],
    "delegatedCredentials":[
      {
	"id": "https://agents.partner.com/agent-111/metadata.json",
     	"agentName":"Sec Agent 111",
	"delegatedBy":"https://agents.example.com/agent-001/metadata.json",
	"delegationChain": [
		"urn:uuid:*****",
		"urn:uuid:***"
    	],
	"scope": "read:sec-remediate:isolations",
	"authorizedCapabilities": [
		"enrichment",
		"isolation-request"
    	],
    "constraints": {
      "dpopNonceRequired": true
	}
      }
    ],
    "complianceFrameworks": ["SOC2-TypeII", "ISO-27001"],
    "delegationLevel": 1,
    "maxDelegationDepth": 2
  },
  "credentialStatus": {
    "id": "https://issuer.example.com/status/2024/12345",
    "type": "StatusList2021Entry",
    "statusPurpose": "revocation",
    "statusListIndex": "12345",
    "statusListCredential": "https://issuer.example.com/status/2024"
  }
}
]]></sourcecode>
        <t>Note: The actual credential would include a "proof" section with cryptographic signatures. The proof section is omitted here for clarity, as it would add significant length to the example. The proof structure varies depending on the signature suite used (e.g., Ed25519Signature2020, JsonWebSignature2020).</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="security-considerations" numbered="true" toc="default">
        <name>Security Considerations</name>
        <t>This section addresses security considerations specific to cross-domain 
                authorization information sharing. Implementations MUST also follow security 
                guidance in <xref target="RFC6819"/>, <xref target="W3C.VCDM2.0"/>, and 
                <xref target="I-D.ietf-oauth-client-id-metadata-document"/>.</t>
        <section anchor="threat-model" numbered="true" toc="default">
          <name>Threat Model for Cross-Domain Authorization Sharing</name>
          <t>This section defines threats specific to sharing authorization information 
                across administrative domain boundaries. General OAuth and VC security threats 
                are addressed in <xref target="RFC6819"/> and <xref target="W3C.VCDM2.0"/>; 
                this section focuses on threats that emerge or are amplified when credentials 
                cross domain boundaries.</t>
          <section anchor="protected-assets" numbered="true" toc="default">
            <name>Protected Assets in Cross-Domain Scenarios</name>
            <t>Beyond standard authorization assets, cross-domain sharing introduces 
                    additional assets requiring protection:</t>
            <dl>
              <dt>Cross-Domain Trust Relationships</dt>
              <dd>The established trust between domains that enables agents to operate 
                        across organizational boundaries. Compromise affects all agents relying 
                        on that trust relationship.</dd>
              <dt>Shared Authorization Semantics</dt>
              <dd>The agreed-upon meaning of claims, scopes, and compliance attestations 
                        between domains. Semantic drift or manipulation can cause authorization 
                        decisions that violate one or both domains' policies.</dd>
              <dt>Delegation Chains Spanning Domains</dt>
              <dd>When agent A in Domain X delegates to agent B in Domain Y, the chain 
                        itself becomes an asset requiring integrity protection across trust 
                        boundaries.</dd>
            </dl>
          </section>
          <section anchor="threat-actors" numbered="true" toc="default">
            <name>Cross-Domain Specific Threat Actors</name>
            <dl>
              <dt>Rogue Domain</dt>
              <dd>An entire domain that participates in the trust federation but issues 
                        fraudulent VCs or makes incorrect authorization decisions—either through 
                        compromise or malicious operation. Unlike a single rogue IdP, a rogue 
                        domain may control IdP, AS, and metadata endpoints coherently.</dd>
              <dt>Cross-Domain Insider</dt>
              <dd>An administrator with legitimate access in Domain A who abuses 
                        cross-domain trust relationships to gain unauthorized access to Domain B's 
                        resources.</dd>
            </dl>
          </section>
          <section anchor="attack-categories" numbered="true" toc="default">
            <name>Cross-Domain Attack Categories</name>
            <section anchor="trust-anchor-attacks" numbered="true" toc="default">
              <name>Trust Anchor Attacks</name>
              <dl>
                <dt>Metadata Endpoint Compromise</dt>
                <dd>
                  <t>An attacker gains control of the URL hosting an agent's client-id 
                            metadata document and substitutes malicious metadata or VCs. Because the 
                            metadata URL is the trust anchor for cross-domain identity, compromise 
                            enables complete identity takeover across all trusting domains.</t>
                  <t>Cross-domain amplification: In single-domain scenarios, the AS 
                            typically has out-of-band trust with clients. In cross-domain scenarios, 
                            the metadata endpoint IS the sole trust anchor—there's no fallback.</t>
                </dd>
                <dt>Metadata Poisoning</dt>
                <dd>
                  <t>Injection of false claims into legitimate metadata documents 
                            through supply chain attacks, DNS hijacking, or exploitation of hosting 
                            infrastructure.</t>
                  <t>Cross-domain amplification: Poisoned metadata propagates trust 
                            violations to all domains that fetch and cache the metadata.</t>
                </dd>
              </dl>
            </section>
            <section anchor="semantic-attacks" numbered="true" toc="default">
              <name>Semantic Attacks</name>
              <dl>
                <dt>Policy Skew Exploitation</dt>
                <dd>An agent authorized under Domain A's policies operates in Domain B 
                            where different security policies apply. The agent performs actions that 
                            are within Domain A's authorized scope but violate Domain B's policies.</dd>
                <dt>Claim Semantic Drift</dt>
                <dd>Domains interpret the same claim differently, leading to authorization 
                            decisions that neither domain intended.</dd>
                <dt>Compliance Attestation Mismatch</dt>
                <dd>Compliance attestations (SOC2, ISO-27001, GDPR) in VCs are accepted 
                            at face value without verifying that the issuing domain's certification 
                            scope covers the receiving domain's requirements.</dd>
              </dl>
            </section>
            <section anchor="delegation-attacks" numbered="true" toc="default">
              <name>Delegation Attacks Across Domains</name>
              <dl>
                <dt>Cross-Domain Privilege Amplification</dt>
                <dd>In multi-hop delegation (A to B to C) where agents belong to different 
                            domains, downstream agents in permissive domains accumulate effective 
                            permissions that exceed what the originating principal intended.</dd>
                <dt>Accountability Chain Breakage</dt>
                <dd>Delegation chains that cross domain boundaries lose forensic 
                            continuity. When incidents occur, attribution cannot be reconstructed 
                            because each domain only has partial visibility.</dd>
                <dt>Confused Deputy Across Trust Boundaries</dt>
                <dd>An attacker in Domain A tricks a trusted agent in Domain B into 
                            performing actions on their behalf that the attacker couldn't perform 
                            directly—exploiting the cross-domain trust relationship. 
                            See <xref target="Hardy1988"/>.</dd>
              </dl>
            </section>
            <section anchor="lateral-movement" numbered="true" toc="default">
              <name>Cross-Domain Lateral Movement</name>
              <t>Using legitimate cross-domain authorization to pivot from a compromised 
                        position in Domain A to resources in Domain B that would not otherwise be 
                        accessible. An attacker compromises a low-privilege agent in Domain A. 
                        That agent has cross-domain authorization to Domain B. The attacker uses 
                        the agent's credentials to establish a foothold in Domain B, then escalates 
                        within Domain B.</t>
            </section>
            <section anchor="correlation-attacks" numbered="true" toc="default">
              <name>Correlation and Privacy Attacks</name>
              <t>Linking agent activities across domains using stable identifiers in VCs 
                        to build profiles of organizational operations, potentially revealing 
                        sensitive business processes or security postures.</t>
              <t>Cross-domain amplification: In single-domain scenarios, the domain 
                        controls what's logged. In cross-domain scenarios, each domain receiving 
                        the VC can correlate independently, and the agent's home domain cannot 
                        prevent this.</t>
            </section>
          </section>
          <section anchor="trust-establishment" numbered="true" toc="default">
            <name>Trust Establishment Between Domains</name>
            <section anchor="domain-trust-lists" numbered="true" toc="default">
              <name>Domain Trust Lists</name>
              <t>Before accepting VCs from another domain, an Authorization Server 
                        MUST verify that the issuing domain is in an explicitly configured trust 
                        list. Implementations MUST NOT implicitly trust domains based solely on 
                        successful cryptographic verification of the VC.</t>
              <t>Trust list entries SHOULD include:</t>
              <ul>
                <li>Domain identifier (issuerDomain claim value)</li>
                <li>Accepted VC types from that domain</li>
                <li>Scope of trust (which local resources may be accessed)</li>
                <li>Expiration or review date for the trust relationship</li>
              </ul>
            </section>
            <section anchor="policy-mapping" numbered="true" toc="default">
              <name>Cross-Domain Policy Mapping</name>
              <t>Implementations MUST NOT assume semantic equivalence of claims across 
                        domains. Before accepting a VC from another domain, the AS SHOULD 
                        verify:</t>
              <ol>
                <li>Explicit mapping exists between the foreign domain's claim 
                            semantics and local policy requirements</li>
                <li>Compliance attestations in the VC meet local regulatory 
                            requirements (not just the issuing domain's)</li>
                <li>Scope values have been mapped to local authorization semantics</li>
              </ol>
            </section>
            <section anchor="trust-lifecycle" numbered="true" toc="default">
              <name>Trust Relationship Lifecycle</name>
              <t>Cross-domain trust relationships MUST have defined lifecycles:</t>
              <ul>
                <li>Periodic review and re-validation</li>
                <li>Documented procedures for trust relationship termination</li>
                <li>Immediate revocation capability when a trusted domain is 
                            compromised</li>
                <li>Notification mechanisms between domains for security events</li>
              </ul>
            </section>
          </section>
          <section anchor="metadata-endpoint-security" numbered="true" toc="default">
            <name>Metadata Endpoint Security for Cross-Domain Trust</name>
            <t>Because the client-id metadata endpoint is the sole trust anchor for 
                    cross-domain agent identity, it requires enhanced protection beyond typical 
                    endpoint security.</t>
            <section anchor="endpoint-integrity" numbered="true" toc="default">
              <name>Endpoint Integrity Beyond Transport</name>
              <t>Metadata documents SHOULD be signed independently of the transport 
                        layer, allowing verification even if TLS is compromised or if the 
                        document is cached by intermediaries.</t>
            </section>
            <section anchor="change-detection" numbered="true" toc="default">
              <name>Change Detection for Cached Metadata</name>
              <t>Authorization Servers SHOULD:</t>
              <ul>
                <li>Cache fetched metadata documents with appropriate TTLs</li>
                <li>Detect and alert on unexpected changes to critical fields 
                            (jwks_uri, vc+jwt, token_endpoint_auth_method)</li>
                <li>Implement anomaly detection for metadata that changes more 
                            frequently than expected</li>
              </ul>
            </section>
            <section anchor="availability-dependencies" numbered="true" toc="default">
              <name>Cross-Domain Availability Dependencies</name>
              <t>When metadata endpoints are unavailable, cross-domain authorization 
                        fails. Implementations SHOULD:</t>
              <ul>
                <li>Cache validated metadata with TTLs appropriate to the sensitivity 
                            of protected resources</li>
                <li>Implement circuit breakers to prevent cascading failures</li>
                <li>Define graceful degradation policies</li>
              </ul>
            </section>
          </section>
          <section anchor="delegation-security" numbered="true" toc="default">
            <name>Delegation Security Across Domain Boundaries</name>
            <section anchor="boundary-checkpoints" numbered="true" toc="default">
              <name>Domain Boundary Checkpoints</name>
              <t>When a delegation chain crosses a domain boundary, the receiving 
                        domain's AS MUST:</t>
              <ul>
                <li>Fully verify the upstream delegation chain before accepting</li>
                <li>Apply local policy to the delegation</li>
                <li>Log the domain boundary crossing for audit purposes</li>
              </ul>
              <t>Receiving domains SHOULD consider the status of delegated credentials and, where 
		status information is available, avoid making authorization decisions that rely 
		on revoked,suspended, or suspended delegation chain elements, according to local policy.</t>
              <t>Deployments concerned with stale delgations MAY apply bounded caching and periodic
		revalidation of delegation status appropriate to the sensitivity of protected resources.</t>
            </section>
            <section anchor="scope-narrowing" numbered="true" toc="default">
              <name>Monotonic Scope Narrowing Across Domains</name>
              <t>Implementations MUST enforce that effective scope can only decrease 
                        (or remain the same) at each delegation step, including when crossing 
                        domain boundaries. The receiving domain MUST apply its local policy as 
                        an additional constraint on effective scope.</t>
            </section>
            <section anchor="chain-preservation" numbered="true" toc="default">
              <name>Accountability Chain Preservation</name>
              <t>Delegation chains spanning domains MUST maintain cryptographically 
                        verifiable accountability. Each domain SHOULD:</t>
              <ul>
                <li>Preserve the incoming delegation chain in its audit logs</li>
                <li>Add its own delegation record when extending the chain</li>
                <li>Provide APIs for authorized forensic queries from upstream 
                            domains</li>
              </ul>
            </section>
          </section>
          <section anchor="privacy-considerations" numbered="true" toc="default">
            <name>Privacy Considerations for Cross-Domain Sharing</name>
            <section anchor="selective-disclosure" numbered="true" toc="default">
              <name>Selective Disclosure for Cross-Domain Presentations</name>
              <t>Agents presenting VCs across domain boundaries SHOULD use selective 
                        disclosure mechanisms (SD-JWT VC, BBS+ signatures) to reveal only claims 
                        necessary for the specific cross-domain authorization request.</t>
            </section>
            <section anchor="correlation-risk" numbered="true" toc="default">
              <name>Correlation Risk Assessment</name>
              <t>Organizations SHOULD assess cross-domain correlation risks before 
                        establishing trust relationships, including whether agent identifiers 
                        enable activity tracking by foreign domains.</t>
            </section>
          </section>
        </section>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This document introduces a new OAuth client metadata parameter "vc+jwt" as described in the Solution Analysis section (Approach 4). If this approach is standardized, the following registration would be required:</t>
      <ul>
        <li><strong>Registry:</strong> IANA [`OAuth Dynamic Client Registration Metadata`](https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#client-metadata) registry</li>
        <li><strong>Client Metadata Name:</strong> vc+jwt</li>
        <li><strong>Client Metadata Description:</strong> JWT-encoded Verifiable Credential</li>
        <li><strong>Change Controller:</strong> TBD</li>
        <li><strong>Reference:</strong> https://www.w3.org/TR/vc-data-model-2.0</li>
      </ul>
      <t>This informational document does not make a formal request for IANA registration at this time. Registration would be appropriate if this approach is adopted and progresses to a standards track specification.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7591" target="https://www.rfc-editor.org/info/rfc7591">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Protocol</title>
            <author initials="J." surname="Richer" role="editor"/>
            <author initials="M." surname="Jones"/>
            <author initials="J." surname="Bradley"/>
            <author initials="M." surname="Machulak"/>
            <author initials="P." surname="Hunt"/>
            <date year="2015" month="July"/>
          </front>
        </reference>
        <reference anchor="I-D.abbey-scim-agent-extension">
          <front>
            <title>SCIM Extensions for Agents</title>
            <author surname="Abbey" initials="J."/>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="I-D.wahl-scim-agent-schema">
          <front>
            <title>SCIM Schema for Agents</title>
            <author surname="Wahl" initials="M."/>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-oauth-client-id-metadata-document">
          <front>
            <title>OAuth 2.0 Client Identity Metadata Document</title>
            <author surname="Jones" initials="M."/>
            <author surname="Sakimura" initials="N."/>
            <author surname="Bradley" initials="J."/>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="W3C.VCDM2.0" target="https://www.w3.org/TR/vc-data-model-2.0/">
          <front>
            <title>Verifiable Credentials Data Model v2.0</title>
            <author>
              <organization>W3C</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="RFC6819" target="https://www.rfc-editor.org/info/rfc6819">
          <front>
            <title>OAuth 2.0 Threat Model and Security Considerations</title>
            <author initials="T." surname="Lodderstedt" role="editor"/>
            <author initials="M." surname="McGloin"/>
            <author initials="P." surname="Hunt"/>
            <date year="2013" month="January"/>
          </front>
        </reference>
        <reference anchor="RFC8693" target="https://www.rfc-editor.org/info/rfc8693">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author initials="M." surname="Jones"/>
            <author initials="A." surname="Nadalin"/>
            <author initials="B." surname="Campbell"/>
            <author initials="J." surname="Bradley"/>
            <author initials="C." surname="Mortimore"/>
            <date year="2020" month="January"/>
          </front>
        </reference>
        <reference anchor="Hardy1988">
          <front>
            <title>The Confused Deputy: (or why capabilities might have been invented)</title>
            <author initials="N." surname="Hardy"/>
            <date year="1988"/>
          </front>
          <seriesInfo name="ACM SIGOPS Operating Systems Review" value="Volume 22, Issue 4"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author surname="Bradner" initials="S."/>
            <date year="1997"/>
          </front>
          <seriesInfo name="RFC" value="2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author surname="Leiba" initials="B."/>
            <date year="2017"/>
          </front>
          <seriesInfo name="RFC" value="8174"/>
        </reference>
      </references>
    </references>
  </back>
</rfc>
