Zero-Knowledge Mandates
Privacy-preserving spend authorization for autonomous agents
ZKM lets an autonomous agent prove that a spend is within a valid, unrevoked, cap-and-expiry-bounded authorization from a principal — without revealing who that principal is. ZKC decides whether parties may interact; ZKM decides whether a spend is authorized; ZKA decides whether it settles.
Design Principles
Principal-Hidden Authorization
A verifier learns only: valid mandate · unrevoked · within remaining cap · unexpired · policy satisfied — never the principal's identity, the original cap, or prior spend history.
Stranger Verifiability
Mandate proofs verify outside any federation or bilateral agreement, including on-chain via Solidity/UltraHonk verifiers — no counterparty relationship required.
Conservation of Authority
No sequence of operations — spends, splits, delegations, in any interleaving — can consume more value authority than the principal issued.
Principal-Only Revocation
Only the holder of the mandate's issuance authority can revoke it. Revocation kills the entire delegation subtree and can never be exercised by an operator or third party.
Self-Issued Authority
The issuer of a mandate is the principal itself — no external attestor. This inverts ZKC, where issuers are public accepted-set authorities and the holder is hidden.
Reuse by Reference
ZKM composes with ZKC's epoch and envelope conventions, KDC's key derivation, and ZKA's nullifier, note, and settlement machinery — it does not re-specify them.
Authorization as Cryptographic Fact
AP2 v0.2 selectively discloses SD-JWT mandate constraints to the verifier; SEPA direct debit is clear-text. AP2 presentations remain linkable, and AP2's x402 samples settle transparently. ZKM changes those privacy boundaries:
| Conventional Authorization / Transparent Settlement | ZKM Model |
|---|---|
| AP2 discloses only needed constraint claims; transparent rails still publish payment participants and amount | Principal and private authority state stay hidden; ZKA settlement keeps payment details private |
| Authorization presentations and settlement activity can remain linkable | Fresh commitments and nullifiers reduce cross-transition linkability |
| Capability-chain systems expose delegation evidence to their verifiers | Delegation graph disclosed to no observer |
| Constraint narrowing enforced at the authorization layer | Constraint narrowing enforced in-circuit and conjoined with settlement |
| Some mandate systems use operator-controlled revocation; AP2 v0.2 specifies no revocation mechanism | Revocation exercisable only by the principal |
Mandate Lifecycle Example
A principal issues a mandate, an orchestrator delegates part of it to a sub-agent, and the sub-agent spends within its bound — each step a proof, none of it disclosing the principal:
// Principal issues a mandate to its orchestrator agent
const mandate = await principal.issueMandate({
assetId: "usdc",
settlementDomain: "zka:mainnet",
cap: 800_000000n, // 800 USDC, 6 decimals
expiry: hoursFromNow(24),
policy: {
version: 2,
maxPerSpend: 200_000000n,
recipientRestricted: false,
depthLimit: 1 // sub-agent may not re-delegate
}
});
// Orchestrator delegates part of its cap to a sub-agent (SPLIT + rebind)
const { delegated, retained } = await orchestrator.delegatePartial(mandate, {
cap: 300_000000n,
holderKey: subAgent.publicKey
});
// subAgent returns a possession proof binding its own key before
// the delegator submits the transition — a rebind to a key no one
// controls would otherwise burn the delegated authority silently.
// Sub-agent spends within its delegated cap
const proof = await subAgent.spend(delegated, {
amount: 150_000000n,
recipient: merchant.zkaAddress
});
// Settlement layer verifies, atomically: valid mandate + within cap +
// unexpired + unrevoked + policy satisfied + the conjoined ZKA value leg.
const result = await settlement.submit(proof);
// result.accepted === true
The merchant learns only that the spend was authorized and settled — never the principal, the original cap, or anything spent before.
Mandate Primitives
ZKM's mandate artifact and its consumption model define the vocabulary every proof shares:
Cap
Remaining spend authority, in the asset's atomic units — a consumable, not a static fact. Each transition provably conserves it in-circuit.
ZKM-CoreExpiry
A settlement-layer timestamp bound carried in the note. Successors may narrow it; they can never extend it past the original.
ZKM-CorePolicy Predicate
A versioned, published circuit committed as a blinded hash inside the note. A proof against any other policy cannot verify.
ZKM-CorePrincipal-Hidden Issuance
The issuer is the principal itself — established by preimage knowledge, not a signature. No external attestor ever sees who authorized the mandate.
ZKM-CoreDelegation Depth
Full or partial delegation rebinds the note to a new holder key, narrowing but never widening cap, expiry, or policy, bounded by a disclosed depth limit.
ZKM-StandardPrincipal-Only Revocation
Revocation is root_id insertion into an exclusion accumulator, authorized only by proof of the issuance preimage — never an operator.
Protocol Stack
Getting Started
Read the Spec
Understand the mandate artifact, cap-consumption state model, authorization proofs, delegation, and revocation.
View SpecificationAgent Integration
LLM-optimized documentation for autonomous agents that need to issue, delegate, or spend against a mandate.
View llms.txtZKA Settlement
See how ZKM's spend-conjoined proof composes with ZKA's value-note settlement and nullifier machinery.
Visit ZKA.devUse Cases
- Autonomous Agent Shopping: A principal issues a capped, time-boxed mandate to a shopping agent; the agent proves each purchase is authorized without exposing who it's shopping for
- Orchestrator Delegation: An orchestrator splits a mandate across parallel sub-agents ahead of dispatch, so each spends its own note without contention or a shared balance oracle
- Bounded Sub-Agent Authority: A sub-agent receives a partial delegation narrower than its delegator's cap, expiry, and policy — attenuation enforced in-circuit, not by convention
- Principal-Only Kill Switch: A principal revokes a compromised mandate by proving knowledge of its own issuance preimage; the entire delegation subtree stops spending, and no operator can do it for them
- Composable Compliance: A mandate's issuance or spend can bind to a same-subject ZKC credential presentation, proving the principal or counterparty holds a compliance credential
- Bilateral Envelopes, Unilateral Authority: A mandate's in-circuit cap composes with an AFP bilateral limit envelope negotiated separately — neither system subsumes the other