Shows governed agent wallet enforcement in action: allow, deny, step-up, allowlist — all in 5 seconds. No API keys. No blockchain required.
▶ provision_wallet
wallet_id: demo-wallet-abc123
daily_cap: $200 USDC
per_call_cap: $100 USDC
▶ governed_spend — $25 USDC (allowed)
✓ AUTHORIZED
receipt_id: 6aba84a6-...
daily_remaining: $175 USDC
next_step: wallet.sendToken({ assetId: "usdc", amount: "25", destination: "0xVendorABC123" })
▶ governed_spend — $150 USDC (exceeds per-call cap)
✗ DENIED
reason: Amount 150 USDC exceeds per-call cap 100 USDC
receipt_id: cd7a7aa8-... (denial is logged too)
▶ governed_spend — $75 USDC (step-up required)
⚠ STEP-UP REQUIRED
reason: Amount 75 USDC > step-up threshold 50 USDC — MFA required
fix: Pass approval_token from your authorization flow
▶ governed_spend — unknown recipient (not in allowlist)
✗ DENIED
reason: Recipient 0xUnknownAddress not in allowlist
▶ wallet_audit
chain_verified: true ✓
total_receipts: 5
[17:02:18] DENY $10 USDC governed_spend
[17:02:18] DENY $75 USDC governed_spend
[17:02:18] DENY $150 USDC governed_spend
[17:02:18] ALLOW $25 USDC governed_spend
[17:02:18] ALLOW provision_wallet
Every action — allow AND deny — produces an immutable receipt. chain_verified: true means the full chain is tamper-evident — any modification is detectable.
git clone https://github.com/DingDawg/agent-wallet-demo
cd agent-wallet-demo
npm install
node demo.mjsdingdawg-agent-wallet — 5 MCP tools that wrap any agent wallet with policy enforcement and an immutable audit trail.
npm install dingdawg-agent-wallet| Tool | What it does |
|---|---|
provision_wallet |
Create wallet with spend policy (daily cap, per-call cap, allowlist) |
governed_spend |
Policy check → authorize → immutable receipt |
governed_receive |
Accept payment with tamper-evident receipt |
wallet_policy |
Update limits and allowlists at runtime |
wallet_audit |
Full receipt chain — chain_verified: true |
Coinbase AgentKit gives your agent a wallet. DingDawg gives it a conscience.
AI agents can now hold USDC and spend autonomously. The infrastructure exists. What doesn't: who enforces what the agent is allowed to spend, on what, for whom — and proves it happened correctly.
governed_spendauthorizes then returns the exactagentkit_callSDK method to execute on-chain- Every denial is logged — you can prove what your agent didn't do
chain_verified: truemeans the audit trail is tamper-evident — any modification is detectable