Rightshold™ Sign up

Answers · agent payments

My AI agent browses the web and can pay for things. How do I stop a hidden instruction on a web page or in an email from making it buy something or send money?

Last updated

TL;DR: Assume the model can be talked into it, and put the stop where money moves. Prompt injection means instructions hidden in a page, email, document or tool result that the agent reads and follows as if you'd said them. The vendors building browser agents say it isn't solved. Anthropic reported in August 2025 that, across 123 test cases in 29 attack scenarios, attacks on its Chrome agent succeeded 23.6% of the time without its new defenses and 11.2% with them. OpenAI wrote on December 22, 2025 that prompt injection is unlikely to ever be fully solved. So don't rely on the agent spotting the trick. Give it a payment credential with a low per-purchase cap and a list of merchants you chose, set somewhere the agent can't edit. Require your approval for any purchase outside that list or above a threshold, and show the approval screen with the merchant, payee, amount and items taken from the checkout itself, not from the agent's summary. Make sure the agent's own key can't approve. Keep reading untrusted content separate from paying: an agent that has just read an email or a web page shouldn't be able to add a new payee in the same run.

What should I check, step by step?

1. Treat every web page, email, PDF, review and tool result the agent reads as untrusted input, including hidden text a person can't see. Anthropic red-teamed its Chrome agent against injections hidden in form fields a person can't see, in URL text and in tab titles that only an agent would notice.

  1. Give the agent a payment credential of its own (a virtual card, a scoped wallet or a delegated token), never your main card, with a per-purchase cap and a daily cap small enough to lose.
  2. Set a merchant allowlist outside the agent. A purchase from a merchant you didn't list is refused, which defeats the common trick of sending the agent to an attacker's checkout page.
  3. Require a human approval for anything off the list, above a threshold, or that adds a payee, changes a shipping address or buys gift cards or crypto. Bind the approval to the exact merchant, amount, currency and items, and refuse the payment if any of them changed afterwards.
  4. Build the approval screen from the checkout data, not from what the agent says. An injected agent can describe a purchase falsely.
  5. Make sure only you can approve. If the agent holds the key that approves, an injection can tell it to approve itself.
  6. Split the jobs. Let a research step read the open web without payment tools, and let a separate step with payment tools act only on structured choices (product id, merchant, price) instead of free text it just read.
  7. Follow the vendors' own advice: OpenAI recommends logged-out mode when sign-in isn't needed, reviewing confirmation requests carefully, and giving specific tasks instead of broad ones like "take whatever action is needed".

How often do prompt injection attacks succeed against browser AI agents?

Anthropic's Claude in Chrome post (August 25, 2025) says prompt injection can cause AIs to delete files, steal data or make financial transactions. In its red-teaming of 123 test cases representing 29 attack scenarios, browser use without its new mitigations had a 23.6% attack success rate when deliberately targeted, and 11.2% with them in autonomous mode. On a challenge set of four browser-specific attack types, such as hidden form fields in the page's DOM and instructions in URL text or tab titles, the new mitigations took success from 35.7% to 0%. Its defenses start with permissions: site-level access and confirmations before high-risk actions like purchasing, plus blocking high-risk site categories such as financial services by default.

Why should spending controls for an AI agent sit outside the model?

A confirmation the model chooses to ask for is only as strong as the model. A cap, an allowlist and an approval check enforced by code the agent can't change hold even when the model has been fooled, because they look at the purchase itself (merchant, amount, payee) and not at the agent's reasons for it.

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: “Before you pay for anything, check the purchase against my agent's spending policy and get a signed allow or deny. If the merchant isn't on my list, stop and ask me.”

One-click setup

{
  "tool": "authorize_spend",
  "arguments": {
    "credential_id": "crd_YOUR_AGENT_CREDENTIAL",
    "amount_minor": 2499,
    "currency": "USD",
    "merchant_domain": "<merchant domain from the checkout page>",
    "category": "<category>",
    "reference": "<order or cart id>"
  }
}

Rightshold checks proposed purchases against the policy you set and records signed decisions and approvals on a hash-chained ledger. It doesn't read the pages your agent visits, detect prompt injection, hold card or wallet credentials, or move money, so it only stops a purchase if your payment code refuses to pay without an allow or a matching approval. Not security or 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}}'