Session Modes
Session modes are the quick-switch surface for changing BMO’s prompt and runtime posture without editing config. Use them for fast context changes in the TUI. For stateful multi-phase workflows, use Choreography.
Built-in modes
Section titled “Built-in modes”/mode code # full implementation mode/mode chat # read-only: no write/edit/bash/mode coordinator # delegation-first lead mode/mode review # read-only: view, grep, glob + LSP/mode debug # subset with bash + diagnostics/mode plan # planning: view, grep, bash + lighter model/mode sre # incident response, infra, CI/CD, and ops workSwitch modes at any time with /mode [name] or shift+tab. The current mode is
shown in the sidebar.
Treat a blocked tool as a real boundary, not a hint to route around. If the user clearly needs a denied capability, switch to the smallest suitable mode and retry the blocked action directly.
The built-in modal choreography exposes the seven modes above and starts in
coordinator by default. Narrower or custom choreographies expose only states
reachable through their command:mode transitions.
What each mode is for
Section titled “What each mode is for”| Mode | Best for |
|---|---|
code | General coding, edits, commands, and day-to-day development |
chat | Read-only Q&A and explaining a codebase without changing files |
coordinator | Delegation-first synthesis and bounded specialist orchestration without direct implementation |
review | Auditing diffs, tracing logic, and doing careful analysis |
debug | Reproducing failures, running commands, and using diagnostics tools |
plan | Producing plans before execution, especially with staged workflow |
sre | Incident response, Terraform/Kubernetes/Helm changes, CI/CD, and infrastructure triage |
/mode with no argument is a read-only status query over the shared
session-mode status family. It reports current mode, reachable modes, deferred
mode-change posture, and the latest bounded autoselect/manual-override fact the
runtime can observe. Providing a mode changes the session posture for
subsequent turns.
Deprecated compatibility input
Section titled “Deprecated compatibility input”[options.session_modes.plan]model = "claude-haiku-4-20250514"
[options.session_modes.review]model = "claude-sonnet-4-20250514"If you still use options.session_modes, BMO treats it as deprecated
compatibility input and translates the supported fields into choreography
during config normalization.
Supported translation:
| Field | Compatibility behavior |
|---|---|
model | Translated into the matching choreography state’s model |
tools | Translated into the matching choreography state’s tools.allow |
system_prompt | Parsed for backward compatibility, but ignored at runtime |
Use Choreography directly for new configs. It is the only active runtime owner of mode behavior, model overrides, and tool-gate intent.
Choreography: a more powerful alternative
Section titled “Choreography: a more powerful alternative”Session modes remain useful for quick interactive switching, but they are simple and stateless. For multi-phase workflows with automatic transitions, tool gates, prompt shaping, and hooks, use Choreography instead.
Related
Section titled “Related”- Session mode autoselect (eval) —
shadow telemetry and rollups for prompt-aware mode proposals (optional;
separate from manually picking
/mode).