PACT 2.2.2 · Released specification
The protocol for agents that act for people.
One person's AI agent, talking directly to another's: an identity the person issues, contacts both people approve, only the tools you switch on for each caller, and calls encrypted end to end.
How two agents connect.
From a shared card to a sealed answer, every step the protocol takes when you ask your agent to find time with Maya.
- Maya → youHer card: a vCard carrying her leaf certificate, shared over any channel you already use
- Your host → Maya's host
request_contactwith your card. A stranger sees two tools, ten calls an hour - Maya → her hostShe approves: your root is pinned
- Maya's host → your host
contact_accepted: each side has pinned the other's root - You → your host"Find an hour with Maya on Thursday"
- Your host → Maya's host
check_availability, signed by your leaf and sealed to hers - Maya's hostChecks the chain, your pinned root, the tool's switch for you, and the rate limit
- Maya's host → your hostSealed back: three free slots, not her calendar
What a caller can reach.
Every call is sorted before anything runs. The chain of certificates must validate, and then the root decides the tier: a stranger, someone you asked, or a contact you approved. Each tier lists a different set of tools.
Guest
Not pinned, or blocked. Blocked looks exactly like unknown.
- redeem_invite
- request_contact
10 calls an hour by default
Pending
Someone you asked to be your contact, answering.
- contact_accepted
- contact_rejected
Contact
Approved. Only the tools you switched on for this person.
- send_message
- send_media
- get_status
- check_availability
- book_slot
- get_card
60 calls an hour by default
Your identity is a certificate you issue.
The root lives in your wallet, and can be derived from a passkey rather than stored. It signs nothing but certificates. Your host holds a leaf the root issued for one address, until a date you choose, at most 398 days. Contacts pin the root and learn the current leaf from every exchange.
- Renewal is a new leaf; nobody has to be told
- Moving hosts is a new leaf for a new address; each contact re-pins it, automatically or on their say-so
- The leaf's key dies with the leaf; an export carries contacts and chats, never a key
sha256:9fJ…kQ2you.pact.contact/youSept 2026 → Sept 2027agent.you.example/mcpJan 2027 → Jan 2028What changed from 1.x to 2.x.
PACT 1.x made the host's key the identity. 2.0 separated the key that controls an identity from the key that serves it, the way X.509 always has, and removed what that made unnecessary. It was a hard break: 1.x is not supported and there is no coexistence mode.
PACT 1.x
The host's key was the identity
- Contacts pinned the host's key
- Moving hosts meant moving the private key
- A signed rotation changed the key
- A relay held mail while you were offline, and saw every sender, recipient and time
- The envelope header named sender and recipient
PACT 2.x
The person is the certificate authority
- Contacts pin your root and learn the current leaf from every exchange
- Moving hosts is a new leaf for a new address; the export carries no key
- No rotation: a newer leaf outranks an older one, and the root never changes
- No relay: being hosted, under a leaf you issued, covers the hours you are offline
- The header names only the recipient's key; the sender rides inside the ciphertext
Kept from 1.x
- Your agent is an MCP server
- Contacts are vCards
- Invites are short links you can revoke
- A person approves every contact
- Threads, like a messenger
- Sealed envelopes (since 1.1)
- A guest tier of two tools
An open network, or a closed one.
Almost every difference between PACT and other agent protocols comes down to one choice. A2A and ANP assume a stranger may find and call your agent. PACT assumes nobody reaches you until both of you have said yes.
Open network: A2A, ANP
Agents publish what they are and can do, and anyone can find and call them. That needs discovery, capability advertising and negotiation with strangers, and every stranger is a caller.
Closed network: PACT
There is no directory. A relationship starts from a card or an invite and exists once both people approve it. A stranger reaches a guest tier of two tools, ten calls an hour by default.
How PACT compares.
PACT is the only protocol in this survey that holds together an identity the person owns, a consent gate, a per-caller capability surface and instant revocation, with encryption that survives a terminating edge. It also loses rows, and they are shown.
| Property | PACT | A2A | MCP | ANP | DIDComm v2 | Matrix |
|---|---|---|---|---|---|---|
| Identity the person owns, not the host | ✓ | ◐ | ✕ | ✓ | ✓ | ✓ |
| Both people consent before any contact | ✓ | ✕ | ✕ | ✕ | ◐ | ◐ |
| Keys exchanged and pinned | ✓ | ◐ | ✕ | ✓ | ✓ | ✓ |
| What a caller may do is computed per caller | ✓ | ✕ | ◐ | ✕ | ✕ | ◐ |
| Revoke a contact instantly | ✓ | ✕ | ✕ | ◐ | ✓ | ✓ |
| End-to-end encrypted past a terminating edge | ✓ | ✕ | ✕ | ✓ | ✓ | ✓ |
| Forward secrecy | ✕ | ✕ | ✕ | ✓ | ✕ | ✓ |
| Open discovery of strangers | ⊘ | ✓ | ◐ | ✓ | ◐ | ✓ |
| Store-and-forward relay | ⊘ | ◐ | ◐ | ◐ | ✓ | ✓ |
| Ecosystem adoption | ✕ | ✓ | ✓ | ◐ | ◐ | ✓ |
Swipe the table to see every protocol
✓ has it◐ partial✕ missing⊘ declined by design
Declined is not missing. A directory, open discovery and a relay are what a network needs when it has no consent gate. PACT replaced them with one human act, so it scores them ⊘ on purpose: adding them would delete the premise.
Where it genuinely trails. Forward secrecy at the envelope layer is deferred, with the path recorded in the specification. Adoption is early: two implementations, both from one project, against large ecosystems for A2A and MCP.
From the project's landscape survey of 2026-09-22, read against each protocol's own specification.
What the protocol refuses.
The specification decides what an endpoint must refuse, and conformance holds both implementations to it. The live intrusion battery built 27 attacks from those rules: forged or malformed identity chains, replays and wrong times, tampered and downgraded envelopes, and strangers reaching past the guest tier. Both implementations refused all 27, and one control message that must get through did. Measured on 2026-09-20.
- A chain is exactly two certificates, leaf then root; a lone self-signed certificate is refused
- A refusal to a stranger is indistinguishable from a refusal to someone you blocked
- A replayed envelope is acknowledged, never run twice
The specification, in full.
The normative specification for Personal Agent Communication & Trust: how agents identify each other, how contacts are exchanged and approved, what tools a contact may call, how a person moves between hosts without losing anyone, and how calls stay sealed where an edge terminates TLS.
What's inside
- Architecture
- Identity, certificates and mTLS
- Contact cards (vCard)
- Invites
- Adding contacts
- The agent MCP server and its tools
- Messaging and threads
- Permissions
- Hosting
- Deployment
- Security notes and what was left out
- Errors, limits, conformance
- Sealed envelopes
- Certificates
- Worked examples and test vectors
Your whitepaper is ready.
We will email you about what you chose, and nothing else.
Download the PDF →The link works from this browser for seven days.
Hear when PACT ships.
One email when pact-gateway is released or a PACT Cloud place opens, and nothing else. Privacy.