Staying in control
How to restrict who an AI agent can pay
A recipient allowlist limits where an agent's money can go, which amount caps can't. How to build one, match addresses safely and handle new payees.
Give the agent's payment policy a recipient allowlist: the exact addresses or accounts it may pay, checked by the payment service before anything moves. Payments to anyone else are refused, however small.
Why is this harder than it sounds?
Amount limits decide how much an agent can lose, not where it goes. Most ways an agent is misled into paying end with a destination the attacker controls, such as an address in a document the agent read or a 'new payment details' message, so the destination is the thing to pin down. On-chain this is sharper still: a token allowance caps the amount a spender can move but says nothing about the recipient. Addresses also have traps. EVM addresses can be written in mixed or lower case and are the same address either way, so a naive string comparison can let a variant through or reject the real one.
How do you do it?
- List the payees you already know. Collect the addresses or accounts for the services the agent pays today. Get them from the provider directly, not from something the agent found.
- Put them in the policy, not the prompt. Store the allowlist with the payment service so it is checked on every request. A list in the system prompt can be argued with.
- Compare addresses canonically. For EVM addresses, compare case-insensitively so 0xabc… and 0xAbC… are treated as the same address, as they are on-chain.
- Decide how new payees get added. Adding a recipient should be something only you can do, outside the agent's tools. If the agent needs a new payee, it should ask you.
- Keep a human path for one-offs. If an agent occasionally needs to pay someone new, route those payments through approval rather than widening the allowlist.
- Review the list. Remove payees you no longer use. Every entry is somewhere money can go without you.
What it does not mean
- An allowlist doesn't check that a payee delivers. It only guarantees where the money went.
- Merchant category controls on a card are not an allowlist of payees. They narrow the kind of business, not the business.
- An empty allowlist doesn't always mean 'anyone'. Check what your service does with one; Veyra treats it differently for unattended payments, below.
Common questions
Why does auto-pay need an allowlist?
Because the capped allowance that lets a relayer pay unattended limits how much can move, not to whom. Without an allowlist, the destination of unattended payments would rest on the policy engine alone, so Veyra asks you instead.
Can I allowlist an exchange deposit address?
Technically, any valid address on the network can go on the list. Whether a given deposit address accepts direct transfers is up to that exchange; check with them.
Where does Veyra fit?
Every Veyra endpoint has an optional recipient allowlist, editable from the endpoint page. A populated list is exhaustive: a payment to any other address is blocked with RECIPIENT_NOT_ALLOWED before limits are even checked. Addresses are compared case-insensitively. With an empty list, payments you approve in your wallet can go to any address within your limits, but unattended auto-pay is switched off: a payment under the auto-approve limit is held for your approval instead, because the on-chain allowance behind auto-pay caps the amount and not the destination. The agent can read the current allowlist with get_capabilities; it has no tool to change it.
Sources
Terms on this page
- Token allowance (ERC-20 approve)A token allowance is the amount of an ERC-20 token that an owner has authorised a specific spender address to transfer from the owner's account, set with approve and spent with transferFrom.
- Auto-approve limitAn auto-approve limit is the largest single payment an agent may make without a person approving it, within any other caps that apply.
This page explains how agent payments and the related technology work. It is not financial, investment, legal or tax advice. Protocols and provider features change; check the linked official sources before relying on a detail.