OpenCode CLI & TUI Usage
A comprehensive guide covering keyboard shortcuts, interface modes, configuration, and best practices for the OpenCode interactive CLI/TUI agent.
1. Core UI Navigation & Keybinds
OpenCode uses a Leader Key system to avoid conflicts with terminal or shell shortcuts.
Ctrl+X
Leader Timeout: 2000 ms (press <leader> then the command key within 2 seconds).
Interface & Display Controls
<leader> b (Ctrl+X then b)
sidebar_toggle
Hides/shows the right info pane. Expands chat to full screen for clean code selection.
Open Command Palette
Ctrl+P
command_list
Opens prompt command list for quick actions.
Toggle Tips
<leader> h
tips_toggle
Toggle onscreen contextual tips.
Exit OpenCode
Ctrl+C, Ctrl+D, or <leader> q
app_exit
Quit the application session.
Suspend Terminal
Ctrl+Z
terminal_suspend
Suspend process to background (POSIX shells).
Which-Key Popup
Ctrl+Alt+K
which_key_toggle
Display interactive keybind map.
Session Management
<leader> n
session_new
Start a fresh agent chat session.
List Sessions
<leader> l
session_list
Open interactive session picker.
Session Timeline
<leader> g
session_timeline
View session branching and event history.
Export Session
<leader> x
session_export
Export session history as JSON.
Compact Session
<leader> c
session_compact
Summarize and compact long chat context.
Rename Session
Ctrl+R
session_rename
Change current session title.
Delete Session
Ctrl+D (in list)
session_delete
Permanently remove a session.
Interrupt Generation
Esc
session_interrupt
Stop model generation or tool execution.
Messages & Scroll Navigation
PageUp / PageDown
messages_page_up / _down
Scroll chat history by page.
Half Page Scroll
Ctrl+Alt+U / Ctrl+Alt+D
messages_half_page_up / _down
Scroll half page up/down.
Jump to Top
Ctrl+G or Home
messages_first
Jump to start of chat transcript.
Jump to Bottom
Ctrl+Alt+G or End
messages_last
Jump to latest response.
Copy Last Message
<leader> y
messages_copy
Copy entire last message to clipboard.
Undo / Redo
<leader> u / <leader> r
messages_undo / _redo
Undo or redo chat message edits.
Conceal Code
<leader> h
messages_toggle_conceal
Fold or unfold code blocks in chat.
Models, Agents & Themes
Tab / Shift+Tab
agent_cycle / _reverse
Cycle between primary/subagent modes.
List Agents
<leader> a
agent_list
Open agent selector modal.
List Models
<leader> m
model_list
Open model selection dialog.
Cycle Recent Model
F2 / Shift+F2
model_cycle_recent
Switch to previous model.
Favorite Model
Ctrl+F
model_favorite_toggle
Toggle favorite status for selected model.
Switch Theme
<leader> t
theme_list
Select UI color theme.
Cycle Variants
Ctrl+T
variant_cycle
Toggle model reasoning effort (low/med/high).
Prompt Input Editing (Readline / Emacs)
Enter
Submit prompt
Shift+Enter / Ctrl+J
Insert newline
Ctrl+A / Ctrl+E
Move cursor to start / end of line
Ctrl+B / Ctrl+F
Move cursor back / forward one char
Alt+B / Alt+F
Move cursor back / forward one word
Ctrl+K
Kill text from cursor to end of line
Ctrl+U
Kill text from cursor to start of line
Ctrl+W
Delete word backward
Alt+D
Delete word forward
2. Modes & Execution Options
OpenCode offers several execution modes depending on your interface and automation needs.
1. Standard Interactive TUI (opencode)
Starts the full terminal user interface with chat transcript, sidebar info pane, and status indicators.
opencode
2. Minimal Single-Column TUI (--mini)
# Start new minimal session
opencode --mini
# Resume last session in minimal mode
opencode --mini -c
3. Non-Interactive CLI / Scripting (opencode run)
Executes a single prompt or command non-interactively without launching the TUI. Prints raw Markdown or JSON output directly to stdout.
# Single prompt execution
opencode run "Explain closures in Rust"
# Pass file context
opencode run -f src/main.rs "Review this code for safety"
# Output as raw JSON events
opencode run --format json "List open TODO items"
4. Headless Server & Attach (opencode serve / opencode attach)
Runs an OpenCode backend server process (avoiding cold boots for MCP plugins) that remote terminals or web clients can attach to.
# Terminal 1: Start headless backend
opencode serve --port 4096
# Terminal 2: Attach TUI from another terminal/session
opencode attach http://localhost:4096
3. Customizing Shortcuts (~/.config/opencode/tui.json)
Keybinds can be overridden globally by creating or editing ~/.config/opencode/tui.json.
Example tui.json Configuration:
{
"$schema": "https://opencode.ai/tui.json",
"leader_timeout": 2000,
"keybinds": {
"leader": "ctrl+x",
"sidebar_toggle": "f3",
"messages_copy": ["<leader>y", "ctrl+shift+c"],
"session_compact": "none"
}
}
4. Tips for Mouse Copying in Headless / Tmux
Hide Sidebar: PressCtrl+X then b to toggle off the right sidebar. Text will wrap cleanly at terminal edge with no pad spaces.
Use Mini Mode: Run opencode --mini for a pure single-column experience.
Copy Message Directly: Use <leader> y (Ctrl+X then y) to copy the model's full response directly into your system clipboard.