Security

SpendVeto sits between an agent and its money. That's a position that has to earn trust with evidence, not adjectives. Here's exactly what's enforced, what isn't yet, and how to report a problem.

What's enforced today

Custody model

SpendVeto can run in two modes. In the default mode, the agent's own keypair signs payments locally after the policy pipeline approves — SpendVeto never holds funds. In the keyless / proxy mode, an enforcement proxy holds custody and signs on the agent's behalf only after governance passes, so an agent can operate without ever touching a private key. In both modes, no payment is possible without a policy decision.

What's not yet true

SpendVeto is a prototype in public. Simulate mode (the default) is real ECDSA against a local ledger — no real funds move. Testnet mode settles real x402 transactions on Base Sepolia. Neither mode has been through an external security audit yet, and mainnet settlement is not yet enabled. Treat this as pre-audit software: don't point it at funds you can't afford to lose until an audit has happened.

Verification, not marketing: every control above is exercised by an assertion in the 267-check suite (npm run verify) on every change to the codebase — see the verification docs.

Reporting a vulnerability

If you find a way to bypass a policy check, forge a payment signature, or defeat an approval gate, please report it privately before any public disclosure — email [email protected]. We'll acknowledge within 48 hours.