TUI Guide
Single bubbletea textarea (internal/runtime/tui); slash commands open transient popups that close cleanly back to the prompt.
Shortcuts
| Key | Action |
|---|---|
Enter |
Send the current input. While a run is in flight it queues the text as a steer message instead, delivered to the running loop |
Alt+Enter |
Insert a newline |
/ |
Begin slash-command filter (popup picker — Up / Down to navigate, Tab / Enter to autocomplete into the textarea, Esc to dismiss) |
Up / Down |
Walk input history when the cursor is on the first / last line (per-session input_history file) |
Esc |
Dismiss the active popup, or — while running — open the cancel-confirmation popup |
Ctrl+C |
Exit TUI (daemon keeps running) |
Single-key toggles fire only when the input is empty and no run is active:
| Key | Action |
|---|---|
Shift+Tab |
Toggle auto mode ([safe] ↔ [auto]) |
Shift+F |
Toggle fast mode — the header shows [fast] while enabled |
Shift+T |
Toggle command mode (input runs as a shell command in the current workDir) |
Shift+U |
Live provider usage / balance |
Shift+M |
List configured models |
Shift+W / Shift+S |
Cycle the dispatcher model backward / forward |
Shift+A / Shift+D |
Cycle the reasoning level down / up |
Popups use Ctrl+S to confirm, Enter for a newline, and Esc to cancel.
The TUI auto-tails the active session's action.log (foreign-process writes prefixed with ▌ in warn-purple). Single-session view only.
Modes
The current mode renders at the bottom-left of the TUI:
[safe](default) — tool calls require user confirmation before execution[auto]— all tool calls are automatically approved (allowAll = true); sandbox and validator still apply[fast]— passesprovider.ModeFastthroughgo-llm-routerso supported provider backends request a faster service tier
Auto mode is session-local and resets when the TUI restarts; it can also be set at launch via agen --allow-all. Fast mode is process-local and is not persisted to config.json.
Slash commands
| Command | Description |
|---|---|
/model |
Add / remove a provider · pick the session, dispatcher, or summary model |
/mcp |
Add / remove / reconnect an MCP server · global or session scope |
/switch |
Switch the current session via a picker |
/new |
Create a session (name conflict-checked) |
/dangerous |
remove-session · allow-skill (mark a skill always-allow) · allow-cmd (append a binary to the command allowlist) |
/memory |
compact · reset · summary — manage session memory |
/bot |
Edit / rename the current session — name and description (persona) |
/discord |
Enable / disable the Discord bot (gateway validated on enable) |
/telegram |
Enable / disable the Telegram bot (getMe validated on enable) |
/voice |
Enable / disable voice-message handling (Gemini TTS) |
/kuradb |
Enable / disable / update / start / stop KuraDB RAG |
/admin-channel |
Set / clear the relay for new-chat verification codes — pick an authorized chat or tg@<id> / dc@<id> |
/cron |
Add / remove / edit a recurring scheduled task |
/task |
Add / remove / edit a one-shot scheduled task |
/sched-<name> |
Manually dispatch an existing scheduler skill body. Filtered by session — only skills bound to the current session's task / cron entries appear |
/update |
Fetch the latest release, rebuild, and quit the TUI (re-attach with agen) |
/resume |
Reload the visible transcript — last 100 entries from action.log |
/log |
Open the raw action.log in $PAGER (fallback less) |
/usage |
Per-model token usage — 24 h / 7 d / 28 d |
/pending |
List / resume interrupted tasks — error recovery and ask_user resume |
/sudo |
Enable / disable elevated mode — bypasses the command allowlist, auto-expires after 1 h |
/key |
Update / rotate a keychain value, picked from the recorded key list |
/clear |
Clear the visible transcript — memory untouched |
/exit |
Exit the TUI (daemon keeps running) |
Loaded skills appear in the same picker below the built-in commands, labeled with their source; scheduler skills (/sched-<name>) follow them.