Set it up
- Link the agent’s virtual card in your dashboard.
- Open Companion limits, choose a payment currency and limits per purchase and calendar month, then select Enable automatic purchases. This permits submission within those limits without another Transfer approval each time. Automatic purchases are off by default. These limits apply to this companion; your issuing bank’s controls remain separate.
- Use a separately configured companion connection. The default Copy for Codex flow uses card-details mode instead and does not enable this browser. Companion deployments require the local companion runtime, MCP SDK, Zod and Playwright with Chromium, plus their own private version 2 companion configuration. A restart may be needed. Setup itself makes no purchase.
- Ask Codex to inspect its assigned card with
get_agent_card, then give it the website, item and exact maximum amount you intend to spend. It can shop in an existing browser and use the companion when payment needs the trusted bridge.
Purchase flow
The agent can open the website, inspect filtered page text and ordinary controls, and enter shopping or shipping details. Input values, card fields and screenshots are not exposed. Generic browser actions cannot enter card details or click the final payment button. For the final action,checkout_purchase receives one stable request_id, the
exact expected amount in cents and payment currency. The companion identifies
the checkout fields, total, merchant and payment control, checks them against
the request, and obtains a server-side purchase intent under your current limits.
It fills the assigned card privately, records submission before clicking once,
and clears payment fields after the attempt. Ambiguous totals, required missing
fields or unsupported controls return requires_action instead of guessing.
If CVC is required, enter it directly at the merchant before the agent resumes
the pending preparation. The companion checks only whether that field is filled
and valid; it does not read or store its value. Login, CAPTCHA and 3D Secure also
require your action in the visible browser.
After any card-entry attempt, the browser stays private to the owner. Agent page
inspection, navigation and ordinary actions remain locked until that browser is
closed; clearing known fields cannot prove that merchant scripts discarded card
data. get_checkout_status returns only a filtered outcome. Open a fresh isolated
browser for further shopping.
Pending or uncertain payments
After a payment has been submitted, useget_checkout_status to check a receipt
or finish bank authentication. This tool never submits payment again. A merchant
receipt is not independent confirmation of bank settlement.
If the result is unknown, submitting or a submitted requires_action, new
automatic purchases remain paused. Check the merchant and your bank. In
Companion limits, use I checked: paid or I checked: not charged only
after checking the result. Submitted amounts remain counted against the current
monthly limit even when recorded as failed; this prevents uncertain retries from
silently restoring spending allowance. Limits use one configured currency, with
no automatic currency conversion.
Opening another browser, restarting the companion or inventing a new request ID
does not clear an unresolved payment. Never retry an uncertain purchase with a
new ID.
Available local tools
The companion also proxies
get_agent_card, get_payment_card and
list_agent_transactions for its one assigned agent. Manual remote HTTP MCP
connections provide those three card tools; they do not install the local
browser companion. Transfer does not have a bank balance or transaction feed,
and bank-side limits still apply.
Integrating another browser
A trusted browser adapter must hold the agent credential outside model context, redeem the short-lived token with that same credential, and deliver PAN and expiry directly to protected card fields.get_payment_card itself never returns the
card number, and an opaque token cannot be typed into a merchant card field.
The adapter must also validate merchant, exact total and currency; obtain a
purchase intent under current owner limits; record submitting before its one
payment click; and finalize or reconcile the durable result without retrying an
uncertain payment. CVC and bank authentication remain owner actions. Card entry
must keep the browser private from agent inspection afterward, including merchant
copies of the data. Reopening a browser or changing the request ID cannot bypass
an unresolved payment.
Transfer’s fillAssignedCard helper and executeCheckout engine demonstrate
the private injection and authorized submission flow. Adapting them to another
browser requires a trusted integration with those capabilities; configuring a
normal browser tool alone does not add them.