Skip to content

Tools & review

Tools are how the model acts. Every tool call goes through the same pipeline: review (compute what to show, decide whether to auto-run), then execute, then the result is sent back as a message.

Tool Effect Review
read_files Read one or more files auto
search_lores Regex search over lore libraries auto
exec_shell Run a shell command manual
diff Apply a unified diff to a file manual
replace Apply exact search/replace patches manual
agent Launch a sub-agent manual

Auto-execution is not a hardcoded list: a tool auto-runs when its RPC is declared idempotency_level = NO_SIDE_EFFECTS. The same rule applies to remote tool engines, so a GetIssue runs silently while UpdateIssue waits for you.

Each tool renders its own request:

  • exec_shell shows the command as a sh code block;
  • diff and replace show a unified diff computed at review time — the patch has already been applied to a copy and validated, so what you approve is exactly what lands;
  • engine RPCs show Service/Method and the request as JSON.

When a call awaits review the status line says so and the input box turns into a reason field:

Key Verdict
alt+y Accept the call under review
alt+shift+y Accept every pending call
alt+shift+r Reject; the input text is sent back as the reason
alt+shift+a Always accept this tool for the rest of the session

A rejected call returns an error result carrying your reason, so the model can adjust rather than retry blindly. Cancelling a turn (ctrl+c) marks every unresolved call as never run.

Tools are the union of three sources, deduplicated:

  1. --tool name on the command line (repeatable);
  2. @tool(...) directives of the role (and included roles);
  3. chat.default_tools from the configuration.

Inside a chat alt+shift+t opens a fuzzy picker to toggle any tool — built-in or engine — for the current chat.