W3matchJoin

AI Agent Wallets: Custody, Budgets and Spending Limits

How AI agent wallets separate the model, signer and owner. Understand spending limits, reserved funds, concurrent calls and outstanding authorizations.

Pawnie6 min read

An AI agent wallet lets software request financial actions through a signer. The practical controls are who holds signing authority, which actions are allowed and how spending is limited across the whole task.

Giving software a wallet therefore requires more than choosing where to store the key. You need rules governing which actions it can authorize, how spending accumulates and who can stop it. The model's reasoning and the wallet's enforcement are separate parts of that system.

I would evaluate an agent wallet by trying to exceed its authority through ordinary tool calls. A product that says “the agent understands the budget” hasn't yet shown that the budget is enforced.

Map the owner, operator and signer

The human or organization funds the wallet and sets policy. The agent selects actions within a task. A signing component turns an allowed action into a valid authorization or transaction. One product can combine some of those roles, but the authority should still be clear.

The signer might run in a local process, a managed wallet service or specialized isolated infrastructure. A smart account can enforce additional rules through its contracts. Those arrangements have different custody and recovery assumptions.

Coinbase's Agentic Wallets product describes private-key isolation and spending guardrails. That is a concrete product architecture to inspect, rather than a universal property of every wallet connected to an AI model. Coinbase Agentic Wallets.

Ask who can change the policy and what happens if the agent's access credentials are stolen. A system protecting the signing key can still accept malicious purchase instructions through an authorized API credential. Key isolation and action authorization solve different problems.

Put the policy between the agent and the money

A request should pass spending controls before a wallet signs it.

Payment authorization
Agent requestNames the resource, recipient and amount
Policy checksAllowed asset, merchant, budget and expiry
Wallet signatureOnly if the request passes the configured rules
Within policy

Authorize the bounded purchase and record the result.

Outside policy

Reject or escalate for human approval before signing.

A small payment must not silently grant unlimited future spending authority.

Make a permission specific

A useful spending permission names a spender, asset and allowance, with a time boundary. The application may also need merchant or contract restrictions and controls on which actions the spender can perform.

Coinbase's documented spend-permission interfaces include an allowance, recurring period and validity window. The exact enforcement depends on the relevant account and contract implementation. Spend permission API.

The permission should match the job. Buying a data response requires less authority than trading arbitrary tokens. Paying a known merchant requires less authority than allowing every contract call from a tool-generated transaction.

Connecting a wallet, approving token spending and delegating account actions are also distinct steps. A user can inspect a balance without intending to authorize a withdrawal. Existing token approvals can remain relevant after an agent integration changes. Wallet permissions and approvals.

A transaction cap misses the retry loop

Consider a hypothetical agent with a $1 maximum purchase and a $5 task budget. It requests a $0.50 API response, receives an ambiguous timeout and tries again. Every purchase satisfies the transaction cap. Repeating the request can still consume the full task budget.

The budget check needs accumulated spending and pending authorizations. If several calls run concurrently, they can all see the same unspent balance before any settlement completes. Checking and reserving the budget in one atomic operation prevents simultaneous calls from approving the same funds.

The policy demonstration below treats spent funds and reserved funds as unavailable for new requests. It uses fictional prices and a simplified local state machine. A real implementation needs durable storage and enforcement that survives process restarts.

The same accounting should follow a cancelled or failed call. Release a reservation when the authorization can no longer settle, rather than assuming that a timeout returned the money. An unresolved payment remains a financial state requiring reconciliation.

Keep task budgets and wallet balances separate

A wallet can hold more funds than a particular agent is allowed to spend. That enables several tasks to share funding without granting each task the whole balance. It also prevents “available balance” from becoming the default authority boundary.

Set a task budget, a cumulative period limit and a transaction ceiling where the workflow needs them. Their purpose differs: one limits a single mistake, another limits a loop and another limits total operating spend.

MPP's agent-spend guide places budget management around the payment client. That makes the configured policy a component to review rather than an assumption about what the model will decide. Managing agent spend.

For a production system, record the budget owner and the source of each limit. A tool response can propose a price, but it shouldn't be able to rewrite the maximum just because the resource is “required” to continue the task.

The recipient deserves its own check

A permitted asset and amount don't establish that the payment goes to the right seller. The transaction can have a correct currency and still point at an unintended address or contract.

Bind the purchase to the merchant and resource where the payment mechanism supports it. Check destination changes rather than accepting a new address from arbitrary content. The agent's research material and the service's payment challenge are inputs to validate, not instructions with authority over the wallet.

For contract interactions, inspect the complete action being signed. A seemingly small token transfer can arrive inside a broader call with additional permissions. A policy checking only the visible amount may miss the rest.

The x402 guide explains the payment offer. The agent identity article explains why identifying a seller still doesn't prove the quality or safety of every offer.

Revocation has a timing problem

Stopping an agent from issuing new signatures doesn't necessarily invalidate signatures already produced. A transaction already broadcast can also settle after the owner presses a stop button. The interface should explain which stage revocation affects.

Onchain allowances or delegated permissions need their own revocation process. A managed service's account block can operate at another layer. Review whether the stop action removes ongoing authority, expires new sessions or only disconnects a frontend.

This difference becomes visible during an incident. The operator needs a list of outstanding authorizations, pending transactions and active approvals. Without it, “agent stopped” can be mistaken for “all financial exposure stopped.”

A recovery drill should include a delayed settlement after the kill switch is activated. The result tells you much more about the authority boundary than a demonstration of normal payments.

Log the purchase, not the secret

A useful receipt records the task, merchant, quoted amount, authorized maximum and outcome. It should let the owner distinguish a payment that settled from a resource that arrived. Logs don't need the signing key to provide that evidence.

For variable usage, record the reserved amount and the final charge. A task can remain within its ceiling while choosing poor-value resources; the spending log gives the owner a way to compare results with cost.

Also record denied actions. Repeated blocked purchases can reveal a broken loop or a task whose budget doesn't fit its requirements. Quietly retrying a denied action turns an understandable limit into a hard-to-debug failure.

The test I would run before funding it

Give the agent a small hypothetical budget in a test environment. Attempt several simultaneous purchases, repeat a timed-out request and change the payment destination. Then revoke its authority while one payment remains pending.

The wallet should make each result legible to the owner. Allowed, reserved, spent, denied and unresolved shouldn't all look like one changing balance.

Once those controls work, choose the payment protocol around the resource's billing model. x402 vs MPP compares that layer. The wallet policy needs to remain effective whichever supported route the agent uses.

Two agents can share funds without sharing a budget

Imagine one wallet funding two research agents. Each task has a $5 allowance, but the operator permits only $8 of combined daily spending. If the first task spends $5, the second can use at most the remaining $3 under that shared rule. Its unused $5 task allowance is not permission to bypass the daily ceiling.

The signer needs to reserve funds against every applicable limit before approving a concurrent purchase. Otherwise two individually valid task requests can overrun the shared budget. This is a hypothetical policy design, not a claim that every wallet implements nested budgets.

#agent infrastructure

Keep reading

Back to blog