Internet-Draft AIP August 2026
Prakash Expires 20 February 2027 [Page]
Workgroup:
Individual Submission
Internet-Draft:
draft-prakash-aip-01
Published:
Intended Status:
Informational
Expires:
Author:
S. Prakash
Independent

Agent Identity Protocol (AIP): Verifiable Delegation for AI Agent Systems

Abstract

This document specifies the Agent Identity Protocol (AIP), a protocol for verifiable, delegable identity for AI agent systems. AIP introduces Invocation-Bound Capability Tokens (IBCTs) that bind identity, authorization, scope constraints, and provenance into a single cryptographic artifact. Two token modes are defined: a compact mode using JSON Web Tokens (JWT) with Ed25519 signatures for single-hop interactions, and a chained mode using Biscuit tokens with append-only blocks and Datalog policy evaluation for multi-hop delegation chains. Protocol bindings are specified for the Model Context Protocol (MCP), Agent-to-Agent Protocol (A2A), and generic HTTP APIs. The protocol addresses authentication gaps in current AI agent infrastructure where a survey of approximately 2,000 MCP servers found all lacked authentication. This revision specifies a normative verification algorithm, defines the canonical policy encoding for chained mode, describes how AIP composes with workload identity systems such as SPIFFE, and maps AIP against the cross-organization delegation requirements enumerated in [I-D.reece-wimse-cross-org-delegation].

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 20 February 2027.

Table of Contents

1. Introduction

AI agent systems are increasingly deployed in multi-agent architectures where an orchestrator decomposes tasks and delegates subtasks to specialist agents. The protocols enabling this communication, notably the Model Context Protocol (MCP) and the Agent-to-Agent Protocol (A2A), solve the connectivity problem but do not solve the identity problem.

MCP provides no built-in authentication layer. A2A uses self-declared identities with no attestation mechanism. OAuth 2.1, recently added to MCP, covers single-hop client-to-server authentication but does not address multi-hop delegation chains. When an orchestrator delegates to a specialist that calls a tool, the delegation chain that led to the tool invocation is lost.

AIP fills this gap by introducing Invocation-Bound Capability Tokens (IBCTs) that answer four questions for every agent action: who authorized this action, through which delegation chain, with what constraints at each hop, and what was the outcome.

1.1. Requirements Language

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 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

2. Identity Scheme

AIP defines two identifier schemes for agent identity:

2.1. DNS-Based Identifiers

DNS-based identifiers follow the format:

aip:web:<domain>/<path>

Example: aip:web:example.com/agents/research-analyst

DNS-based identifiers are suitable for long-lived agents with stable domain ownership. Identity documents are resolved via HTTPS at a well-known path.

2.2. Self-Certifying Identifiers

aip:key:ed25519:<multibase-encoded-public-key>

Self-certifying identifiers derive identity from the public key itself. They are suitable for ephemeral agents that do not require DNS infrastructure. The identifier is deterministically computed from the Ed25519 public key using multibase encoding.

2.3. Identity Document

Each agent with a DNS-based identifier MUST publish an identity document at:

https://<domain>/.well-known/aip/<path>.json

The identity document is a JSON object containing:

  • aip: Protocol version (MUST be "1.0")
  • id: The agent's AIP identifier
  • public_keys: Array of public key objects with validity windows
  • name: Human-readable agent name
  • delegation: Delegation preferences
  • protocols: Supported protocol bindings
  • document_signature: Ed25519 signature over the canonicalized document
  • expires: Document expiration timestamp

The document MUST be self-signed. Verification uses JSON Canonicalization Scheme (JCS) [RFC8785]: remove the document_signature field, canonicalize the remaining JSON, and verify the Ed25519 signature against a currently-valid public key.

3. Token Formats

AIP defines two token modes that share a common identity scheme but differ in delegation capability.

3.1. Compact Mode (JWT)

Compact mode tokens are JSON Web Tokens [RFC7519] signed with Ed25519 (EdDSA). They support single-hop interactions only.

Header:

{"alg": "EdDSA", "typ": "aip+jwt"}

Claims:

  • iss: Issuer AIP identifier (REQUIRED)
  • sub: Subject/holder AIP identifier (REQUIRED)
  • scope: Array of authorized capabilities (REQUIRED)
  • budget_usd: Authorization budget ceiling in USD (REQUIRED)
  • max_depth: Maximum delegation depth, 0 for no further delegation (REQUIRED)
  • iat: Issued-at timestamp (REQUIRED)
  • exp: Expiration timestamp (REQUIRED)

Token lifetime SHOULD be less than one hour. Both iss and sub MUST be valid AIP identifiers.

3.2. Chained Mode (Biscuit)

Chained mode tokens use Biscuit [BISCUIT] tokens with append-only blocks and Datalog policy evaluation. They support multi-hop delegation with cryptographic scope attenuation.

A chained token consists of ordered blocks:

  • Block 0 (Authority): Root identity, initial capabilities, budget, max_depth, expiration. Signed by the root authority.
  • Blocks 1..N-1 (Delegation): Each block narrows scope. Contains delegator, delegate, attenuated capabilities (as Biscuit right facts), attenuated budget, and a non-empty context field. Signed by the delegator.
  • Block N (Completion, optional): Execution outcome. Contains status, result_hash (SHA-256), verification_status, and optional resource usage metrics. Signed by the executing agent.

3.3. Scope Attenuation

Scope attenuation is a fundamental security property of AIP. At each delegation step, scope can only narrow or remain equal, never widen. This applies across four dimensions:

  • Tools: Child scope MUST be a subset of parent scope
  • Budget: Child budget MUST be less than or equal to parent budget
  • Domains: Child domains MUST be a subset of parent domains
  • Time: Child expiration MUST be less than or equal to parent expiration

Verifiers MUST check attenuation at every hop in the delegation chain. A wildcard (*) in the parent permits any specific value in the child, but a specific value in the parent MUST NOT widen to a wildcard in the child.

3.4. Policy Profiles

Chained mode tokens support three policy profiles of increasing expressiveness:

  • Simple: Templated rules requiring no Datalog knowledge. The library generates canonical Datalog for tool allowlists, budget ceilings, delegation depth, and time expiry.
  • Standard: Curated Datalog subset without recursion and with bounded evaluation.
  • Advanced: Full Datalog with a maximum 1000 iteration limit. Opt-in only.

3.4.1. Canonical Block Encoding

Interoperability of chained mode depends on every implementation emitting the same Datalog for the same authorization intent. Two encodings that are individually defensible will not verify against each other. Implementations of the Simple profile MUST emit exactly the forms below.

The authority block (block 0) MUST contain:

identity("<aip-identifier>");
principal("<identifier>");          ; OPTIONAL, on-behalf-of party
right("<scope>");                   ; one fact per granted scope
max_depth(<n>);
budget_ceiling(<cents>);            ; OPTIONAL, integer cents
check if tool($t), ["<scope>", ...].contains($t);
check if time($t), $t <= <expiry>;

Each delegation block (blocks 1 through N) MUST contain:

delegator("<aip-identifier>");
delegate("<aip-identifier>");
context("<non-empty string>");
budget_ceiling(<cents>);            ; OPTIONAL, integer cents
check if tool($t), ["<scope>", ...].contains($t);
check if time($t), $t <= <expiry>;  ; OPTIONAL, <= parent expiry

Scope narrowing follows from conjunction: because every block contributes a check if tool($t) constraint and all checks in all blocks MUST pass, the set of authorized tools is the intersection of the per-block allowlists. A delegation block cannot widen scope, because naming a tool absent from an ancestor's allowlist produces an empty intersection and authorizes nothing.

Budget is carried as a fact rather than a check. A Datalog check of the form check if budget($b), $b <= N binds to whatever budget facts are in scope during evaluation, which is not the same question as whether this block's ceiling narrows its parent's. Encoding budget as a check therefore either rejects valid chains or, if the verifier supplies a satisfying ambient fact, passes unconditionally. Budget attenuation is verified structurally instead, in step V4 of Section 4.

Implementations MUST NOT emit a check statement over budget, and verifiers MUST NOT inject an ambient budget fact during policy evaluation.

3.5. Budget Semantics

Budget values in AIP tokens represent per-token authorization ceilings, NOT running balances. A delegator asserts "I authorize up to $X for this task" at delegation time.

A budget ceiling is both declared and verified, and the two are distinct operations:

  • Declared as a budget_ceiling fact in the block that establishes it, in integer cents.
  • Verified structurally at every hop: a verifier MUST confirm that each block's declared ceiling is non-negative and does not exceed the nearest ancestor block that declares one. A block that declares no ceiling inherits its nearest ancestor's. This check is specified in step V4 of Section 4.

What the token does NOT do is track cumulative spending. Nothing in a delegation chain records how much of a ceiling has been consumed, and a verifier evaluating a single request cannot know. Enforcement of actual spend against a ceiling is out of band, and is the responsibility of the orchestration platform at dispatch time. Completion blocks record actual cost_usd for audit purposes, which supports after-the-fact reconciliation but is not an authorization control.

Implementations MUST NOT present ceiling verification as spend enforcement. A chain that verifies establishes that no hop authorized more than it held. It does not establish that the authorized amount remains available.

4. Verification Algorithm

This section is normative. A verifier presented with an AIP token MUST perform steps V1 through V7 in the order given before treating any identity or capability asserted by the token as established. The ordering matters: no step that reads block content is permitted before chain integrity is established in V1.

4.1. Step V1: Chain Integrity

The verifier MUST deserialize the token from its wire form and verify the signature on every block against the root public key. In chained mode this means verifying the full signature chain from block 0 through block N, not the signature on the presented leaf alone.

Verification MUST be performed against the serialized form as received. An implementation that holds a token in a parsed in-memory representation MUST re-serialize and re-verify before relying on it, rather than trusting the state of its own parsed object.

A verifier MUST NOT accept any fact, check, or claim from a block that it has not verified as part of a chain rooted at the issuer's key. Failure returns aip_signature_invalid.

4.2. Step V2: Root Binding

The verifier MUST extract the issuer from the identity fact in block 0 and confirm that the root public key used in V1 is the key bound to that identifier:

  • For aip:web: identifiers, by resolving the identity document as specified in Section 2.3 and comparing the published key.
  • For aip:key: identifiers, by decoding the key from the identifier itself and comparing.

An identifier that does not resolve, or that resolves to a different key, returns aip_identity_unresolvable. A verifier MUST NOT infer the root key from the token.

4.3. Step V3: Depth

The verifier MUST confirm that the number of delegation blocks does not exceed the max_depth declared in block 0. Failure returns aip_depth_exceeded.

4.4. Step V4: Structural Attenuation Walk

The verifier MUST walk the chain from block 1 to block N and confirm, for each block i, that every capability dimension is narrower than or equal to the corresponding dimension in block i-1:

  • Scope: the allowlist in block i MUST be a subset of the allowlist in block i-1. Failure returns aip_scope_insufficient.
  • Budget: a budget_ceiling declared in block i MUST be non-negative and MUST NOT exceed the ceiling declared by the nearest ancestor that declares one. Failure returns aip_budget_exceeded.
  • Time: an expiry declared in block i MUST NOT be later than the expiry declared by the nearest ancestor that declares one, and no block's expiry may be in the past. Failure returns aip_token_expired.
  • Domains: the domain set in block i MUST be a subset of the domain set in block i-1. Failure returns aip_scope_insufficient.
  • Principal: if block 0 declares a principal, no subsequent block may declare a different one. The on-behalf-of principal is invariant along a chain: intermediaries narrow authority, they do not substitute the party on whose behalf the chain acts. Failure returns aip_token_malformed.

A dimension absent from block i inherits the value of its nearest ancestor. A wildcard in an ancestor permits any specific value in a descendant. A specific value in an ancestor MUST NOT widen to a wildcard in a descendant.

This step is REQUIRED and is not satisfied by the container format. A verifier MUST NOT rely on the semantics of an append-only token container to establish attenuation. Container-level signature chaining establishes that blocks were appended in order by successive keyholders, which is a different property: it prevents a block from being substituted, reordered, or forged, but it does not establish that the capabilities asserted in block i are a subset of those held by block i-1. Attenuation is a property of the capability content and MUST be checked as such, in addition to V1.

4.5. Step V5: Delegation Context

Every delegation block MUST carry a non-empty context fact. A verifier MUST reject a chain in which any delegation block omits it or supplies an empty value, returning aip_token_malformed.

4.6. Step V6: Policy Evaluation

The verifier MUST evaluate the token's policies with the ambient facts tool, time, and depth bound to the request under consideration, and MUST require that every check in every block passes.

The verifier MUST NOT introduce ambient facts beyond those named above. In particular it MUST NOT supply a budget fact: supplying one causes any budget check in the chain to evaluate against verifier-chosen data rather than against the token, which makes the check meaningless. Budget is handled in V4.

Failure returns aip_scope_insufficient.

4.7. Step V7: Revocation with Bounded Staleness

If the issuer's identity document advertises a revocation endpoint, the verifier MUST check whether any key in the chain has been revoked. Revocation data MAY be cached. A verifier MUST be configurable with a maximum acceptable staleness for cached revocation data, and MUST fail closed when its cached data is older than that bound, returning aip_key_revoked rather than proceeding on stale information.

Revocation responses MUST be signed by the issuer so that their authenticity is verifiable without a trusted transport to the revocation endpoint.

4.8. Verification Result

A token that passes V1 through V7 establishes: the identity of the issuer, the identity of each delegator and delegate in the chain, the capabilities available at the leaf, and that no hop in the chain exceeded the authority of its predecessor. It does not establish that the presenting party is the party the leaf was issued to. See Section 5.3.

5. Trust Anchors and Workload Identity

AIP answers a different question from a workload identity system, and the two compose rather than compete.

A workload identity system such as SPIFFE [SPIFFE], in the architecture described by [I-D.ietf-wimse-arch], answers "which workload is this?" It attests a running process against the platform it runs on and issues a credential that says so. Its trust boundary is the trust domain it administers, and it does not model authority passing between parties.

AIP answers "on whose authority is this being done, how far back, and can a party with no relationship to the origin verify it?" It carries delegation across hops and organizations, and it says nothing about whether the process presenting the token is the one the platform attested.

5.1. Anchor Modes

Block 0 of a chain is signed by the issuer's key. Three ways of establishing trust in that key are defined:

  • DNS-anchored: the issuer is an aip:web: identifier and the key is published in an identity document resolved over HTTPS. Trust derives from the Web PKI and DNS control.
  • Self-certifying: the issuer is an aip:key: identifier and the key is the identifier. Trust derives from whoever accepted the identifier.
  • Workload-attested: the issuer's key is bound to a workload identity credential issued by an external authority, and the identity document records that binding. Trust derives from that authority's attestation.

In workload-attested mode, an identity document MAY carry a workload_identity member naming the credential that attests the issuer key, for example a SPIFFE ID. A verifier that recognises the naming authority MAY treat that attestation as the basis for accepting the root key, in place of resolving the document over HTTPS. A verifier that does not recognise it MUST fall back to the DNS-anchored or self-certifying path, and MUST NOT treat an unrecognised attestation as an endorsement.

This is the deployment shape most likely in practice: a workload identity system establishes that the orchestrator is what it claims to be inside its own trust domain, and AIP carries what that orchestrator was permitted to delegate onward, across boundaries the workload identity system does not span.

5.2. Relationship to Token Exchange

A common deployment pattern carries delegation by repeated token exchange [RFC8693], in which each hop presents its credential to an authorization server and receives a narrowed token carrying an act claim naming the acting party.

The mechanisms differ in where verification happens. Token exchange places an authorization server on the path at each hop, and the relying party's assurance derives from trusting that server. An AIP chain is verified by the relying party directly from the token and the issuer's published key, with no synchronous call to the originating organization. The two are not exclusive: an exchanged token may serve as the credential that anchors block 0.

5.3. Proof of Possession

An AIP token as specified in this document is a bearer credential. Verification establishes what authority the chain conveys and that no hop exceeded its predecessor. It does not establish that the party presenting the token is the party the leaf was delegated to. A captured or relayed token is usable by whoever holds it, within the scope, time, and budget the chain permits.

Deployments requiring proof of possession MUST bind the token to a key at the transport or message layer. Mutual TLS, HTTP message signatures, and workload proof tokens [I-D.ietf-wimse-wpt] are all suitable. Specifying that binding is out of scope for this document, and is deliberately left to mechanisms already being standardized rather than duplicated here.

Implementations MUST NOT describe AIP verification as authenticating the presenter.

6. Protocol Bindings

6.1. MCP Binding

AIP tokens are transported in MCP via the X-AIP-Token HTTP header:

X-AIP-Token: <compact-or-chained-token>

For tokens exceeding 4KB, token-by-reference is supported:

X-AIP-Token-Ref: https://issuer/.well-known/aip/tokens/<id>

An MCP server extracts the token from the header, or fetches it from the reference URL, and then verifies it according to Section 4. On success it injects the verified identity into the request context, where the tool implementation MAY use it for authorization decisions, logging, or audit. The verification steps are not restated here; the algorithm is binding-independent, and an MCP server that verifies tokens differently from an A2A agent is a source of exactly the divergence this document exists to prevent.

Nine error codes are defined with appropriate HTTP status mappings: 401 for authentication failures (token_missing, token_malformed, signature_invalid, identity_unresolvable, token_expired, key_revoked) and 403 for authorization failures (scope_insufficient, budget_exceeded, depth_exceeded).

Servers declare AIP requirements via the require_aip field in their identity document's protocols.mcp configuration.

6.2. A2A Binding

In A2A interactions, AIP tokens are transported in the metadata.aip_token field of task submissions. Agent cards are extended with an aip_identity object containing the agent's AIP identifier and document URL.

The A2A verification flow adds a sixth step: the calling agent appends a delegation block with attenuated scope before sending the task, and the receiving agent verifies that the final delegation block delegates to its own AIP identifier.

6.3. HTTP Binding

For generic HTTP APIs not using MCP or A2A, tokens are transported via the Authorization header with the AIP scheme:

Authorization: AIP <base64url-encoded-token>

Token-by-reference uses the X-AIP-Token-Ref header with a 5-second fetch timeout and SSRF protection (reject reference URLs outside expected domain patterns).

7. Delegation Lifecycle

7.1. Bounded Depth

Block 0 declares max_depth (default: 3). Each delegation block increments effective depth by 1. If current depth equals max_depth, further delegation is forbidden. In compact mode, max_depth of 0 means the holder MUST NOT delegate further.

7.2. Delegation Context

Each delegation block MUST include a non-empty context field containing a human-readable description of the delegation purpose. Verifiers MUST reject tokens with missing or empty context. This requirement ensures audit trail integrity.

7.3. Ephemeral Agent Grants

For short-lived sub-agents, a parent agent generates an Ed25519 keypair, creates an aip:key: identifier, and appends a delegation block with scoped capabilities and a short TTL (5 minutes RECOMMENDED). The parent's identity document MAY set delegation.allow_ephemeral_grants to false to prevent this.

7.4. Key Rotation

DNS-based identifiers support zero-downtime key rotation through overlapping validity windows on public keys. A new key is published with a future valid_from timestamp. Both keys are valid during the overlap period. Recommended rotation period is 90 days. Cache TTL MUST NOT exceed 5 minutes.

Self-certifying identifiers cannot rotate keys; key rotation requires identity replacement, which is acceptable for ephemeral agents.

7.5. Revocation

AIP prefers short-lived tokens over revocation infrastructure. Compact mode tokens SHOULD have a TTL under 1 hour, making revocation generally unnecessary. For chained mode, key revocation (removing a key from the identity document) invalidates all tokens signed by that key. Token-specific revocation via Certificate Revocation Lists is deferred to v2.

8. Provenance and Audit

8.1. Completion Blocks

A completion block is the final block in a chained token, signed by the executing agent. It contains:

  • status: REQUIRED. One of "completed", "failed", or "partial".
  • result_hash: REQUIRED. SHA-256 hash of the output in format "sha256:<hex>".
  • verification_status: REQUIRED. One of "self_reported", "tool_verified", "peer_verified", or "human_verified".
  • tokens_used: OPTIONAL. LLM tokens consumed.
  • cost_usd: OPTIONAL. Actual cost incurred.
  • duration_ms: OPTIONAL. Wall-clock execution time.
  • ldp_provenance_id: OPTIONAL. Back-link to LDP provenance record.

8.2. Verification Trust Levels

AIP defines three escalating trust levels for completion data:

  • Level 1 (Self-Reported): Agent reports its own results with no independent verification. Default for trusted environments.
  • Level 2 (Counter-Signed): Delegator independently verifies the result and appends a verification block.
  • Level 3 (Third-Party Attested): External verifier (LDP peer, human reviewer, or audit service) signs an attestation block.

8.3. Audit Tokens

A completed chained token with a completion block appended is a self-contained audit artifact. It answers five questions without requiring an external database: who authorized (Block 0), through whom (delegation blocks), what constraints (Datalog policies), what happened (completion block), and whether it was verified (verification_status). Audit tokens are tamper-evident, non-repudiable, and verifiable offline using public keys from identity documents.

9. Security Considerations

This section addresses the security properties and threat model for AIP.

9.1. Threat Model

AIP is designed to resist the following attack categories:

  • Scope widening: An agent attempts to exceed its delegated capabilities. Prevented by cryptographic scope attenuation verification at each hop.
  • Delegation depth violation: An agent attempts to delegate beyond the maximum permitted depth. Prevented by depth tracking in each delegation block.
  • Token replay: A captured token is reused. Mitigated by short TTLs (under 1 hour recommended for compact mode).
  • Token forgery: An attacker constructs a token without holding the private key. Prevented by Ed25519 signature verification.
  • Identity spoofing: An agent claims a false identity. Prevented by identity document resolution and signature verification.
  • Audit evasion: An agent delegates with empty context to avoid audit trails. Prevented by mandatory non-empty context on all delegation blocks.
  • Ancestor substitution: An attacker holding a valid leaf block attempts to present it beneath a different, more permissive ancestor. Prevented by V1, which verifies the full signature chain from the root key rather than the leaf in isolation. A substituted ancestor breaks the chain, because each block's signature is produced by the key its predecessor committed to.

Two of these deserve to be separated, because conflating them is a common source of error. Signature chaining (V1) prevents blocks from being forged, reordered, or substituted. Attenuation checking (V4) prevents a block from asserting more than its predecessor held. The first is a property of the container; the second is a property of the capability content. Neither implies the other, and a verifier that performs only the first will accept a chain in which a delegation widened its own authority. Both are REQUIRED.

9.2. Adversarial Evaluation

Experimental evaluation across 600 adversarial attempts in six attack categories showed a 100% rejection rate. Two attack categories (delegation depth violation and audit evasion through empty context) are uniquely addressed by AIP's chained token structure and cannot be detected by standard JWT deployments. Details are reported in the companion paper [AIP-PAPER].

9.3. Cryptographic Agility

AIP v1 mandates Ed25519 exclusively. No algorithm negotiation is supported. This is a deliberate design choice to eliminate downgrade attacks and reduce implementation complexity. Future versions MAY introduce additional algorithms through the protocol version field.

9.4. Transport Security

Identity document resolution and token-by-reference fetching MUST use HTTPS. Implementations SHOULD enforce TLS 1.3 or later. Token-by-reference URLs MUST be validated against expected domain patterns to prevent SSRF attacks. Fetch timeout SHOULD be 5 seconds.

10. IANA Considerations

This document requests the following IANA registrations:

10.1. HTTP Authentication Scheme

Registration of the "AIP" HTTP authentication scheme in the "HTTP Authentication Scheme Registry":

  • Authentication Scheme Name: AIP
  • Reference: This document, Section 6.3

10.2. Well-Known URI

Registration of the "aip" well-known URI suffix in the "Well-Known URIs" registry:

  • URI Suffix: aip
  • Change Controller: IETF
  • Reference: This document, Section 2.3

10.3. Media Type

Registration of the "aip+jwt" structured syntax suffix:

  • Type name: application
  • Subtype name: aip+jwt
  • Reference: This document, Section 3.1

11. References

11.1. Normative References

[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC7519]
Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token (JWT)", RFC 7519, , <https://www.rfc-editor.org/info/rfc7519>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, , <https://www.rfc-editor.org/info/rfc8174>.
[RFC8785]
Rundgren, A., Jordan, B., and S. Erdtman, "JSON Canonicalization Scheme (JCS)", RFC 8785, , <https://www.rfc-editor.org/info/rfc8785>.
[RFC8693]
Jones, M., Nadalin, A., Campbell, B., Bradley, J., and C. Mortimore, "OAuth 2.0 Token Exchange", RFC 8693, , <https://www.rfc-editor.org/info/rfc8693>.

11.2. Informative References

[SPIFFE]
Cloud Native Computing Foundation, "Secure Production Identity Framework for Everyone (SPIFFE)", , <https://spiffe.io/>.
[I-D.ietf-wimse-arch]
IETF WIMSE Working Group, "Workload Identity in a Multi System Environment (WIMSE) Architecture", Work in Progress, Internet-Draft, draft-ietf-wimse-arch, , <https://datatracker.ietf.org/doc/html/draft-ietf-wimse-arch>.
[I-D.ietf-wimse-wpt]
IETF WIMSE Working Group, "WIMSE Workload Proof Token", Work in Progress, Internet-Draft, draft-ietf-wimse-wpt, , <https://datatracker.ietf.org/doc/html/draft-ietf-wimse-wpt>.
[I-D.reece-wimse-cross-org-delegation]
Reece, M., "Cross-Organizational Delegation for Workload and Agent Identity: Problem Statement and Requirements", Work in Progress, Internet-Draft, draft-reece-wimse-cross-org-delegation-00, , <https://datatracker.ietf.org/doc/html/draft-reece-wimse-cross-org-delegation-00>.
[I-D.rampalli-pedigree]
Rampalli, K., "PEDIGREE: Verifiable Delegation Identity for Agentic AI Systems", Work in Progress, Internet-Draft, draft-rampalli-pedigree, , <https://datatracker.ietf.org/doc/html/draft-rampalli-pedigree>.
[BISCUIT]
Music, G., "Biscuit Authorization Token", , <https://www.biscuitsec.org/>.
[AIP-PAPER]
Prakash, S., "AIP: Agent Identity Protocol for Verifiable Delegation Across MCP and A2A", , <https://arxiv.org/abs/2603.24775>.

Appendix A. Cross-Organization Delegation Requirements Mapping

[I-D.reece-wimse-cross-org-delegation] enumerates nine requirements for delegation between organizations that share no operator, no runtime, and no bilateral agreement. This appendix maps AIP against them. Verdicts are stated conditionally where the mechanism depends on deployment choices, and gaps are named rather than argued around.

Other proposals address overlapping parts of the same problem, including [I-D.rampalli-pedigree]. The requirements themselves, rather than any one mechanism, are the useful common ground, and several of the gaps identified below are shared across proposals.

R1, Recursive attenuation: MET.
Step V4 of Section 4 requires a structural walk confirming that each hop is a subset of its predecessor across scope, budget, time, and domains, verifiable from the conveyed authority alone. The canonical encoding in Section 3.4.1 additionally makes scope widening impossible by construction, since the authorized set is the intersection of per-block allowlists.
R2, Cross-organizational verification: MET.
An aip:web: issuer publishes its key at a location derived from its own DNS name, and a relying party resolves it over HTTPS with no prior arrangement. An aip:key: issuer needs no resolution at all. Neither requires a federation relationship established in advance of the interaction.
R3, No runtime callback: MET, with caching.
Once the issuer's identity document is held, verification is local. Documents are cacheable, so the originating organization is not on the critical path. The exception is revocation freshness, which R7 addresses.
R4, Proof of possession: NOT MET by this document.
An AIP token is a bearer credential, as stated in Section 5.3. Binding the token to a key requires a transport or message layer mechanism. This document deliberately does not define one, and points instead at [I-D.ietf-wimse-wpt] and HTTP message signatures.
R5, Principal binding and invariance: MET when declared.
Block 0 MAY declare a principal, and V4 requires that no subsequent block declare a different one. A chain that omits the principal conveys agent authority only and does not satisfy R5.
R6, Dual-axis authorization: NOT MET, and out of scope.
AIP conveys the agent's authority and the identity of the bound principal. It does not carry the principal's entitlements, and a verifier cannot evaluate them from the token. Composing the two axes is the relying party's responsibility. Naming this rather than claiming it seems more useful to the working group.
R7, Authentic, bounded-staleness revocation: MET.
Step V7 requires signed revocation responses, so authenticity does not depend on transport trust, and requires verifiers to be configurable with a maximum staleness and to fail closed beyond it.
R8, Tamper-evident, composable audit: MET.
Each delegation block records delegator, delegate, and a non-empty context, and completion blocks record outcome and cost. Because blocks are signed in sequence, a participant's own record cannot be altered undetectably by a later participant, and the chain composes into an end-to-end account.
R9, Format and transport agnosticism: MET.
Compact mode is a JWT and chained mode is a Biscuit token; neither presupposes a transport. Bindings are specified for MCP, A2A, and generic HTTP, and the identity layer is uniform across them.

Summarising the gaps: AIP does not by itself prove possession (R4) or evaluate principal entitlements (R6). Both are shared with other proposals in this space and both are better solved by composition than by any one document.

Appendix B. Changes from draft-prakash-aip-00

Acknowledgements

The Biscuit authorization token specification influenced the chained mode design. The MCP and A2A protocol teams provided the agent communication infrastructure that AIP extends.

Author's Address

Sunil Prakash
Independent