Your agent can only move money inside a token that says so.

Last updated: 30 August 2026

An AI agent with a signing key has all of that key’s authority. Nothing in the key says which human asked, what they approved, how much, for what, or until when — and nothing in the transaction afterwards says why it was permitted.

SPT‑Txn narrows that. Authority exists only inside a short‑lived token bound to one declared action, and that token carries a commitment to the accountable person all the way down.

How authority narrows

The anchor to the human is carried unchanged through every hop, so a decision three delegations deep still traces to the person who authorized it — without that person’s identity appearing anywhere on the wire.

What “can only narrow” looks like

Three real tokens, minted by the reference implementation while this page was written. The chain is human → agent → sub‑agent, and these are the decoded capability_scope claims exactly as they appear in each token. Nothing below is illustrative. go run ./cmd/agentdemo reproduces it offline, with no network and no keys of ours.

CAT: the human’s mandate delegation_depth_max 3
{"action":"payment","currency":"USD","max_amount":10000}
CT: agent A, issued by the organisation delegation_depth_remaining 2
{"currency":"USD","max_amount":8000}
CT: sub‑agent B, delegated by agent A delegation_depth_remaining 1
{"currency":"USD","max_amount":5000}

The ceiling falls at every hop, the depth counter falls with it, and the human_anchor claim is byte‑identical in all three: the same accountable person, carried unchanged to the last delegate. Widening is not rejected at spend time; it is refused at mint, so a token granting more than its parent never exists. In the same demo, sub‑agent B asking for 6,000 against its 5,000 ceiling is refused before any token is issued, and revoking agent A’s delegation key kills B’s authority while leaving A’s own capability working.

One decision engine, wherever the agent acts

The same enforcement point sits in front of an HTTP payment endpoint or an agent tool call. It computes a fixed‑width binding over the exact action being requested and returns one of three outcomes — ALLOW, DENY (violation), or DENY (unavailable) — so an attack and an outage are never confused for one another, and neither is ever silently permitted.

A compromised or prompt‑injected agent cannot exceed or re‑widen what it was granted. That is containment at the point of action, not detection afterwards.

Records, and the oversight question

Every decision produces a signed receipt, hash‑chained and Merkle‑committed, verifiable offline and containing no personal data. Where supervisors expect a demonstrable human‑oversight and record‑keeping mechanism for agentic systems — the EU AI Act’s Article 14 expectations among them — this is a technical mechanism you can point at and test. It is a building block, not a compliance certification, and we do not claim it makes any deployment compliant.

You run it. That is the point.

The control plane belongs with the regulated entity that already carries the obligation. We publish the software under Apache‑2.0; you deploy it, you hold the keys, you set the policy, and no transaction detail reaches us or anyone else. We do not operate a service in your money path and we take no fee per transaction.

Honest boundaries

SPT‑Txn is a proof of concept and a specification effort. Nothing in it has been externally audited or certified, and it is not in production use. Our security reviews are our own. On‑chain footprints are on public testnets except where stated otherwise. An independent review of the zero‑knowledge circuits and the protocol is wanted and has not happened. We say this plainly rather than implying assurances we have not earned. One more, since an institution will ask it first: key reconstitution is designed but not settled. If an issuer loses its signing key, the revocation cascade and a cross‑organisation quorum are specified, but the ceremony shape is an open decision. Who holds what, and what it takes to stand an issuer back up without invalidating the delegations beneath it, is not a runbook we can hand you today.

If this is useful to you

Everything is public and reproducible — the reference implementation, the specification work, and the tests behind each claim above.

Reference implementation on GitHub →
Framework paper and IETF Internet‑Draft →
rudi@violetskysecurity.com