The authorization layer between AI agents and money

Agents propose.
The Spine disposes.

Money 1.0 assumed a human at the point of every spend. Agents removed that human. So the authorization moves into policy you write and a signature only you hold. Deny by default. No spend without a decision. No decision without a record.

Run it in 30 seconds See the gate
  spend-spine · live decision
propose {
  payee: "CloudVendor",
  amount: $18.00,
  agent: "research-runner"
}
AUTHORIZE
within policy · under auto-tier
ledger seq 41 · sha256 9f3c…a1

The problem

An agent with a card is a breach waiting for a prompt.

Give a model a payment method and its spending authority is whatever a clever input can talk it into. Wallets and agent frameworks are crowded. The scarce piece is the layer that says what may be spent, by whom, up to what, and who has to sign — as code, not as a model's judgment.

Three outcomes

Every proposal ends one of three ways.

The decision states are the product. Color appears only when a decision does.

Authorize

Inside policy and under the auto-tier. Executes on the rail. The agent never sees the key.

amount ≤ auto-tier · payee allowed · under caps
Hold

Permitted by policy, but over the line you drew. It stops and waits for your signature. The agent cannot move it.

over auto-tier · flagged payee → needs the Chair
Deny

Outside policy. Unknown payee, over cap, duplicate, wrong currency. It never touches the rail.

fail closed · reason recorded · nothing spent
How it works

One primitive. Deny by default.

01

Propose

The agent asks to pay. It passes a payee, an amount, a memo. It holds no key and no card.

02

Decide

Deterministic policy evaluates against caps, allowlist, currency, and the day's spend. No model in the critical path.

03

Authorize or hold

Under the tier, it executes. Over it, the gate holds for a human signature. Rail keys are read only after authorization.

04

Record

Every decision appends to a hash-chained ledger. Tamper-evident. One command re-verifies the whole chain.

The headgate · new

The last dollar is yours to sign.

Small, expected spend flows on policy. Real money stops at a gate only you can open. A hold emits a challenge bound to that exact payment. The only thing that releases it is an ed25519 signature over that challenge — made with a key the agents do not hold and cannot forge.

Bound

To one payment

The challenge hashes payee, amount, idempotency key, and ledger position. A signature can't be replayed onto a different charge or a rewritten chain.

Verifiable

By public key alone

Checking a signature needs no secret, so the gate stays deterministic and anyone can audit a decision. Only you can make one.

Re-checked

At execution

Caps are evaluated again at the moment of authorization, not just at proposal. A day that rolled or spend that landed can still deny.

agents propose · policy filters · the gate holds · you sign · it executes · the ledger remembers
The record

No decision without a record.

Every proposal, hold, authorization, and execution is a hash-chained entry. Reorder one, rewrite one, delete one, and verify reports exactly where. The audit is not a log you trust. It's a chain you check.

# the agent proposes — auto-tier $ spine pay --payee CloudVendor --amount 1800 --memo "api hours" { "decision": "ALLOW", "tier": "auto", "charge_id": "ch_…" } # over the tier — held for the Chair $ headgate propose --payee CloudVendor --amount 8500 --memo "gpu" { "decision": "HOLD", "reasons": ["over_auto_tier"], "challenge": "ec9e…" } # you authorize with your signature $ chair-authorize --idem idem_58c6… { "decision": "ALLOW", "tier": "chair", "charge_id": "ch_…" } # the chain still holds $ spine verify OK chain intact: 42 entries verified
Rail-agnostic

Policy above any rail.

The Spine decides. The rail moves the money. Swap the rail without touching the policy or the ledger.

Stripe
card · PaymentIntents
live
x402
HTTP 402 · agent-native
live
MCP
tool for any agent
live
OKX · on-chain
settlement
Say it straight

We don't ask you to trust the model.

The pitch you've heard
What the Spine actually is
Trust your AI with payments.
You trust the policy you wrote. Not the model.
Guardrails for agent spending.
A gate. Guardrails suggest. Gates decide.
Give your agents financial autonomy.
Agents spend exactly what policy allows. Nothing else.
Revolutionary AI-native payments.
Deterministic authorization. It does what the policy says, every time.

Money 2.0 needs a gate.

This is the gate. One primitive, deny by default, a signature only you hold.

Read the code Back to top
$ git clone github.com/eclecticventures/spend-spine $ cd spend-spine $ python3 spine.py pay --payee CloudVendor --amount 1800 ALLOW · $ python3 spine.py verify · chain intact