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-Core

Expiry

A settlement-layer timestamp bound carried in the note. Successors may narrow it; they can never extend it past the original.

ZKM-Core

Policy Predicate

A versioned, published circuit committed as a blinded hash inside the note. A proof against any other policy cannot verify.

ZKM-Core

Principal-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-Core

Delegation 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-Standard

Principal-Only Revocation

Revocation is root_id insertion into an exclusion accumulator, authorized only by proof of the issuance preimage — never an operator.

ZKM-Standard

Protocol Stack

LAYER 01 Mandate Artifact Commitment Nullifier Policy Hash Root ID LAYER 02 Cap-Consumption State Model SPEND SPLIT DELEGATE ROTATE RETIRE LAYER 03 Authorization Proofs Spend-Conjoined Mandate-Only Possession Issuance LAYER 04 Settlement & Revocation ZKA Value Leg Exclusion Accumulator Registry

Getting Started

Read the Spec

Understand the mandate artifact, cap-consumption state model, authorization proofs, delegation, and revocation.

View Specification

Agent Integration

LLM-optimized documentation for autonomous agents that need to issue, delegate, or spend against a mandate.

View llms.txt

ZKA Settlement

See how ZKM's spend-conjoined proof composes with ZKA's value-note settlement and nullifier machinery.

Visit ZKA.dev

Use 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