The eight layers
L1 — Agent Identity (DNS + TLS)
An agent’s identity is its domain. TLS certificate must match the claimed domain. No new PKI infrastructure — standard web certificates are sufficient.L2 — Message Signing (Ed25519 + Canonical JSON)
Every envelope is signed with Ed25519 over a recursive canonical JSON serialization of all fields exceptsignature — keys sorted lexicographically at every depth, no insignificant whitespace. Any field reordering, body substitution, or field addition invalidates the signature.
Each message carries a UUID nonce and an ISO timestamp. Receivers reject anything older than 5 minutes or whose nonce has been seen inside the window — preventing replay attacks.
L3 — Trust Tiers
Each skill picks one tier, enforced after signature verification:| Tier | Who can call |
|---|---|
public | Anyone with a valid signature |
authenticated | Callers with a Bearer token you issued |
trusted-peers | Specific agent:// IDs in the allowedPeers list |
L4 — Input Validation + Injection Defense
Every payload is validated against the skill’s JSON Schema before the handler runs. Unknown fields are stripped.maxLength declarations are enforced.
The injection scan runs only after signature verification — untrusted input is never processed before the sender’s identity is proven.
L5 — Rate Limiting + Token Budgets
Per-sender sliding-window request limits and daily token budgets, declared in the agent card and enforced automatically:tokensPerSenderPerDay tracks actual LLM token consumption per verified sender. When exhausted, the agent returns TOKEN_BUDGET_EXCEEDED with a Retry-After header.
L6 — Key Versioning + Revocation
The agent card lists every key with itskid and active status. Receivers re-fetch the card after cardTTL seconds — deactivating a key in the card propagates globally with no central revocation server needed.
L7 — Delegation Scope + Depth (EdDSA JWT)
Delegation tokens (RFC 8693 JWTs) carryscope and maxDepth. Each hop verifies the token, checks the called skill is in scope, decrements depth, and rejects if depth reaches zero. Prevents runaway agent graphs and privilege escalation through delegation chains.
L8 — Audit Trail (OpenTelemetry-compatible)
Every envelope carriestraceId, spanId, and parentSpanId. The full call tree of any multi-agent conversation is reconstructible from any participant’s logs. Compatible with Grafana, Datadog, and other OpenTelemetry consumers.