Rightshold™ Sign up

Answers · agent payments

We're giving an AI agent a Coinbase Agentic Wallet (the awal CLI or the Agentic Wallet MCP server) so it can pay for x402 APIs and send USDC. Do the per-call and per-session spending limits actually stop it from overspending, can the agent change them, and what else do we need to lock down?

Last updated

TL;DR: They help, but they aren't a budget on their own. You set two limits in the wallet app, a max per call (Coinbase's example is $0.05) and a max per session (example $5.00), and Coinbase's docs say agents respect them and can't change them, only you can. Three things limit what that promise is worth. First, the docs we read don't say when a session starts or ends, so don't treat the session cap as a daily or monthly budget until you've tested what resets it. Second, the wallet is tied to an email address and signed in with a one-time code sent there, and Coinbase's own agent skill tells the agent that if it has access to email it can sign the wallet in itself; the wallet app where the limits live is opened with the same email sign-in, so keep the agent out of that inbox. Third, payments are onchain and can't be reversed; refunds depend on the seller. The CLI version can also send USDC to any address or ENS name and trade tokens, while the MCP version only pays for x402 services, so pick the MCP version if paying for APIs is all the agent needs.

What should I check, step by step?

1. Pick the narrowest product. Coinbase's overview says the Agentic Wallet MCP lets agents discover and pay for x402 services only, while the CLI (awal) can also send and trade. If the agent only buys API calls, don't install the CLI skills.

  1. Set both limits in the wallet app before funding: max per call close to the most one API call should cost, and max per session to what one job should spend. Then test what happens at the session limit and what resets it (signing out and in, restarting the wallet server, a new day) before relying on it.
  2. Fund the wallet with only what you're prepared to lose. The balance is the one cap nothing in the agent can raise; top it up yourself rather than giving the agent a funding route.
  3. Use an email address the agent can't read for the wallet. Coinbase's skill instructions say that with email access the agent can complete sign-in by itself; without it, it has to ask you for the code. Enter codes yourself.
  4. If the agent uses the CLI, pass --max-amount on every x402 pay call (USDC atomic units: 100000 = $0.10), so a price change is refused for that call even if it's under your wallet's per-call limit.
  5. Write amounts with decimals when the agent sends USDC. Coinbase's send docs say numbers over 100 without decimals are treated as atomic units, so "send 500" means $0.0005, not $500; the reverse mistake in a script is just as easy.
  6. Keep persistence off unless you need it. The CLI's persistence setting keeps the wallet session signed in between runs; with it off, a new run needs sign-in again, which is a natural checkpoint for you.
  7. Sign the agent out when the job is done (npx awal auth logout) and check status afterwards; the skill notes that this clears the session and invalidates the cached sign-in flow.
  8. Review the wallet's transaction history after each job, since the wallet app shows what the agent paid and the payments can't be reversed.

Can an AI agent change its Coinbase Agentic Wallet spending limits?

Coinbase's Agentic Wallet comes in two forms. The Agentic Wallet MCP server (installed with npx @coinbase/payments-mcp) gives an MCP client tools to sign in, check the balance, find services in the x402 Bazaar and make x402 requests. The Agentic Wallet CLI (npx awal, usually driven through Coinbase's agentic-wallet-skills) adds sending USDC and other tokens on Base, Polygon and Solana and trading tokens, as well as x402 payments.

Can an AI agent sign in to a Coinbase Agentic Wallet by reading the email code itself?

Sign-in is a two-step email one-time passcode: npx awal auth login sends a 6-digit code to the wallet's email address, and npx awal auth verify completes it. The MCP version opens the wallet app in a browser for the same email sign-in, and that app is where funding, transaction history and the spending limits are managed.

What don't Coinbase Agentic Wallet per-call and per-session limits protect against?

Session length. The pages we read don't define a spending session, how it relates to the CLI's sign-in session and persistence setting, or whether signing in again starts a new allowance. Until you've tested it, assume the session cap limits one stretch of activity, not a day or a month.

How do I ask Rightshold about this (free, no key)?

Add the MCP server https://www.rightshold.com/mcp to Claude, Cursor, ChatGPT, Grok or VS Code, then ask: “My agent wants to run npx awal send 25.00 to 0x1234...abcd on Base for invoice INV-88. Ask me to approve that exact send first and give me a record I can check, because the wallet's own limits don't check who the recipient is.”

One-click setup

{
  "tool": "request_human_approval",
  "arguments": {
    "action": {
      "tool": "awal send",
      "amount_usdc": "25.00",
      "recipient": "0x1234...abcd",
      "chain": "base",
      "invoice": "INV-88"
    },
    "summary": "Send 25.00 USDC on Base to 0x1234...abcd for invoice INV-88",
    "expires_in_minutes": 60
  }
}

Rightshold records approvals and spending decisions your agent asks it for. It never holds or moves money, isn't a wallet or exchange and isn't affiliated with Coinbase or Circle. Coinbase Agentic Wallet behavior is as described in Coinbase's developer docs and the coinbase/agentic-wallet-skills repository, read on November 11, 2026; limits, defaults and commands may change. Not financial advice.

What are the sources?

Related

Not legal advice. JSON · Markdown · All answers

Get a free API key in one call

No card and no email needed. 100 free credits; the license and policy checks stay free without a key.

curl -s -X POST https://www.rightshold.com/v1/accounts/signup -H "Content-Type: application/json" -d '{"accept_terms":true}'
export RIGHTSHOLD_API_KEY=rs_...   # the api_key from the reply (shown once)
curl -s https://www.rightshold.com/v1/licenses/check -H "Authorization: Bearer $RIGHTSHOLD_API_KEY" \
  -H "Content-Type: application/json" -d '{"license":"MIT","intended_use":{"commercial_use":true}}'