Approvals and questions
Tool approvals, file-edit reviews, plans and questions in the desktop app, and the keys that answer them.
The agent waits until you answer. Which calls ask, the safelist and interaction modes: tool approvals. With the daemon on, you can answer from any window or from the TUI. The first answer wins.
Approve a tool call#
A bar above the composer shows the tool and its input, and names the sub-agent when one issued the call.
| Button | Key | Does |
|---|---|---|
| Allow once | Command Return | Runs this call |
| Always allow | Command Shift Return | Runs it and adds it to this project's safelist |
| Deny | Escapeesc | Refuses it. The agent gets the refusal. |
Review a file edit#
edit, multi_edit and write_file open a review with the diff instead of the bar:
| Button | Key | Does |
|---|---|---|
| Allow | AA | Applies the edit |
| Allow for session | SS | Applies it and stops asking for this tool until the session ends |
| Always allow | PP | Applies it and adds it to the project's safelist |
| Deny | DD or Escapeesc | Refuses it |
An edit with several hunks lists each hunk with a checkbox. If you untick some, Allow becomes Apply selected (2 of 3). If you untick all, the button reads Allow (none selected) and is off, so use Deny. The agent gets the list of hunks that you applied and denied.
Answer a plan#
present_plan shows a plan card. This demo's buttons work.
Link docs/releases/v8.md from the changelog, tag v8.0.0 and open a pull request.
- Link the notes from CHANGELOG.md
- Tag v8.0.0
- Open a pull request
| Button | Does |
|---|---|
| Approve | The agent carries out the plan |
| Revise… | You say what to change. The agent comes back with a new plan. |
| Reject… | Stops the run. A note tells the agent why. |
Answer questions#
ask_user sends one or more questions in a form. Answer the required ones, then click Send answers.
Two things before I open the pull request.
| Question | You answer with | Required by default |
|---|---|---|
| Select | One choice | Yes |
| Select, multiple | One or more choices. The agent can tick some in advance. | Yes |
| Confirm | Yes or no | Yes |
| Text, text area | A line or a few paragraphs | No |
Additional instructions, under the questions, adds to your answers or overrides them. Dismiss continues without answering. Settings › Agent › Defaults › Interaction mode decides whether the agent asks at all (interaction modes).
Where requests wait#
| Request | Shows in |
|---|---|
| Tool call | The bar above the composer |
| File edit | The review dialog |
| Plan or question | The Inbox tab of the side panel, with a highlighted badge in the composer that opens it (badges) |
A new plan or question opens the Inbox tab, so you answer while reading the conversation. Older requests stack under the current one, folded to a line. A session with pending requests shows a count on its Inbox tab and a status dot in the sidebar.
Requests from a server#
A session on a saved server sends requests to your window the same way, and your answer goes back to the server. Removing the server drops its pending requests and closes its chats.
After a crash#
The app saves pending approvals on disk and shows them again at the next launch. The run that asked has ended, so your answer only clears the request. Always allow still adds the safelist entry. To revoke it, go to Settings › Agent › Approvals & safety › Safelisted commands.
Reference#
QuestionForm,PlanCard,InteractionCard,HostInteractions.- Decisions: answers from a model instead of you, for hooks and extensions.

