Skip to content

Agent Card security: x-agent-trust for verifiable agent identity #1742

@razashariff

Description

@razashariff

Agent Cards currently describe agent capabilities but don't provide a way to cryptographically verify the agent's identity or prove the request body hasn't been tampered with. A receiving agent has no way to confirm the Agent Card claims are genuine.

The x-agent-trust extension (registered in the OpenAPI Extensions Registry) adds two fields to the authentication block: signing algorithm and a JWKS endpoint for local verification.

"authentication": {
  "schemes": ["oauth2"],
  "x-agent-trust": {
    "algorithm": "ES256",
    "issuerKeysUrl": "/.well-known/agent-trust-keys"
  }
}

Each agent-to-agent request carries an Agent-Signature header -- an ECDSA signature over a canonical string that includes a SHA-256 hash of the request body. The receiving agent verifies against the sender's published JWKS. Body tampering breaks the signature.

Verification is ~20 lines of stdlib crypto in any language. No external dependency required:

# Build canonical string
body_hash = hashlib.sha256(request.body).hexdigest()
canonical = f"{method} {path}\n{ts}\n{body_hash}"

# Fetch sender's public key from their JWKS
keys = fetch_jwks(sender_jwks_url)

# Verify ECDSA signature
public_key.verify(base64.b64decode(sig), canonical.encode(), ECDSA(SHA256()))

This gives A2A per-request body integrity and verifiable agent identity -- both absent from the current spec. Trust levels (L0-L4) are optional and can be added later for graduated authorization.

Registry: https://spec.openapis.org/registry/extension/x-agent-trust.html

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions