Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Settings

Open settings with Cmd+,. Settings are organized into tabs.

A search box sits at the top of the tab list. Typing filters every setting across every tab at once, so you do not have to know which tab owns the one you want. Each result shows the setting name and the Tab › Section trail it lives under; selecting one opens that tab and scrolls to the field.

Two limits are deliberate:

  • Repository tabs are not searched. A repository tab belongs to one specific repository, and a global box has no way to know which one you mean.
  • Settings the current build does not render are not listed. Dictation, for example, is desktop-only, so searching for it in a browser session reports no match rather than opening a tab with nothing in it.

General Tab

SettingDescription
LanguageUI language. The list offers the locales that ship with a message catalog, each named in its own language, and the pick applies immediately — no reload. A locale without a catalog is never offered, because it would render English while claiming to be translated. English is the only catalog shipped today, so the list currently holds one entry.
Default IDEIDE for “Open in…” actions. Only installed apps are offered, grouped by category: Code Editors (VS Code, Cursor, Zed, Windsurf, Neovim, Xcode, $EDITOR), JetBrains (IntelliJ IDEA, PyCharm, WebStorm, GoLand, CLion, PhpStorm, RubyMine, Rider, DataGrip, RustRover, Android Studio, Fleet), Terminals (Ghostty, WezTerm, Alacritty, Kitty, Warp, iTerm2), Git Tools (Sourcetree, GitHub Desktop, Fork, GitKraken, Sublime Merge, Tower), System (Terminal, Finder)
Custom LaunchersDefine your own tools for the “Open in” menu. Each launcher has a name, an executable (bare name resolved on PATH, or absolute path), and arguments (one per line). Arguments may use placeholders, expanded at launch: {path}/{file} (focused file, else repo root), {fileDir} (directory of the focused file), {repo} (repo/worktree root), {cwd} (focused terminal’s working directory), {home} (your home directory), {line}/{column} (1-based editor cursor position). Args are passed verbatim (no shell parsing), so paths with spaces are safe.
ShellCustom shell path (e.g., /bin/zsh, /usr/local/bin/fish). Leave empty for system default.
Confirm before quittingShow dialog when closing app with active terminals
Confirm before closing tabAsk before closing terminal tab
Prevent sleep when busyKeep machine awake while agents are working
Auto-check for updatesCheck for new versions on startup
Auto-show PR popoverAutomatically display PR details when switching branches. Only shows for OPEN pull requests — CLOSED PRs are hidden, and MERGED PRs fade after 5 minutes of user activity.
Copy on SelectAuto-copy terminal selection to clipboard. When text is selected in the terminal, it is immediately copied. A “Copied to clipboard” confirmation appears in the status bar. Enabled by default. Also configurable in Appearance tab.
Allow OSC 52 clipboard writesLet terminal programs set the system clipboard via the OSC 52 escape sequence (used by tmux, vim, ssh yank-over-SSH, etc.). Because OSC 52 is honored from anywhere in the byte stream, a displayed file or log can also overwrite the clipboard — so a non-blocking “Clipboard updated” notice appears on every write. Disable to ignore OSC 52 entirely. Enabled by default.
Show block timestampsWhile Ctrl+Cmd is held, each command block is labelled at the right edge with how long ago it started. Enabled by default.
Block foldingLet the Toggle Block Fold shortcut (Cmd/Ctrl+Shift+.) and its command-palette entry collapse a command block’s output. Blocks already folded stay collapsed when this is off. Enabled by default.
Show scrollbar marksMark each command’s position on the terminal scrollbar, so a long scrollback shows where output began. Covers the history markers only — the blue/red block ticks and the green user-prompt ticks. Orange search-match ticks are not affected: they are the result of a search you just ran, not a display preference. Enabled by default.
Reflow scrollback on resizeRe-wrap scrollback history when the terminal changes width, so output written at the old width stays readable after a side panel opens or closes. Turn it off to leave history lines as they were written and truncate them to the new width instead. The visible screen is never reflowed either way — cursor-addressed TUIs redraw themselves. Enabled by default; a change applies to sessions already open.
Repository defaultsBase branch, file handling, setup/run scripts applied to new repos
Experimental FeaturesMaster toggle for experimental features. When enabled, shows sub-toggles: AI Chat (AI Chat panel, shortcuts, command palette entry), Scroll History (scrollback overlay with search when scrolling up in agent mode), AI Triage (diff classification), AI Watchers (terminal event watchers), Copy-on-write workspaces (new workspaces become full repository clones instead of linked worktrees; workspaces you already created stay usable when it is off).

Appearance Tab

SettingTypeDefaultDescription
Terminal theme——Color theme with preview swatches
Terminal font—JetBrains Mono13 bundled monospace fonts: Fira Code, Hack, Cascadia Code, Source Code Pro, IBM Plex Mono, Inconsolata, Ubuntu Mono, Anonymous Pro, Roboto Mono, Space Mono, Monaspace Neon, Geist Mono
Default font size——8–32px slider. Applies to new terminals; existing terminals keep their zoom level.
Split tab mode——Separate or unified tab appearance
Cycle All Tab Types—OffWhen on, next/prev-tab shortcuts also cycle file/diff/markdown/editor tabs (ordered like the tab bar). Off cycles terminals only.
Nested Terminal Tabs—OffWhen on, a branch with more than one terminal shows a collapsible list of its terminals under its sidebar row, each with a status dot. Off by default.
Max tab name length——10–60 slider
Repository groups——Create, rename, delete, and color-code groups
Reset panel sizes——Restore sidebar and panel widths to defaults
Copy on SelectbooleantrueAuto-copy terminal selection to clipboard
Allow OSC 52 clipboard writesbooleantrueHonor OSC 52 clipboard writes from terminal output (shows a notice per write)
Bell Stylenone/visual/sound/bothvisualTerminal bell behavior

Agents Tab

Each supported agent has an expandable row showing detection status, version, and MCP badge.

SettingDescription
Agent DetectionAuto-detects running agents from terminal output patterns. Shows “Available” or “Not found” for each agent.
Run ConfigurationsCustom launch configs (binary path, args, model, prompt) per agent. Add, set default, edit, or delete configurations (Edit / Delete live under the ··· menu on each row). A config named “review” enables the Review button in the PR Detail Popover — its args are interpolated with {pr_number}, {branch}, {base_branch}, {repo}, {pr_url}. The agent’s default run config also drives resume: launching / resuming the agent swaps the agent’s default binary (e.g. claude) for command and appends args after the resume flag.
MCP IntegrationInstall/remove TUICommander as MCP server for supported agents. Shows install status with a dot indicator.
Native status signalsClaude and Codex only. Enabled by default; injects process-scoped status configuration at launch without changing global agent files. The Signals: at launch badge identifies this mode.
Install hooks globallyGemini, Grok, and OpenCode only. Explicitly installs/removes sentinel-owned lifecycle hooks in the agent’s global configuration. Off by default.
Collect project progressGlobal switch for the Progress journal. On by default. Off removes the progress tool from every agent’s tool list, stops the reporting obligation being sent, and records nothing — including the intent: markers TUICommander writes itself.
Collect progress (per agent)Per-agent override, shown with the agent’s MCP settings and disabled while the global switch is off. The effective value is global AND (per-agent, default on), so an agent with no opinion follows the global switch. An agent that reports while its own override is off is answered progress_tracking_disabled rather than silently ignored.
Claude Usage Dashboard(Claude Code only) Toggle under Features when the Claude row is expanded. Enables rate limit monitoring, session analytics, token usage charts, activity heatmap, and per-project breakdowns. Usage data appears in the status bar agent badge and in a dedicated dashboard tab.
Agent Model OverridesPer-task-phase model routing for the AI Agent loop. Four phases: plan, search, read, write. Each phase can use a different model (e.g. a cheaper model for search, a stronger model for write). Configure in Settings > AI Chat.
Unsafe ModeWhen enabled, the agent skips all approval prompts and operates without sandbox restrictions (TrustLevel::Unrestricted). Toggle via the lock icon in the AI Chat panel header. A confirmation dialog warns before activating. The header turns red to indicate unrestricted operation.
Cron SchedulerTime-triggered agent tasks. Define cron expressions with goals in Settings > AI Chat > Scheduler. Jobs are persisted to ai-cron.json and tick every 30 s.

See AI Agents for details on agent detection, rate limits, and the usage dashboard.

GitHub Tab

GitHub authentication and token management:

SettingDescription
OAuth LoginDevice Flow login — click “Sign in with GitHub”, enter code on github.com. Token stored in OS keyring.
Auth StatusShows current login, avatar, token source (OAuth/env/CLI), and available scopes
DisconnectClear all GitHub tokens (keyring + env cache). Falls back to next available source.
DiagnosticsToken source details, scope verification, API connectivity check
Issue FilterWhich issues to show in the GitHub panel: Assigned (default), Created, Mentioned, All, or Disabled
Auto-show PR popoverAutomatically show PR detail popover when opening a branch with an active PR
Auto-delete on PR closeOff (default), Ask, or Auto — controls branch cleanup when a PR is merged/closed

Token priority: GH_TOKEN env → GITHUB_TOKEN env → OAuth keyring → gh CLI config → gh auth token subprocess.

Services & MCP Tab

HTTP API Server

Enable the HTTP API server for external tool integration:

  • Serves the REST API and MCP protocol for AI agents and automation tools
  • Local MCP connections use a Unix domain socket at <config_dir>/mcp.sock — no port configuration needed
  • AI agents connect via the tuic-bridge sidecar (auto-installed on first launch for every supported agent that is installed on the machine — see MCP bridge auto-install)
  • Shows server status (running/stopped) and active session count

TUIC Tools

Native tools exposed to AI agents via MCP. Each tool can be individually enabled or disabled to restrict what agents can access.

Manual MCP configuration (expandable) — shows the tuic-bridge binary path and a ready-to-paste JSON snippet for manually configuring MCP clients that aren’t auto-installed. Click “Copy” to copy the snippet to clipboard.

Collapse tools (checkbox) — when enabled, replaces the full tool list sent to AI agents with 3 lazy-discovery meta-tools (search_tools, get_tool_schema, call_tool). Cuts the baseline MCP context cost the agent carries every turn. Measured 2026-09-13 against the running desktop instance with 190 tools connected: the full list is 154,117 bytes / 35,104 tokens, the collapsed list 2,810 bytes / 615 tokens — and the collapsed figure does not move with the number of upstream tools, because they are no longer in the list. The agent fetches schemas on demand via BM25-ranked search. (Tokenizer: tiktoken 0.14.0 o200k_base, a GPT tokenizer used as a proxy; Anthropic publishes no offline tokenizer. Method and full table: mcp-http.md.) Native semantics do not change: a managed command is still one call_tool request for session action=submit, and its bounded receipt comes back in that response. Default: off. Grok sessions receive this compact surface automatically for compatibility with Grok’s tool-name parser, without changing the checkbox or other clients. Toggling emits notifications/tools/list_changed; compatible clients refresh automatically, while clients that ignore the notification may require a reconnect.

Tools:

  • session — PTY terminal session management
  • git — Repository state queries
  • agent — AI agent detection and spawning
  • config — App configuration read/write
  • workspace — Repo and worktree queries
  • notify — User notifications (toast, confirm)
  • plugin_dev_guide — Plugin authoring reference

Upstream MCP Servers

Manage in Settings in the MCP popup (Cmd+Shift+I) opens this tab scrolled to this block — the block sits below the fold, so a plain tab switch would look like nothing happened.

OAuth upstreams show Authorize when consent is required. TUIC prepares the OAuth request, then displays a blocking in-app confirmation naming the authorization-server origin before opening the system browser. Cancelling that confirmation discards the pending request.

Proxy external MCP servers through TUICommander. Their tools appear prefixed as {name}__{tool}:

  • Add upstream servers via HTTP (Streamable MCP) or stdio (process) transport
  • API keys for HTTP upstreams are stored in the OS keychain
  • Live status (connecting, ready, circuit open, failed) with tool count and call metrics
  • Reconnect and remove controls per upstream
  • Per-repo scoping: each repo can define an allowlist of active upstream servers via Cmd+Shift+I popup (or repo settings). Empty/null allowlist = all servers active

Remote Access

Enable HTTP/WebSocket access from other devices on your network. See Remote Access for full setup guide.

Voice Dictation

See Voice Dictation for full details.

Keyboard Shortcuts (Help panel)

The keybinding UI lives in the Help panel (Help > Keyboard Shortcuts), not the Settings panel. Browse and rebind all app actions there:

  • Every registered action is listed with its current keybinding
  • Click any action row and press a new key combination to rebind it
  • Custom bindings are stored in keybindings.json in the platform config directory
  • Auto-populated from the action registry — new actions appear automatically
  • The Help panel notes that most shortcuts are also listed in the native system menu bar (desktop app only — browser/PWA clients have no native menu)

See Keyboard Shortcuts for the full reference and customization guide.

Plugins Tab

Install, manage, and browse plugins. See Plugins for the full guide.

  • Installed — List all plugins with enable/disable toggle, logs viewer, uninstall
  • Browse — Discover and install from the community registry

Smart Prompts Tab

Manage the AI-powered actions surfaced in the toolbar, context menus, and command palette. Reachable from the nav or directly via “Manage Smart Prompts…” in the Smart Prompts drawer.

  • Headless Agent — default agent for headless prompts; individual prompts can override it
  • Prompt list — grouped by category, with enable/disable toggle and placement/mode badges
  • Editor (click a row) — name, description, content with variable insertion, placement checkboxes, Execution Mode, inject target, Auto-execute, output target, system prompt, keyboard shortcut
  • Built-in prompts show “Reset to Default” once overridden; custom prompts can be deleted

See Smart Prompts for the full guide.

Providers Tab

Declares the LLM endpoints TUICommander calls directly — the AI Chat panel, diff triage, and Smart Prompts in API mode. Agent CLIs (Claude Code, Codex, …) keep their own credentials and are configured in the Agents tab instead.

The registry lives in <config_dir>/providers.json. API keys are never written there — they go to the OS keyring under provider/<provider-id>.

Providers

+ Add opens the form:

FieldDescription
TypeAnthropic, OpenAI, Google Gemini, DeepSeek, Mistral, Fireworks AI, SambaNova, Moonshot, xAI (Grok), Zhipu AI, OpenRouter, Requesty, LiteLLM, Ollama (local), LM Studio (local), or Custom (OpenAI-compatible). AWS Bedrock and Google Vertex are listed as coming soon and are refused on save.
LabelRequired. Free text — how the provider appears in the model dropdowns, e.g. “Anthropic (personal)”.
Base URLOptional, hidden for Anthropic / OpenAI / Gemini. Blank uses the type’s default (http://localhost:11434/v1/ for Ollama, http://localhost:1234/v1/ for LM Studio).
API KeyRequired for every type except the local ones (Ollama, LM Studio, LiteLLM).

Each saved provider is a card showing its type, its key state (✓ key, no key, or no key needed), and a list of its models. Controls per card:

  • Add model — model name as the provider spells it (e.g. claude-sonnet-4-5-20241022) plus a tier (Economic / Standard / Premium). The tier is stored with the model and shown next to it.
  • API key row — save a key, or replace / remove an existing one. The key never returns to the UI once saved.
  • × — remove the model, or the whole provider.

Reachability (Ollama only). An Ollama card probes /api/tags when the tab opens and shows Reachable or Not detected. When it fails, the backend’s own wording is shown underneath — the endpoint answered an HTTP error, it did not answer within the timeout, or the connection was refused (“is Ollama running?”). A reachable Ollama also lists the models it actually holds, which is what you type into Add model. Other provider types have no probe; use Test on a slot instead.

Slot Assignments

A slot names which model a TUIC feature uses. Each is a dropdown of every model in the registry, plus Test — one real request with a 15 s timeout, answering either the model’s reply or the failure verbatim.

SlotUsed by
MainAI Chat and on-demand PR review. Per-phase AI Chat overrides (plan, search, read, write) are set separately in Settings > AI Chat.
TriageDiff triage annotations and automated code analysis.
Headless / Smart PromptsOne-shot calls: commit messages, code review, Smart Prompts in API mode.

The headless slot picks an agent rather than a model: any detected agent that has a headless template, or one of its run configurations. Choosing External API reveals the model dropdown and routes those calls through the provider registry instead of a CLI.

Repository Settings

Per-repository settings accessed via sidebar ⋯ → “Repo Settings”.

Worktree Tab

  • Display Name — Custom name shown in sidebar
  • Base Branch — Branch to create worktrees from (auto-detect, main, master, develop)
  • Copy ignored files — Copy .gitignored files to new worktrees
  • Copy untracked files — Copy untracked files to new worktrees

Scripts Tab

  • Setup Script — Runs once after worktree creation (e.g., npm install)
  • Run Script — On-demand script launchable from toolbar with Cmd+R
  • Archive Script — Runs before a worktree is archived or deleted; non-zero exit blocks the operation

Repo-Local Config (.tuic.json)

A .tuic.json file in the repository root provides team-shareable settings that override per-repo app settings and global defaults. The file is read-only from TUICommander (edit it in your repo directly).

Precedence: .tuic.json > per-repo app settings > global defaults

Supported fields: base_branch, copy_ignored_files, copy_untracked_files, setup_script, run_script, archive_script, worktree_storage, delete_branch_on_remove, auto_archive_merged, orphan_cleanup, pr_merge_strategy, after_merge, auto_delete_on_pr_close.

User-specific settings (promptOnCreate, autoFetchIntervalMinutes) are intentionally excluded from .tuic.json.

Notification Settings

  • Enable Audio Notifications — Master toggle
  • Volume — 0-100% (applied natively by the Rust playback path). Releasing the slider plays a short preview at the new level.
  • Audio Output Device — defaults to the system output. Click Choose output device… to enumerate available outputs and pick a specific one. Enumeration is deferred until you click, because on macOS the audio device scan triggers the microphone-permission prompt — notifications never record audio.
  • Per-event toggles:
    • Agent asks question
    • Error occurred
    • Task completed
    • Warning
    • Info
    • Attention (agent needs you)
  • Test buttons — Test each sound individually. The Test button bypasses the anti-spam rate limit, so rapid A/B volume comparisons always play.
  • Silence orchestration completions — Remote HTTP/MCP workers still appear in Activity and update their tab state, but do not play a completion chime. The remote classification survives frontend reloads, and each busy cycle can notify at most once even when idle and process exit arrive separately.
  • Reset to Defaults — Restore default notification settings
  • Keep toasts in the bell — Each toast is also written to a MESSAGES section in the toolbar bell, so a message that faded while you looked at another window stays readable afterwards. The bell entry keeps the toast level (info / warning / error) and its action, if it had one. Turn this off to leave toasts transient. This setting is outside the audio block: the bell is visual, so it stays reachable on a machine with no audio output.

Attention is the distinct call-back-to-keyboard sound available to agent toasts. Native playback and the browser fallback share a triangular G4→G4→E5 motif with two short knocks and a longer rise; each engine applies its own envelope. It remains subject to the master toggle, configured volume, and its own per-event toggle; native playback also uses the selected output device.