general 6 min read

Your Agent Works for a Platform. It Should Work for You.

Every agent-to-agent protocol currently in development was designed to serve platform operators, not human principals. A2A authenticates agents as platform entities. ACP focuses on enterprise…

Every agent-to-agent protocol currently in development was designed to serve platform operators, not human principals.

A2A authenticates agents as platform entities. ACP focuses on enterprise workflow interoperability where the principal is the enterprise, not the individual. MCP handles tool-use for a single agent session — it is not a negotiation protocol between agents representing different principals. AgentConnect optimizes for deployment topology, not trust topology.

None of them enforce context minimization at the protocol level. Disclosure is implementation-dependent. None define session ephemerality as a protocol guarantee. All are compatible with token economy monetization. None structurally prevent it.

The trust models are thin. The context controls are voluntary. The session residue is undefined. And the economic model underneath each protocol is cloud compute metering — the same model that turned every previous generation of open standards into a funnel for platform lock-in.

We built something different.

The Principal Agent Protocol

PAP is designed from the opposite direction. The human principal is the root of trust. Every agent in a transaction carries a cryptographically verifiable mandate from that root. Sessions are ephemeral by design. Context disclosure is enforced by the protocol, not by policy. The cloud is a stateless utility invoked by agents, not a relationship that accumulates principal context.

No new cryptography. No token economy. No central registry.

The repo is open source, written in Rust, and you can clone it and run the end-to-end proof of concept right now.

The Trust Model

Human Principal (device-bound keypair, root of trust)
  └─ Orchestrator Agent (root mandate, full principal context)
       └─ Downstream Agents (scoped task mandates)
            └─ Marketplace Agents (own principal chains)

Transactions are handshakes between two mandate chains, not two agents. The orchestrator is the only agent that knows who you are. Every downstream agent knows only what its mandate explicitly permits.

Five constraints are enforced at the protocol level, not the implementation level:

  1. Deny by default. An agent can only do what its mandate explicitly permits. No scope means no action.
  2. Delegation cannot exceed parent. A child mandate’s scope is bounded by its parent’s scope. A child’s TTL cannot exceed its parent’s TTL. This is verified cryptographically, not by policy.
  3. Session DIDs are ephemeral. Both agents generate single-use keypairs for each session. These are not linked to any persistent identity. When the session closes, the keys are discarded.
  4. Receipts contain property references only. A transaction receipt records what types of data were disclosed — never the values. Both principals can audit the record. No platform stores it.
  5. Non-renewal is revocation. A mandate that isn’t renewed doesn’t need a revocation notice. It degrades progressively — Active, Degraded, ReadOnly, Suspended — and then it stops. The principal sees the degradation, not a surprise cutoff.

Built on Standards That Already Exist

PAP uses no novel cryptographic primitives. The entire protocol stack is built on existing, standardized specifications maintained by bodies without platform capture:

LayerStandardPurpose
IdentityWebAuthnDevice-bound keypair generation
IdentityW3C DIDsDecentralized identifiers (did:key)
CredentialsW3C VC Data Model 2.0Mandate envelope
DisclosureSD-JWT (IETF draft-08)Selective claim disclosure in session handshake
VocabularySchema.orgCapability and action type references
DataJSON-LDStructured linked data for advertisements
PrivacyOblivious HTTP (RFC 9458)Cloud request unlinkability

Schema.org describes the what. The protocol governs under what terms. These are kept strictly separate — no Schema.org extensions, no vocabulary pollution.

The Implementation

The Rust implementation ships as four crates in a Cargo workspace with four end-to-end examples. 63 tests. All green.

git clone https://github.com/Baur-Software/pap.git
cd pap
cargo test

The Capture Test

PAP is designed against a specific threat: incumbent platform capture. Every major internet protocol that started with user sovereignty has been captured by the entities with the largest infrastructure footprint. This is not a conspiracy. It is the predictable outcome of letting the entities with the most to lose from a protocol define its implementation.

XMPP was open and federated until the major messaging platforms stopped federating. OAuth was designed for user authorization until it became the mechanism by which platforms accumulated indefinite permission to act on behalf of users. Every open protocol that required an incumbent’s infrastructure to function at scale eventually reflected the incumbent’s interests.

Any proposal that routes principal context through infrastructure owned by incumbent platforms is out of scope, regardless of the cryptographic framing around it.

Explicit non-goals: compatibility with token economy monetization. Enclave-as-equivalent-to-local. Identity recovery through platform operators. Payment mechanisms linkable to principal identity. Central registries for agent discovery. Mandate structures allowing runtime scope expansion. UI standards permitting arbitrary code execution in the orchestrator context. Any extension that trades trust guarantees for adoption ease.

Good feedback makes the protocol harder to capture. Proposals that introduce new trusted third parties, centralize discovery, soften disclosure enforcement, or create compatibility with metering models should be evaluated as potential capture vectors first and protocol improvements second.

What Happens Next

PAP v0.1 is a working architecture specification backed by a working Rust implementation. The protocol flow runs end-to-end across four examples — zero-disclosure search, selective disclosure with SD-JWT, four-level delegation chains, and privacy-preserving payment with continuity. 63 tests cover the full protocol surface. The cryptographic guarantees hold.

The repo is at github.com/Baur-Software/pap. Clone it. Run the tests. Run the examples. Read the code. The protocol is in the types, the constraints are in the compiler, and the trust model is in the signatures.

git clone https://github.com/Baur-Software/pap.git
cd pap
cargo test                        # 63 tests
cargo run --bin search            # zero disclosure
cargo run --bin travel-booking    # selective disclosure
cargo run --bin delegation-chain  # hierarchical trust
cargo run --bin payment           # extensions

If you build agents, the question is not whether your agents can talk to each other. The question is who they answer to.

Baur Software

AI governance and technical advisory firm based in San Diego, CA. We solve problems fast.

About us →

Get Started

Ready to put this into practice?

Let's discuss how these ideas apply to your organization.

Book a Demo

Related posts

general

The Pricing Pivot Is a Confession

In March I argued that the token economy is long distance minutes. That the infrastructure shift was coming and the metering model would become indefensible the same way per-minute billing did once…

· 7 min read
general

Service-as-a-Software: The Agentic Web Was Already Here

The word "agent" did not come from AI. It came from law. A principal authorizes an agent to act on their behalf. The agent's acts bind the principal. The principal is liable for what the agent does…

· 11 min read