# TUI Modes

The input and display modes the TUI switches between.

The current mode renders on the line below the input box, followed by the working directory. Since v1.3.7 the permission mode shows as `⏵⏵ auto` (orange) or `⏸ safe` instead of `[auto]` / `[safe]`; fast mode keeps its bracketed `[fast]` label in front (`[fast]⏸ safe`), and `[CLAUDE.md]` or `[AGENTS.md]` follows the mode while `Shift+G` guide injection is on and the work directory has that file. While the daemon socket is down the line shows `Connecting` instead:

- `safe` — tool calls require user confirmation before execution
- `auto` — tool calls run without confirmation (`allowAll = true`), except writes, commands and `rm` targets inside `$HOME` but outside the working directory (asked once, then granted for the session) and irreversible commands; it only takes effect while the working directory is a subdirectory of `$HOME` that is not `$HOME` itself and not a denied or sensitive path, otherwise the `safe` rules apply. Sandbox, validator and the password-backed prompts still apply (see [Permissions](/security-permissions))
- `fast` — passes `core.ModeFast` through `go-llm-router` so supported provider backends request a faster service tier

The session's model and reasoning level (`model/reasoning`, where reasoning may read `auto`) sit on the right of the input box's bottom border. The session name is no longer shown there; `Session ID: <short id>` is part of the header block printed at startup and after each session switch.

The global auto reasoning toggle was removed in v1.1.0. Reasoning is now a per-session level, and `auto` is one of its values: the agent selector then picks the level from the kind of work it reports.

Since v1.0.21 the transcript prints `⏵ Model(<model> <reasoning>)` when a run picks its model and `⏵ Switch(<model> <reasoning>)` when fallback moves to another one; the thinking line no longer repeats the model. Compaction shows as `⏵ Compact(tool history)` or `⏵ Compact(conversation history)`. The reply footer shows duration, tokens and finish time, with the session label on a second line; since v1.3.0 it no longer repeats `model/reasoning`: the model and level actually used are in the `⏵ Model(...)` line and the session setting on the input box border (the web chat shows the model when the footer is hovered). Since v1.1.0 the footer no longer carries the quota; press `Shift+U` for it. Finish times are shortened — `15:04` for today, `01-02 15:04` earlier this year, the full date otherwise; the web chat footers drop today's date and the current year the same way.

While a `write_todo` plan is open, the `Plan (done/total)` header in the thinking area animates its mark with the spinner until every item is done (v1.1.0). Since v1.3.1 each `write_todo` call in the trace is labelled `Plan` with the item in progress (or the last one completed) and its position, such as `[2/5]`, and the list is cleared when the task pauses, is cancelled or finishes (v1.3.0).

Auto mode is session-local: the TUI starts in `auto` when its working directory qualifies and in `safe` otherwise, and `Shift+Tab` toggles it. Fast mode and guide injection are process-local, sent with each run to the daemon, and are **not** persisted to `config.json`.
