Control
paused. pause.viewerUrl on the run is the player for that session: open it and press take control there to drive the page yourself. It is absent when the run was submitted with record: false. Hand the wheel back with control('release') and the agent resumes from whatever page you left it on, not from where it was.
While you hold the wheel, whether after control('take') or by driving in the live viewer, the run bills browser time (1 credit a minute) and proxy usage only, with no model usage, until you hand it back. See pricing.
Use it for a step you would rather do yourself, a login you will not automate, a form only you should complete, not to stop a run (that is agent.cancel).
Answer
paused with pause.reason set to question, pause.question holding what it asked, pause.options the replies it suggests (any answer is accepted) and pause.expiresAt when it stops waiting. Answer it and the run carries on from where it stopped. A question nobody answers by pause.expiresAt is answered “nobody replied” and the run decides what to do without it.
A run that can pay may ask two structured questions, in
pause.ask. An approval question (a purchase above your workspace’s approval amount) is answered with {"approve": true} or {"approve": false}; one nobody answers in time fails that purchase with approval_timed_out and nothing is bought. A secret question (a card, a billing profile or a security code) is never answered here: send the value as a run secret named pause.ask.for, and an answer carrying it is refused with secret_in_answer.