Countersign — the kill switch for AI agents that spend money
Four rails frozen in ~432ms — proven on testnet<br>The kill switch for AI agents that spend money.
Countersign is a neutral, cross-vendor control plane: one policy, one freeze, and one<br>tamper-evident audit ledger — across every agent-wallet backend at once . The one thing no single<br>wallet vendor can do, because each only governs its own rail.
Get your key →<br>$ npm i @countersign/sdk<br>Copy<br>Read the whitepaper →<br>★ Star on GitHub
4 rails live — Coinbase · Turnkey · Openfort · Visa card
Apache-2.0 open core<br>Independently verifiable signed ledger
▶ Live — three agents, three vendors, one freeze in 0.41s
Get started
From install to a working kill switch in minutes.
Pick your entry point — each is one copy-paste away from value. Free, testnet, no account required.
Install the SDK
The typed client agents and operators use to wire in the cross-vendor freeze, spend guard, and live ledger. Browser + Node.
$ npm i @countersign/sdk<br>Copy
Guard & freeze
One policy compiles to every backend's native controls. Ask before a spend; freeze everything in one call.
import { CountersignClient } from "@countersign/sdk";<br>const cs = new CountersignClient({ baseUrl, apiKey });
// may this spend happen?<br>await cs.evaluate({ agentId, amount, asset, venue });<br>// kill switch — every wallet,<br>await cs.freeze();
Drop it into your agent (MCP)
Add Countersign as MCP tools in Claude, Cursor, or any MCP client — the kill switch + spend guard, one line.
$ npx @countersign/mcp<br>Copy config<br>Or run the full demo locally: pnpm demo — 3 agents, 3 backends, one freeze<br>How it works
Build the layer above the wallets.
① One unified policy<br>Caps, allow/deny lists, approval thresholds — plus venues, listings, and negotiated terms . It governs markets an agent transacts in, not just a number. Written once.
② Compiled to each rail<br>The compiler lowers it to every backend's native controls — so a compromised agent can't exceed the cap, not just a polite request.
③ One freeze, verifiable audit<br>A single action stops every backend concurrently in<br>Enforceability
See exactly where every control binds.
A security control whose binding you can't see isn't one. Countersign publishes, per rail and<br>per policy field, whether it's enforced natively — inside the vendor's MPC, enclave, or on-chain, where<br>a compromised agent can't bypass it — or at Countersign's own pre-flight layer. The freeze is native on<br>every rail. What varies is fine-grained policy, and we never hide which is which.
RailFreezePer-tx capDaily capApproval
Coinbasenativenativenativelayer<br>Turnkeynativenativelayernative<br>Openfortnativelayernativelayer<br>Lithic · Visanativenativelayerlayer
native bound in the vendor — bypass-proof<br>layer bound at Countersign's pre-flight guard
Computed live per rail from the policy compiler — the current matrix is served at<br>GET /enforcement and rendered in the live dashboard.
The network effect
Every guarded spend makes the network safer.
Countersign is distributed primarily over MCP — so any agent in Claude, Cursor, or your own<br>stack picks up a spend guard and a kill switch. Each spend that flows through it strengthens a cross-rail safety<br>layer no single wallet vendor can match — because each vendor only governs its own rail. That's the flywheel.
1 · Guard<br>An agent asks countersign_request_spend before it moves money. Allowed, denied, or held for a human — fail-closed.
2 · Adopt<br>Operators add the one-line MCP server to their other agents and their team. The kill switch now spans every rail at once.
3 · Strengthen<br>More agents under one policy + one freeze = a cross-vendor safety net that grows more valuable the more of the agent economy joins it.
Truthful by design: propagation is always a value-adding, opt-in surface. Countersign never makes an<br>agent post, DM, or recruit on its own — a denied spend or a freeze simply offers peers the same protection, which a<br>human or agent can choose to share.
Spread the safety net
Add the badge. Bring your other agents and your team.
If Countersign guards your agent, say so — it signals to users (and other agents) that spending is<br>governed, and it points the next operator to the same kill switch. Drop the badge in your README or app footer.
Spending governed by Countersign
← live preview of the badge
Markdown badge
For your README
[](https://countersign.network)<br>Copy
HTML badge
For your app or site footer
🛡️ Spending governed by Countersign<br>🛡️ Spending governed by Countersign'>Copy
Bring your other agents
One line — any MCP client
npx @countersign/mcp<br>Copy
Same policy, same freeze, across your whole fleet. Onboarding a teammate?<br>Send them app.countersign.network/start for an instant key.
Why operators reach for it
The questions a team asks before agents touch money.
These are the recurring asks Countersign is...