Skip to main content

Agent Identity Protocol (AIP) Specification

Version: v1alpha3
Status: Draft
Last Updated: 2026-02-19
Authors: Eduardo Arango ([email protected]),
James Cao ([email protected])

Abstract

The Agent Identity Protocol (AIP) defines a standard for identity, authentication, and policy-based authorization of AI agent tool calls. AIP enables runtime environments to enforce fine-grained access control over Model Context Protocol (MCP) tool invocations, providing a security boundary between AI agents and external resources. This specification defines:
  1. The policy document schema (AgentPolicy)
  2. Evaluation semantics for authorization decisions
  3. Agent identity and session management
  4. Server-side validation endpoints
  5. Agent Authentication Token (AAT) and the identity layer (new in v1alpha3)
  6. AIP Registry and Token Issuer (new in v1alpha3)
  7. User binding and delegation (new in v1alpha3)
  8. Error codes for denied requests
  9. Audit log format for compliance
AIP is designed to be implementation-agnostic. Any MCP-compatible runtime (Cursor, Claude Desktop, VS Code, custom implementations) can implement this specification.

Table of Contents

  1. Introduction
  2. Terminology
  3. Policy Document Schema
  4. Evaluation Semantics
  5. Agent Identity
  6. Server-Side Validation
  7. Agent Authentication Token (AAT) (new in v1alpha3)
  8. AIP Registry (new in v1alpha3)
  9. Token Issuer (new in v1alpha3)
  10. User Binding and Delegation (new in v1alpha3)
  11. Error Codes
  12. Audit Log Format
  13. Conformance
  14. Security Considerations
  15. IANA Considerations
Appendices

1. Introduction

1.1 Motivation

AI agents operating through the Model Context Protocol (MCP) have access to powerful tools: file systems, databases, APIs, and cloud infrastructure. Without a policy layer, agents operate with unrestricted access to any tool the MCP server exposes. Today, agents are granted full permissions to API keys, secrets, and system resources, running as the user with no distinction between human and non-human actions. There is no universal way to distinguish an AI agent from a human actor. This creates systemic gaps:
  • No audit trail — agent actions are indistinguishable from human actions in logs
  • No revocation — once an agent has credentials, there is no standard way to revoke them
  • No authorization granularity — access is all-or-nothing at the API key level
  • Compliance blind spots — SOC 2, GDPR, HIPAA, and SOX requirements are unmet for agentic actions
AIP addresses these gaps through two interconnected layers:
  • Layer 1 — Identity: Establishes who the agent is via cryptographic identities, Agent Authentication Tokens, and a registry-based root of trust (formalized in v1alpha3)
  • Layer 2 — Enforcement: Decides what the agent is allowed to do via the AIP Proxy, policy engine, DLP scanning, and audit logging
The Agent Authentication Token (AAT) bridges these two layers — issued by Layer 1, enforced by Layer 2. AIP introduces:
  • Capability declaration: Explicit allowlists of permitted tools
  • Argument validation: Regex-based constraints on tool parameters
  • Human-in-the-loop: Interactive approval for sensitive operations
  • Audit trail: Immutable logging of all authorization decisions
  • Agent identity: Cryptographic binding of policies to agent sessions
  • Server-side validation: Optional HTTP endpoints for distributed policy enforcement
  • Agent Authentication Tokens: Signed tokens carrying agent identity, user delegation, and capabilities (new in v1alpha3)
  • Registry-based root of trust: Centralized agent registration with revocation (new in v1alpha3)
  • User binding: Cryptographic proof of which human authorized the agent (new in v1alpha3)

1.2 Goals

  1. Interoperability: Any MCP runtime can implement AIP
  2. Simplicity: YAML-based policies readable by security teams
  3. Defense in depth: Multiple layers (method, tool, argument, identity, AAT)
  4. Fail-closed: Unknown tools are denied by default
  5. Zero-trust ready: Support for token-based identity verification
  6. Agent-human distinction: Separate authentication for agents vs. users (new in v1alpha3)
  7. Cryptographic delegation: Provable chain from user to agent to action (new in v1alpha3)

1.3 Non-Goals

The following are explicitly out of scope for this version of the specification:
  • Network egress control (see Appendix D: Future Extensions)
  • Subprocess sandboxing (implementation-defined)
  • Rate limiting algorithms (implementation-defined)
  • Policy expression languages beyond regex (CEL/Rego - see Appendix D)
  • Full OIDC/SPIFFE federation (see Appendix D); basic integration points are defined

1.4 Relationship to MCP

AIP is designed as a security layer for MCP. It intercepts tools/call requests and applies policy checks before forwarding to the MCP server.

1.5 Relationship to MCP Authorization

MCP defines an optional OAuth 2.1-based authorization layer (MCP 2025-06-18 and later). AIP is complementary to MCP authorization: Implementations MAY use both MCP authorization (for server access) and AIP (for tool access) simultaneously.

1.6 Two-Layer Architecture (v1alpha3)

v1alpha3 formalizes the complete two-layer architecture:
Flow:
  1. Agent registers with the AIP Registry, receiving a key pair and Agent Identity Document (AID)
  2. When a user authorizes an agent, the Token Issuer validates the agent’s identity and issues an AAT encoding agent ID, user binding, and capabilities
  3. On every tool call, the AIP Proxy verifies the AAT, checks the registry revocation list, evaluates policy, performs DLP scanning, and writes an audit log entry
  4. A hijacked agent fails at Layer 2 — its AAT claims do not match the attempted action
  5. A revoked agent fails at Layer 2 — the proxy checks the registry revocation list on every call
  6. A legitimate agent passes through both layers with a full audit trail tied to its verified identity

2. Terminology

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.

3. Policy Document Schema

3.1 Document Structure

An AIP policy document is a YAML file with the following top-level structure:

3.2 Required Fields

3.3 Metadata

3.3.1 Policy Signature

The signature field provides cryptographic integrity verification for the policy document. Format: <algorithm>:<base64-encoded-signature> Supported algorithms:
  • ed25519 - Ed25519 signature (RECOMMENDED)
Example:
When present, implementations MUST verify the signature before applying the policy. Signature verification failure MUST result in policy rejection. The signature is computed over the canonical form of the policy document (see Section 5.2.1).

3.4 Spec Fields

[Sections 3.4.1 through 3.4.6 remain unchanged from v1alpha2]

3.4.1 mode

Controls enforcement behavior. Implementations MUST support both modes.

3.4.2 allowed_tools

A list of tool names that the agent MAY invoke.
Tool names are subject to normalization (see Section 4.1).

3.4.3 allowed_methods

A list of JSON-RPC methods that are permitted. If not specified, implementations MUST use the default safe list:
The wildcard * MAY be used to allow all methods.

3.4.4 denied_methods

A list of JSON-RPC methods that are explicitly denied. Denied methods take precedence over allowed methods.

3.4.5 protected_paths

A list of file paths that tools MUST NOT access. Any tool argument containing a protected path MUST be blocked.
Implementations MUST:
  • Expand ~ to the user’s home directory
  • Automatically protect the policy file itself

3.4.6 strict_args_default

When true, tool rules reject any arguments not explicitly declared in allow_args. Default: false

3.5 Tool Rules

Tool rules provide fine-grained control over specific tools.

3.5.1 Actions

3.5.2 Rate Limiting

Format: <count>/<period> Example: "10/minute", "100/hour", "5/second" Rate limiting algorithm is implementation-defined (token bucket, sliding window, etc.).

3.5.3 Argument Validation

The allow_args field maps argument names to regex patterns.
Implementations MUST:
  • Use a regex engine with linear-time guarantees (RE2 or equivalent)
  • Match against the string representation of the argument value
  • Treat missing constrained arguments as a violation

3.5.4 Tool Schema Hashing

The schema_hash field provides cryptographic verification of tool definitions to prevent tool poisoning attacks. Format: <algorithm>:<hex-digest> Supported algorithms:
  • sha256 (RECOMMENDED)
  • sha384
  • sha512
Hash computation:

3.6 DLP Configuration

[Section 3.6 remains unchanged from v1alpha2] Data Loss Prevention (DLP) scans for sensitive data in requests and responses.
When a pattern matches, the matched content MUST be replaced with:

3.7 Identity Configuration

[Section 3.7 remains unchanged from v1alpha2] The identity section configures agent identity and token management.

3.8 Server Configuration

[Section 3.8 remains unchanged from v1alpha2]

3.9 Registry Configuration (v1alpha3)

The registry section configures how the AIP Proxy connects to the AIP Registry for agent verification and revocation checks.

3.9.1 enabled

When true, the AIP Proxy connects to an AIP Registry for agent identity verification and revocation checking. Default: false When registry.enabled: true, the proxy MUST verify AATs against the registry’s known agent keys before applying local policy.

3.9.2 endpoint

The URL of the AIP Registry. Format: https://<host>:<port> Example:

3.9.3 Revocation Modes

online (highest security):
  • Every AAT validation queries the registry
  • Highest security, highest latency
  • Requires reliable network connectivity
cached (RECOMMENDED for production):
  • Background refresh of revocation list
  • Trades freshness for performance
  • Revocations take effect within check_interval
crl (air-gapped or offline environments):
  • CRL file updated by external process
  • No network dependency
  • Manual revocation propagation

3.9.4 Cache Configuration

3.10 AAT Configuration (v1alpha3)

The aat section configures how the AIP Proxy validates and uses Agent Authentication Tokens.

3.10.1 enabled

When true, the proxy accepts and validates AATs on incoming requests. Default: false

3.10.2 require

When true, all tool calls MUST include a valid AAT. Calls without AATs are rejected with error code -32015. Default: false This enables gradual rollout: start with require: false to validate AATs when present without blocking requests that lack them.

3.10.3 capabilities_mode

Determines how AAT capabilities interact with local policy. intersect (RECOMMENDED):
  • Most restrictive: requires both AAT and local policy to allow the tool
  • Defense in depth: neither AAT compromise nor policy compromise alone grants access
aat_only (registry-managed environments):
  • Centralized capability management via Token Issuer
  • Local policy still enforces argument validation, DLP, and rate limiting
  • allowed_tools in local policy is IGNORED
policy_only (audit-focused deployments):
  • AAT used only for identity verification and audit trail enrichment
  • Local policy controls all authorization decisions
  • Simplest migration path from v1alpha2

3.10.4 trusted_issuers

A list of Token Issuer identifiers whose AATs are accepted by this proxy.
When specified, the proxy MUST reject AATs from issuers not in this list. When not specified, the proxy accepts AATs from any issuer whose public key can be verified via the registry.

3.10.5 header_name

The HTTP header or JSON-RPC extension field used to transmit AATs. Default: "X-AIP-AAT" For JSON-RPC transport (stdio), the AAT is included in the request params:
For HTTP transport, the AAT is sent as a header:
The _aip_aat parameter is reserved by this specification and MUST NOT be forwarded to the MCP server.

4. Evaluation Semantics

4.1 Name Normalization

Tool names and method names MUST be normalized before comparison using the following algorithm:

4.2 Method-Level Authorization

Method authorization is the FIRST line of defense, evaluated BEFORE tool-level checks.

4.3 Tool-Level Authorization

Tool authorization applies to tools/call requests.

4.4 Decision Outcomes

4.5 Argument Validation

The STRING() function converts values to string representation:
  • String -> as-is
  • Number -> decimal representation
  • Boolean -> “true” or “false”
  • Null -> empty string
  • Array/Object -> JSON serialization

5. Agent Identity

[Section 5 remains unchanged from v1alpha2] This section defines the local agent identity model introduced in v1alpha2. In v1alpha3, local identity tokens and AATs serve complementary roles: identity tokens bind the proxy session, while AATs carry cross-service agent identity.

5.1 Overview

Agent identity provides:
  1. Session binding: Cryptographic proof that requests belong to the same session
  2. Policy integrity: Verification that the policy hasn’t changed mid-session
  3. Replay prevention: Nonces prevent token reuse across sessions
  4. Audit correlation: Session IDs link related audit events

5.2 Policy Hash

5.2.1 Canonical Form

5.2.2 Hash Computation

5.3 Identity Token Structure

[Remains unchanged from v1alpha2]

5.4 Token Lifecycle

[Remains unchanged from v1alpha2]

5.5 Session Management

[Remains unchanged from v1alpha2]

5.6 Token and Session Revocation

[Remains unchanged from v1alpha2]

5.7 Compatibility with Agentic JWT

[Remains unchanged from v1alpha2]

5.8 Key Management

[Remains unchanged from v1alpha2]

6. Server-Side Validation

[Section 6 remains unchanged from v1alpha2, with the addition of AAT-aware endpoints]

6.1 Overview

The AIP server provides:
  1. Remote validation: Validate tool calls from external systems
  2. Health checks: Integration with load balancers and orchestrators
  3. Metrics: Prometheus-compatible metrics export
  4. AAT validation: Verify Agent Authentication Tokens (new in v1alpha3)

6.2 Validation Endpoint

6.2.1 Request Format

When both an identity token and an AAT are present, the proxy MUST validate both. The identity token authenticates the proxy session; the AAT authenticates the agent.

6.2.2 Response Format

6.3 Health Endpoint

[Remains unchanged from v1alpha2]

6.4 Metrics Endpoint

Updated metrics (v1alpha3 additions):

6.5 Revocation Endpoint

[Remains unchanged from v1alpha2]

6.6 Authentication

[Remains unchanged from v1alpha2]

7. Agent Authentication Token (AAT) (v1alpha3)

This section defines the Agent Authentication Token — the core credential bridging Layer 1 (Identity) and Layer 2 (Enforcement).

7.1 Overview

The AAT carries signed claims about an agent:
  1. Who issued its identity — the Token Issuer
  2. Which user it is acting on behalf of — user binding
  3. What capabilities it declared — tools and resource scopes
  4. When it was issued and when it expires — temporal bounds
The AAT enables:
  • Per-agent identity: Every agent has a distinct cryptographic identity, separate from the user
  • User delegation: Actions are provably linked to the authorizing human
  • Capability-based authorization: AAT capabilities can drive policy decisions
  • Cross-service portability: AATs are verifiable by any party with access to the issuer’s public key

7.2 AAT Structure

An AAT is a signed JWT (RFC 7519) with the following claims:

7.3 AAT Claims

7.3.1 Standard JWT Claims

7.3.2 Agent Claims

The agent object identifies the AI agent: The public_key_thumbprint allows the proxy to verify that the AAT was issued for the specific agent key pair, preventing AAT theft across agents.

7.3.3 User Binding Claims

The user_binding object links the agent’s actions to the authorizing human: auth_method values: delegation_scope values:

7.3.4 Capabilities Claims

The capabilities object declares what the agent is authorized to do: Capability resolution (how AAT capabilities interact with local policy):
resource_scopes: Resource scopes follow a <resource>:<action> format:
Resource scopes are advisory in v1alpha3. Future versions MAY make them enforceable.

7.3.5 Context Claims

The context object provides operational context:

7.4 AAT Signing

AATs MUST be signed using one of the following algorithms (in order of preference): AATs MUST NOT use symmetric algorithms (HS256) as they require shared secrets. JWT Header:
The kid MUST reference a key in the Token Issuer’s JWKS endpoint or the AIP Registry’s key store.

7.5 AAT Lifecycle

7.5.1 AAT Issuance

  1. Agent authenticates to Token Issuer using its private key (proof of possession)
  2. User authorization is verified (OAuth flow, API key lookup, or local attestation)
  3. Token Issuer retrieves agent registration from AIP Registry
  4. Token Issuer constructs AAT with agent identity, user binding, and capabilities
  5. Token Issuer signs AAT with its private key
  6. AAT returned to agent

7.5.2 AAT Refresh

AATs SHOULD be refreshed before expiry. The refresh flow:
  1. Agent presents current AAT and proof of possession (signed challenge)
  2. Token Issuer verifies current AAT is valid (not expired, not revoked)
  3. Token Issuer checks registry for revocation
  4. New AAT issued with same session_id, fresh jti, updated exp
Constraints:
  • Refreshed AAT MUST preserve the session_id
  • Refreshed AAT MUST have a new jti
  • Refreshed AAT MAY have different capabilities (if policy changed)
  • Refresh MUST fail if the agent or session is revoked

7.5.3 AAT Validation

The AIP Proxy MUST validate AATs using the following algorithm:

7.6 AAT Transport

7.6.1 JSON-RPC (stdio) Transport

For MCP connections over stdio, the AAT is included in the tools/call params as a reserved field:
The _aip_aat field:
  • MUST be stripped by the AIP Proxy before forwarding to the MCP server
  • MUST NOT be logged in audit trails (log jti instead)
  • Is OPTIONAL when aat.require: false

7.6.2 HTTP Transport

For HTTP-based MCP connections, the AAT is sent as a header:

8. AIP Registry (v1alpha3)

The AIP Registry is the root of trust for agent identities.

8.1 Overview

The AIP Registry provides:
  1. Agent registration: Agents register their public keys and metadata
  2. Key attestation: Registry signs agent certificates (Agent Identity Documents)
  3. Revocation: Registry maintains lists of revoked agents, AATs, and sessions
  4. Discovery: Token Issuers and proxies look up agent identities

8.2 Agent Identity Document (AID)

The AID is a JSON document that defines an agent’s cryptographic identity:

8.2.1 AID Fields

8.2.2 Agent Status

8.2.3 Registry Attestation

The registry_attestation provides the registry’s cryptographic endorsement of the AID:

8.3 Registry API

The AIP Registry exposes the following HTTP endpoints:

8.3.1 Agent Registration

Response:

8.3.2 Agent Lookup

Response:

8.3.3 Revocation List

Response:
The revocation list supports conditional requests (ETag/If-None-Match) for efficient polling.

8.3.4 Agent Key Rotation

Key rotation:
  1. Agent generates new key pair
  2. Agent signs rotation request with current private key (proof of possession)
  3. Registry verifies signature, updates stored public key
  4. Old key remains valid for key_grace_period (default: 1 hour)
  5. New AID attestation issued

8.3.5 Registry JWKS

Returns the registry’s public keys for verifying AID attestations:

8.4 Registry Security

8.4.1 Authentication

All registry API calls (except JWKS and health) MUST be authenticated.

8.4.2 Rate Limiting

Implementations MUST rate-limit registration endpoints to prevent abuse.

8.4.3 Data Integrity

The registry MUST:
  • Store agent public keys with integrity protection (e.g., signed records)
  • Maintain an append-only audit log of all registration events
  • Never expose private keys (the registry never holds agent private keys)

9. Token Issuer (v1alpha3)

The Token Issuer validates agent identities and issues AATs.

9.1 Overview

The Token Issuer is a service that:
  1. Validates an agent’s proof of possession (private key ownership)
  2. Verifies the agent is registered and active in the AIP Registry
  3. Binds the agent’s AAT to the authorizing user
  4. Issues signed AATs with capabilities derived from policy

9.2 Token Issuance Flow

9.3 Token Request

9.3.1 Request Format

9.3.2 Grant Types

9.3.3 Proof of Possession

The agent proves ownership of its private key by signing a challenge:
The Token Issuer:
  1. Retrieves the agent’s public key from the AIP Registry
  2. Verifies the challenge signature using that public key
  3. Confirms the challenge was recently issued (prevents replay)

9.3.4 User Authorization Methods

OAuth 2.0 flow (RECOMMENDED):
The Token Issuer validates the OAuth token against the identity provider and extracts the user_id claim. Local attestation (development / localhost):

9.4 Token Response

9.4.1 Success Response

9.4.2 Error Response

9.5 Capability Determination

The Token Issuer determines AAT capabilities based on:
The AAT capabilities represent the maximum set of tools the agent can invoke. The AIP Proxy MAY further restrict this based on local policy.

9.6 Token Issuer JWKS

Token Issuers MUST expose a JWKS endpoint for AAT signature verification:
Proxies MUST cache JWKS responses and refresh when encountering unknown kid values.

10. User Binding and Delegation (v1alpha3)

This section defines how agent actions are cryptographically linked to the authorizing user.

10.1 Motivation

Without user binding:
  • Agent actions are indistinguishable from each other and from human actions
  • Compliance frameworks (SOC 2, GDPR, HIPAA) cannot attribute actions to responsible parties
  • Revocation of user access does not revoke their agents’ access
User binding solves these by embedding a verifiable link from every agent action back to the authorizing human.

10.2 Delegation Model

10.3 Delegation Chain Verification

The AIP Proxy MUST verify the complete delegation chain:

10.4 Audit Trail Integration

When an AAT with user binding is present, audit log entries MUST include:
This audit record establishes:
  • Who authorized the action (user_id, auth_method)
  • What agent performed the action (agent_id, agent_name)
  • How the delegation was granted (delegation_scope)
  • When it happened (timestamp)
  • What was done (tool, arguments)
  • By whose authority the AAT was issued (aat_issuer)

10.5 User Binding Revocation

When a user’s authorization is revoked:
  1. Token Issuer marks all AATs for that user as revoked
  2. Registry propagates revocation to all proxies (via revocation list)
  3. Proxies reject tool calls from revoked AATs

11. Error Codes

AIP defines the following JSON-RPC error codes:

11.1 Error Response Format

11.2 New Error Codes (v1alpha3)

-32015 AAT Required

Returned when aat.require: true and no AAT is provided.

-32016 AAT Invalid

Returned when AAT validation fails.
Possible aat_error values:
  • malformed_aat - JWT structure invalid
  • unsupported_version - aat_version not recognized
  • untrusted_issuer - Issuer not in trusted list
  • unknown_signing_key - Issuer key not found
  • signature_invalid - Cryptographic signature failed
  • not_yet_valid - Token nbf is in the future
  • aat_expired - Token past expiration
  • audience_mismatch - Token audience wrong
  • aat_revoked - Token or session revoked
  • unknown_agent - Agent not in registry
  • agent_key_mismatch - Agent public key doesn’t match
  • agent_inactive - Agent suspended or revoked
  • replay_detected - JTI reuse detected

-32017 AAT Capability Denied

Returned when the requested tool is not in the AAT’s capabilities.

-32018 Agent Not Registered

Returned when the agent in the AAT is not found in the registry.

-32019 Delegation Expired

Returned when the user binding in the AAT has expired.

-32020 Issuer Untrusted

Returned when the AAT was issued by an issuer not in the trusted_issuers list.

12. Audit Log Format

12.1 Required Fields

12.2 Optional Fields

12.3 Example

12.4 Identity Events

[Token issued/rotated/failed events remain unchanged from v1alpha2]

AAT Validated (v1alpha3)

AAT Rejected (v1alpha3)

Registry Revocation Check (v1alpha3)


13. Conformance

13.1 Conformance Levels

13.2 Conformance Testing

Implementations MUST pass the conformance test suite to claim AIP compliance. The test suite consists of:
  1. Schema validation tests: Verify policy parsing
  2. Decision tests: Input -> expected decision
  3. Normalization tests: Verify Unicode handling
  4. Error format tests: Verify JSON-RPC errors
  5. Identity tests: Token lifecycle, rotation, validation
  6. Server tests: HTTP endpoint behavior
  7. AAT tests: AAT structure, validation, capability checking (new)
  8. Registry tests: Agent lookup, revocation checking (new)
  9. Delegation tests: User binding verification, scope enforcement (new)
See spec/conformance/ for test vectors.

13.3 Implementation Requirements

Implementations MUST:
  • Parse apiVersion: aip.io/v1alpha3 documents
  • Reject documents with unknown apiVersion
  • Apply NFKC normalization to names
  • Return specified error codes
  • Support enforce and monitor modes
Implementations SHOULD:
  • Log decisions in the specified format
  • Support DLP scanning
  • Support rate limiting
  • Support identity tokens (for Identity conformance level)
  • Support AAT validation (for AAT conformance level)
Implementations MAY:
  • Use any regex engine with RE2 semantics
  • Implement additional security features (egress control, sandboxing)
  • Implement server-side validation (for Server conformance level)
  • Implement a Token Issuer (for Federation conformance level)
  • Implement a Registry (for Federation conformance level)

14. Security Considerations

14.0 Threat Model

[Section 14.0.1-14.0.3 remain unchanged from v1alpha2 with AAT additions]

14.0.1 Trust Boundaries

14.0.2 Threats In Scope (v1alpha3 additions)

14.0.3 Defense in Depth (v1alpha3)

14.1 Policy File Protection

The policy file itself MUST be protected from modification by the agent. Implementations MUST automatically add the policy file path to protected_paths.

14.2 Regex Denial of Service (ReDoS)

Implementations MUST use a regex engine that guarantees linear-time matching (RE2 or equivalent).

14.3 Unicode Normalization

Implementations MUST apply NFKC normalization to prevent homoglyph attacks.

14.4 Monitor Mode Risks

Monitor mode allows all requests through. Implementations SHOULD warn users when monitor mode is enabled in production environments.

14.5 Audit Log Integrity

Audit logs SHOULD be written to a location not writable by the agent.

14.6 Identity Token Security

[Remains unchanged from v1alpha2]

14.7 Server Endpoint Security

[Remains unchanged from v1alpha2]

14.8 AAT Security (v1alpha3)

14.8.1 AAT Storage

AATs SHOULD be stored in memory only, not persisted to disk. If persistence is required, AATs MUST be encrypted at rest. The _aip_aat field in JSON-RPC params MUST be stripped before any logging or forwarding.

14.8.2 AAT Transmission

AATs transmitted over the network MUST use TLS 1.2 or later. Implementations MUST NOT send AATs over unencrypted connections. For HTTP transport, AATs MUST be sent as headers (not query parameters or request body) to prevent leakage in server logs.

14.8.3 AAT Lifetime

AAT lifetimes SHOULD be limited: Implementations SHOULD reject AATs with lifetime greater than 24 hours.

14.8.4 Replay Prevention

AAT replay prevention uses the jti (JWT ID) claim:
JTI storage requirements follow the same guidelines as nonce storage (Section 5 / v1alpha2).

14.8.5 Registry Trust

The AIP Registry is a high-value target. Implementations MUST:
  • Use TLS for all registry communications
  • Verify the registry’s TLS certificate
  • Support mTLS for registry authentication
  • Cache registry responses with bounded TTL
  • Have a fallback strategy when the registry is unreachable (see failover_mode)

14.8.6 Token Issuer Trust

Token Issuers control what capabilities agents receive. Compromised issuers can grant excessive permissions. Mitigations:
  • Use trusted_issuers to limit accepted issuers
  • Intersect AAT capabilities with local policy (capabilities_mode: "intersect")
  • Monitor aip_aat_validations_total for anomalies
  • Implement issuer key rotation and revocation

15. IANA Considerations

This specification requests registration of the following:

15.1 Media Type

  • Type name: application
  • Subtype name: vnd.aip.policy+yaml
  • Required parameters: None
  • File extension: .yaml, .yml

15.2 URI Scheme

This specification uses the aip.io namespace for versioning:
  • aip.io/v1alpha1 - Initial specification
  • aip.io/v1alpha2 - Identity and server-side validation
  • aip.io/v1alpha3 - This specification (AAT, Registry, Token Issuer)

15.3 JWT Type Header (v1alpha3)

  • typ: aat+jwt for Agent Authentication Tokens

Appendix A: Complete Schema Reference


Appendix B: Changelog

v1alpha3 (2026-02-19)

Agent Authentication Token (AAT)
  • Added Section 7: Agent Authentication Token specification
    • JWT-based AAT structure with agent, user_binding, capabilities, and context claims
    • AAT signing requirements (ES256, EdDSA, RS256; no symmetric algorithms)
    • AAT lifecycle: issuance, refresh, validation, revocation
    • AAT transport via _aip_aat JSON-RPC param or X-AIP-AAT HTTP header
    • AAT validation algorithm with 9-step verification
    • JTI-based replay prevention
  • Added aat configuration section (Section 3.10)
    • capabilities_mode: intersect, aat_only, policy_only
    • trusted_issuers for issuer allowlisting
    • Configurable validation strictness
AIP Registry
  • Added Section 8: AIP Registry specification
    • Agent Identity Document (AID) structure with registry attestation
    • Registry API: registration, lookup, revocation list, key rotation, JWKS
    • Agent status lifecycle: active, suspended, revoked
    • Registry attestation via Ed25519/ES256 signatures
  • Added registry configuration section (Section 3.9)
    • Revocation modes: online, cached, CRL
    • Cache configuration for agent keys and revocation status
    • mTLS and bearer token authentication
Token Issuer
  • Added Section 9: Token Issuer specification
    • Token issuance flow with proof of possession
    • Grant types: agent_authentication, aat_refresh, agent_attestation
    • User authorization methods: OAuth 2.0, OIDC, API key, local attestation
    • Capability determination from agent record, user permissions, and requested capabilities
    • Token Issuer JWKS endpoint
User Binding and Delegation
  • Added Section 10: User Binding and Delegation specification
    • Delegation model connecting users to agents to actions
    • Delegation chain verification algorithm
    • Delegation scope enforcement (full, tools, read_only, session, custom)
    • User binding revocation propagation
    • Audit trail integration with user identity
Evaluation Semantics
  • Updated tool-level authorization (Section 4.3) with AAT capability checks
    • Step 0b: AAT validation
    • Step 0c: AAT capability intersection
  • Added AAT_REQUIRED, AAT_INVALID, AAT_CAPABILITY_DENIED decision outcomes
Error Codes
  • Added -32015 AAT Required
  • Added -32016 AAT Invalid (with 13 detailed error subtypes)
  • Added -32017 AAT Capability Denied
  • Added -32018 Agent Not Registered
  • Added -32019 Delegation Expired
  • Added -32020 Issuer Untrusted
Metrics
  • Added aip_aat_validations_total counter
  • Added aip_registry_checks_total counter
  • Added aip_registry_latency_seconds histogram
  • Added aip_active_agents gauge
Audit Logging
  • Added AAT-enriched audit log fields (agent_id, agent_name, user_id, user_auth_method, delegation_scope, aat_jti, aat_issuer)
  • Added AAT_VALIDATED, AAT_REJECTED, REGISTRY_REVOCATION_CHECK event types
Security
  • Updated threat model with AAT-specific threats (theft, forgery, impersonation, capability escalation, registry poisoning, issuer compromise, delegation abuse)
  • Added Section 14.8: AAT Security (storage, transmission, lifetime, replay prevention, registry trust, issuer trust)
  • Defense in depth expanded to 9 layers (added AAT validation, AAT capability check)
Conformance
  • Added AAT conformance level
  • Added Federation conformance level
  • Added AAT, registry, and delegation test categories

v1alpha2 (2026-01-24)

  • Added identity configuration section (token generation, rotation, session binding)
  • Added server-side validation endpoints
  • Added schema_hash for tool poisoning prevention
  • Added DLP enhancements (scan_requests, max_scan_size, on_request_match)
  • Added threat model (Section 10.0)
  • Added policy signature (metadata.signature)
  • Added error codes -32008 through -32014
  • Added Identity and Server conformance levels

v1alpha1 (2026-01-20)

  • Initial draft specification
  • Defined core policy schema
  • Defined evaluation semantics
  • Defined error codes
  • Defined audit log format

Appendix C: References


Appendix D: Future Extensions

This appendix describes features under consideration for future versions of AIP.

D.1 Network Egress Control

Status: Proposed for v1beta1

D.2 Policy Inheritance

Status: Under Discussion Allow policies to extend base policies:

D.3 External Identity Federation

Status: Proposed for v1beta1 Allow policies to integrate with external identity providers:
Supported federation types:
  • oidc - OpenID Connect providers
  • spiffe - SPIFFE/SPIRE workload identity

D.4 Telemetry and Metrics

Status: Partially implemented in v1alpha2/v1alpha3 (metrics endpoint)

D.5 Advanced Policy Expressions

Status: Under Discussion Support for CEL (Common Expression Language) or Rego for complex validation:

D.6 Agentic JWT Compatibility

Status: Under Discussion for v1beta1 Full compatibility with the Agentic JWT specification. Mapping to Agentic JWT claims:

D.7 Multi-Agent Delegation (v1alpha3 future)

Status: Under Discussion Support for agent-to-agent delegation chains, where Agent A (with user authorization) delegates a subset of capabilities to Agent B:
Constraints:
  • Each delegation step MUST reduce or maintain scope (never escalate)
  • Maximum chain depth: 3 (user -> agent -> sub-agent)
  • All delegators must be active and non-revoked

D.8 Registry Federation

Status: Under Discussion Allow multiple registries to federate, enabling cross-organization agent identity verification:

Appendix E: Implementation Notes

E.1 Reference Implementation

The reference implementation is available at: https://github.com/openagentidentityprotocol/aip-go It provides:
  • Go-based proxy (aip-proxy)
  • Policy engine (pkg/policy)
  • DLP scanner (pkg/dlp)
  • Audit logger (pkg/audit)
  • Identity manager (pkg/identity)
  • HTTP server (pkg/server)
  • AAT validator (pkg/aat) (v1alpha3)
  • Registry client (pkg/registry) (v1alpha3)

E.2 Testing Against Conformance Suite

E.3 AAT Implementation Guidance

Generating Agent Key Pair

Computing JWK Thumbprint (RFC 7638)

Validating an AAT

E.4 Registering Your Implementation

Implementations that pass the conformance suite may be listed in the official registry. Submit a PR to the AIP repository with:
  • Implementation name and URL
  • Conformance level achieved (Basic/Full/Extended/Identity/Server/AAT/Federation)
  • Platform support matrix