# 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.0.19 the labels carry no brackets:

- `safe` (default) — tool calls require user confirmation before execution
- `auto` — all tool calls are automatically approved (`allowAll = true`); sandbox and validator still apply
- `fast` — passes `provider.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 is two lines: duration, tokens and finish time first, then `model/reasoning` and the session label. 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).

Auto mode is session-local and resets when the TUI restarts. Fast mode is process-local and is **not** persisted to `config.json`.
