Countersign – one kill switch and audit log for AI agents across wallet vendors

screan1 pts0 comments

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

[![Spending governed by Countersign](https://img.shields.io/badge/spending%20governed%20by-Countersign-58e6a8?labelColor=0b1020)](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...

countersign agents freeze agent spend kill

Related Articles