Rightshold™ Sign up

Answers · agent safety

How do I hand login and payment steps from a browser-using AI agent to a human, and keep an auditable record of each handoff?

Last updated

TL;DR: Make the handoff a step the browser driver enforces, not something the model decides to do. When the agent reaches a sign-in form, a passkey or one-time-code prompt, a CAPTCHA, a card or bank form, or a final 'place order' / 'pay' button, the driver pauses the agent, stops sending it screenshots, and gives the live page to a person. The person types the password or card details and confirms the payment themselves; the agent never sees them. When the person hands back, the driver records what happened: which task and origin, what kind of step (login, payment, CAPTCHA), who took over, when control passed each way, and for payments the exact merchant, amount and currency the person approved, bound to a hash of that action. If anything changes after approval (a different amount, payee or cart), the agent has to ask again. ChatGPT agent works this way: you take over its browser to sign in, it asks before purchases, and OpenAI says it doesn't collect what you type during takeover.

What should I check, step by step?

1. List the handoff steps for your agent: password and username forms, passkey and one-time-code prompts, CAPTCHAs and other human checks, card, bank and wallet forms, final purchase or pay buttons, and accepting terms or cookie banners.

  1. Detect them in the driver, not only by asking the model: password inputs, autocomplete=cc-number and similar fields, known payment iframes, WebAuthn prompts, and a list of URLs per origin. When one appears, pause the agent before it acts.
  2. During the handoff stop feeding the model screenshots, page text and keystrokes, and don't log the person's input. Resume only when the person says they're done.
  3. For payments, show the person the exact merchant, amount, currency and items before they confirm, and hash that action. Approval for one cart or amount doesn't cover another.
  4. Record each handoff as two entries, out and back: task id, origin, step type, reason, person, times, outcome (signed in, paid, cancelled, timed out) and, for payments, the action hash and approval id. Never the password, code or card number.
  5. Give handoffs a timeout and a safe default: if nobody answers, the task stops; it doesn't retry the login itself or pick another payment method.
  6. Re-ask on change: if the agent later needs a new origin, a higher amount, a different payee or a new login, that's a new handoff, not part of the old one.
  7. Review the record: count handoffs per task and flag payments with no matching approval, and logins on origins the task wasn't given.

Why should login and payment steps go to a person?

Credentials and payments are where a mistake or a prompt injection costs the most. Anthropic's computer use docs advise keeping account login information away from the model and asking a human to confirm actions with real-world consequences or that need affirmative consent, such as accepting cookies, completing financial transactions or agreeing to terms of service.

How does ChatGPT agent hand login and payment steps to the user?

OpenAI's ChatGPT agent prompts you to log in by taking over its browser, asks for permission before actions with real-world consequences like making a purchase, needs active supervision ('watch mode') for tasks like sending email, and refuses high-risk tasks such as bank transfers.

What should a human handoff record prove?

That the step was done by a person, not the agent: who took over, when, and that the agent was paused for that stretch.

What are the common failure modes?

The model is given the password 'just for this site', and it ends up in the prompt history, logs or a screenshot.

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 browser agent has reached the payment step. Ask me to approve the exact purchase (merchant origin, amount, currency and items), and I'll complete the payment myself in the browser; keep the approval as a signed record.”

One-click setup

{
  "tool": "request_human_approval",
  "arguments": {
    "summary": "Browser agent handoff at checkout on shop.example.com: 1 pair of headphones, 89.00 USD. I'll enter payment details myself.",
    "action": {
      "type": "browser_handoff",
      "step": "payment",
      "origin": "https://shop.example.com",
      "amount_minor": 8900,
      "currency": "USD",
      "items": [
        "headphones-x1"
      ],
      "task_id": "task_…"
    },
    "expires_in_minutes": 15
  }
}

Rightshold records approvals and handoff entries your driver sends it. It doesn't run or watch the browser, take over sessions, see what anyone types, or process the payment. Not legal or payment-compliance 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}}'