Skip to content

Prompts & approvals

When the agent pauses and waits for you — approval prompts, free-form questions, and how autonomous mode replies for you.

Agents pause the turn and ask you something by calling ask_user or by running a tool whose call the session policy wants to gate. Both paths surface the same way: a prompt widget appears above the composer, the context bar flips to awaiting …, and the turn sits in place until you answer.

An approval prompt above the composer — "Approval required: Should I proceed to delete /tmp/dn-demo.txt?" with Allow, Allow Session, Deny, and Cancel buttons.

The composer is still usable while a prompt is up — you can open other screens, read the backlog, or switch to a different session. The prompt stays pinned to the session it came from.

The widget reconfigures based on what the agent asked for:

Approval — a yes/no (or session-wide-yes) gate before a tool call runs. Four buttons:

ButtonEffect
AllowRun this call. The next one for the same tool still prompts.
Allow SessionRun this call and auto-approve the rest of the session for this tool.
DenyRefuse the call. The agent sees the denial and adapts.
CancelInterrupt the entire turn.

Allow Session only covers the current session — a new session starts clean. There is no persistent always-allow list.

Input or choice — free-form question. Buttons are hidden; the composer takes text instead. A hint line shows the submit rules:

Input required: Which config file should we edit?
production.yaml is the default.
Enter to submit · Type option number or text · Esc to cancel

When options are offered, you can type the option number, the label, or (if the tool allows it) free text.

Whatever you pick — Allow, Deny, typed input — becomes the tool-call result the agent reads on its next step. Deny is not an error; the agent sees a structured refusal and chooses what to do next (often falling back to a different approach).

Under /auto (or any headless policy), the permission loop is bypassed. ask_user and tool-approval prompts alike auto-return deny so the agent can keep moving without a human. The agent sees the denial exactly as it would a real refusal and either picks a default or abandons the subtask.

Flip back to interactive at any time with /interactive. See Autonomy for policy details.

The session browser (Ctrl+B) flags sessions awaiting you with badges: approval when a tool call is gated, input when the agent is waiting on text. The context bar shows awaiting … on the active session. Background sessions raise a flash notification when they land on a prompt so you can switch into them.

Prompts don’t time out — a session can sit in awaiting … indefinitely. If you resume a runtime that left a prompt hanging, it’s still there waiting.