OpenCode CLI reference - Keyboard shortcuts
OpenCode keybinds and keyboard shortcuts
OpenCode documents 118 keyboard shortcuts, including leader, app_exit and command_list. These work inside the OpenCode terminal UI. Each row gives the docs' description, accepted values and an example where one is documented.
Last verified 4 official pagesFull OpenCode reference
| Shortcut | Description | Example |
|---|---|---|
leader | Leader key used by many keybinds (press it, then the shortcut). Default: ctrl+x Docs: leader | -no example |
app_exit | Exit the application. Default: ctrl+c,ctrl+d,<leader>q Docs: app_exit | -no example |
command_list | List available commands. Default: ctrl+p Docs: command_list | -no example |
editor_open | Open external editor. Default: <leader>e Docs: editor_open | -no example |
theme_list | List available themes. Default: <leader>t Docs: theme_list | -no example |
sidebar_toggle | Toggle sidebar. Default: <leader>b Docs: sidebar_toggle | -no example |
status_view | View status. Default: <leader>s Docs: status_view | -no example |
session_export | Export session to editor. Default: <leader>x Docs: session_export | -no example |
session_new | Create a new session. Default: <leader>n Docs: session_new | -no example |
session_list | List all sessions. Default: <leader>l Docs: session_list | -no example |
session_timeline | Show session timeline. Default: <leader>g Docs: session_timeline | -no example |
session_rename | Rename session. Default: ctrl+r Docs: session_rename | -no example |
session_delete | Delete session. Default: ctrl+d Docs: session_delete | -no example |
session_interrupt | Interrupt current session. Default: escape Docs: session_interrupt | -no example |
session_compact | Compact the session. Default: <leader>c Docs: session_compact | -no example |
session_child_first | Enter the first child session from the parent when subagents create child sessions. Default: <leader>down Docs: session_child_first | -no example |
session_child_cycle | Cycle to the next child session. Default: right Docs: session_child_cycle | -no example |
session_child_cycle_reverse | Cycle to the previous child session. Default: left Docs: session_child_cycle_reverse | -no example |
session_parent | Return to the parent session. Default: up Docs: session_parent | -no example |
stash_delete | Delete stash entry. Default: ctrl+d Docs: stash_delete | -no example |
model_provider_list | Open provider list from model dialog. Default: ctrl+a Docs: model_provider_list | -no example |
model_favorite_toggle | Toggle model favorite status. Default: ctrl+f Docs: model_favorite_toggle | -no example |
model_list | List available models. Default: <leader>m Docs: model_list | -no example |
model_cycle_recent | Next recently used model. Default: f2 Docs: model_cycle_recent | -no example |
model_cycle_recent_reverse | Previous recently used model. Default: shift+f2 Docs: model_cycle_recent_reverse | -no example |
agent_list | List agents. Default: <leader>a Docs: agent_list | -no example |
agent_cycle | Next agent. Default: tab Docs: agent_cycle | -no example |
agent_cycle_reverse | Previous agent. Default: shift+tab Docs: agent_cycle_reverse | -no example |
variant_cycle | Cycle model variants. Default: ctrl+t Docs: variant_cycle | -no example |
messages_page_up | Scroll messages up by one page. Default: pageup,ctrl+alt+b Docs: messages_page_up | -no example |
messages_page_down | Scroll messages down by one page. Default: pagedown,ctrl+alt+f Docs: messages_page_down | -no example |
messages_line_up | Scroll messages up by one line. Default: ctrl+alt+y Docs: messages_line_up | -no example |
messages_line_down | Scroll messages down by one line. Default: ctrl+alt+e Docs: messages_line_down | -no example |
messages_half_page_up | Scroll messages up by half page. Default: ctrl+alt+u Docs: messages_half_page_up | -no example |
messages_half_page_down | Scroll messages down by half page. Default: ctrl+alt+d Docs: messages_half_page_down | -no example |
messages_first | Navigate to first message. Default: ctrl+g,home Docs: messages_first | -no example |
messages_last | Navigate to last message. Default: ctrl+alt+g,end Docs: messages_last | -no example |
messages_copy | Copy message. Default: <leader>y Docs: messages_copy | -no example |
messages_undo | Undo message. Default: <leader>u Docs: messages_undo | -no example |
messages_redo | Redo message. Default: <leader>r Docs: messages_redo | -no example |
messages_toggle_conceal | Keybind for: messages toggle conceal. Default: <leader>h Docs: messages_toggle_conceal | -no example |
input_clear | Clear input field. Default: ctrl+c Docs: input_clear | -no example |
input_paste | Paste from clipboard. Default: ctrl+v (preventDefault: false) Docs: input_paste | -no example |
input_submit | Submit input. Default: return Docs: input_submit | -no example |
input_newline | Insert newline in input. Default: shift+return,ctrl+return,alt+return,ctrl+j Docs: input_newline | -no example |
input_move_left | Move cursor left in input. Default: left,ctrl+b Docs: input_move_left | -no example |
input_move_right | Move cursor right in input. Default: right,ctrl+f Docs: input_move_right | -no example |
input_move_up | Move cursor up in input. Default: up Docs: input_move_up | -no example |
input_move_down | Move cursor down in input. Default: down Docs: input_move_down | -no example |
input_select_left | Select left in input. Default: shift+left Docs: input_select_left | -no example |
input_select_right | Select right in input. Default: shift+right Docs: input_select_right | -no example |
input_select_up | Select up in input. Default: shift+up Docs: input_select_up | -no example |
input_select_down | Select down in input. Default: shift+down Docs: input_select_down | -no example |
input_line_home | Move to start of line in input. Default: ctrl+a Docs: input_line_home | -no example |
input_line_end | Move to end of line in input. Default: ctrl+e Docs: input_line_end | -no example |
input_select_line_home | Select to start of line in input. Default: ctrl+shift+a Docs: input_select_line_home | -no example |
input_select_line_end | Select to end of line in input. Default: ctrl+shift+e Docs: input_select_line_end | -no example |
input_visual_line_home | Move to start of visual line in input. Default: alt+a Docs: input_visual_line_home | -no example |
input_visual_line_end | Move to end of visual line in input. Default: alt+e Docs: input_visual_line_end | -no example |
input_select_visual_line_home | Select to start of visual line in input. Default: alt+shift+a Docs: input_select_visual_line_home | -no example |
input_select_visual_line_end | Select to end of visual line in input. Default: alt+shift+e Docs: input_select_visual_line_end | -no example |
input_buffer_home | Move to start of buffer in input. Default: home Docs: input_buffer_home | -no example |
input_buffer_end | Move to end of buffer in input. Default: end Docs: input_buffer_end | -no example |
input_select_buffer_home | Select to start of buffer in input. Default: shift+home Docs: input_select_buffer_home | -no example |
input_select_buffer_end | Select to end of buffer in input. Default: shift+end Docs: input_select_buffer_end | -no example |
input_delete_line | Delete line in input. Default: ctrl+shift+d Docs: input_delete_line | -no example |
input_delete_to_line_end | Delete to end of line in input. Default: ctrl+k Docs: input_delete_to_line_end | -no example |
input_delete_to_line_start | Delete to start of line in input. Default: ctrl+u Docs: input_delete_to_line_start | -no example |
input_backspace | Backspace in input. Default: backspace,shift+backspace Docs: input_backspace | -no example |
input_delete | Delete character in input. Default: ctrl+d,delete,shift+delete Docs: input_delete | -no example |
input_undo | Undo in input. Default: ctrl+-,super+z; on Windows defaults to ctrl+z,ctrl+-,super+z Docs: input_undo | -no example |
input_redo | Redo in input. Default: ctrl+.,super+shift+z Docs: input_redo | -no example |
input_word_forward | Move word forward in input. Default: alt+f,alt+right,ctrl+right Docs: input_word_forward | -no example |
input_word_backward | Move word backward in input. Default: alt+b,alt+left,ctrl+left Docs: input_word_backward | -no example |
input_select_word_forward | Select word forward in input. Default: alt+shift+f,alt+shift+right Docs: input_select_word_forward | -no example |
input_select_word_backward | Select word backward in input. Default: alt+shift+b,alt+shift+left Docs: input_select_word_backward | -no example |
input_delete_word_forward | Delete word forward in input. Default: alt+d,alt+delete,ctrl+delete Docs: input_delete_word_forward | -no example |
input_delete_word_backward | Delete word backward in input. Default: ctrl+w,ctrl+backspace,alt+backspace Docs: input_delete_word_backward | -no example |
input_select_all | Select all in input. Default: super+a Docs: input_select_all | -no example |
history_previous | Previous history item. Default: up Docs: history_previous | -no example |
history_next | Next history item. Default: down Docs: history_next | -no example |
dialog.select.prev | Move to previous dialog item. Default: up,ctrl+p Docs: dialog.select.prev | -no example |
dialog.select.next | Move to next dialog item. Default: down,ctrl+n Docs: dialog.select.next | -no example |
dialog.select.page_up | Move up one page in dialog. Default: pageup Docs: dialog.select.page_up | -no example |
dialog.select.page_down | Move down one page in dialog. Default: pagedown Docs: dialog.select.page_down | -no example |
dialog.select.home | Move to first dialog item. Default: home Docs: dialog.select.home | -no example |
dialog.select.end | Move to last dialog item. Default: end Docs: dialog.select.end | -no example |
dialog.select.submit | Submit selected dialog item. Default: return Docs: dialog.select.submit | -no example |
dialog.prompt.submit | Submit dialog prompt. Default: return Docs: dialog.prompt.submit | -no example |
dialog.mcp.toggle | Toggle MCP server. Default: space Docs: dialog.mcp.toggle | -no example |
prompt.autocomplete.prev | Move to previous autocomplete item. Default: up,ctrl+p Docs: prompt.autocomplete.prev | -no example |
prompt.autocomplete.next | Move to next autocomplete item. Default: down,ctrl+n Docs: prompt.autocomplete.next | -no example |
prompt.autocomplete.hide | Hide autocomplete. Default: escape Docs: prompt.autocomplete.hide | -no example |
prompt.autocomplete.select | Select autocomplete item. Default: return Docs: prompt.autocomplete.select | -no example |
prompt.autocomplete.complete | Complete autocomplete item. Default: tab Docs: prompt.autocomplete.complete | -no example |
permission.prompt.fullscreen | Toggle permission prompt fullscreen. Default: ctrl+f Docs: permission.prompt.fullscreen | -no example |
plugins.toggle | Toggle plugin. Default: space Docs: plugins.toggle | -no example |
dialog.plugins.install | Keybind for: dialog plugins install. Default: shift+i Docs: dialog.plugins.install | -no example |
terminal_suspend | Suspend terminal. Default: ctrl+z; forced to none on Windows Docs: terminal_suspend | -no example |
which_key_toggle | Toggle which-key panel. Default: ctrl+alt+k Docs: which_key_toggle | -no example |
which_key_layout_toggle | Switch which-key layout. Default: ctrl+alt+shift+k Docs: which_key_layout_toggle | -no example |
which_key_pending_toggle | Toggle which-key pending preview. Default: ctrl+alt+shift+p Docs: which_key_pending_toggle | -no example |
which_key_group_previous | Previous which-key group. Default: ctrl+alt+left,ctrl+alt+[ Docs: which_key_group_previous | -no example |
which_key_group_next | Next which-key group. Default: ctrl+alt+right,ctrl+alt+] Docs: which_key_group_next | -no example |
which_key_scroll_up | Scroll which-key up. Default: ctrl+alt+up,ctrl+alt+p Docs: which_key_scroll_up | -no example |
which_key_scroll_down | Scroll which-key down. Default: ctrl+alt+down,ctrl+alt+n Docs: which_key_scroll_down | -no example |
which_key_page_up | Page which-key up. Default: ctrl+alt+pageup Docs: which_key_page_up | -no example |
which_key_page_down | Page which-key down. Default: ctrl+alt+pagedown Docs: which_key_page_down | -no example |
which_key_home | Jump to first which-key binding. Default: ctrl+alt+home Docs: which_key_home | -no example |
which_key_end | Jump to last which-key binding. Default: ctrl+alt+end Docs: which_key_end | -no example |
tab | Cycles through primary agents during a session (agent_cycle). Default for agent_cycle Docs: tab | -no example |
ctrl+t | Cycles through model variants (actual reasoning effort), unlike /thinking which only toggles display. Default for variant_cycle Docs: ctrl+t | -no example |
@ | References files in a message via fuzzy file search; configured references also appear (@alias, @alias/). Docs: @ | How is auth handled in @packages/functions/src/api/index.ts? |
! | Starting a message with ! runs a shell command; output is added to the conversation as a tool result. Docs: ! | !ls -la |
ctrl+p | Opens the command palette, used for TUI customizations like username display and auto-approve permissions. Default for command_list Docs: ctrl+p | -no example |
Cmd+Esc / Ctrl+Esc | IDE extension quick launch: opens OpenCode in a split terminal view or focuses an existing session (Mac / Windows-Linux). Docs: Cmd+Esc / Ctrl+Esc | -no example |
Cmd+Shift+Esc / Ctrl+Shift+Esc | IDE extension: starts a new OpenCode terminal session even if one is open. Docs: Cmd+Shift+Esc / Ctrl+Shift+Esc | -no example |
Cmd+Option+K / Alt+Ctrl+K | IDE extension: inserts file references such as @File#L37-42. Docs: Cmd+Option+K / Alt+Ctrl+K | -no example |
The rest of the OpenCode reference
FAQ
How many keyboard shortcuts does OpenCode have?
The official OpenCode docs list 118 keyboard shortcuts, including leader, app_exit and command_list. All of them are in the table above, in the docs' order.
What does leader do in OpenCode?
Leader key used by many keybinds (press it, then the shortcut). Values: Default: ctrl+x.
Where are OpenCode keyboard shortcuts documented?
On 4 official docs pages at opencode.ai, last read on October 17, 2026. Every row in the table links the exact section it came from.
More on OpenCode
- OpenCode in the tools directoryWhat it is, who makes it and how it fits next to other coding agents.
- OpenCode errors and fixes17 error messages, quoted verbatim, with the documented fix for each.
Use other models in OpenCode
Setup guides from the model-in-tool directory, each with the env vars and base URL from official docs.
Sources
Last verified . Names and examples are copied verbatim from the 4 official pages below, and every row above links the exact section it came from.
- opencode.ai/docs/keybinds/110 items
- opencode.ai/docs/agents/1 item
- opencode.ai/docs/tui/4 items
- opencode.ai/docs/ide/3 items
Newsletter
Know when your tools change
One email per week. New coding agent releases, the flags and commands they add, and what they mean for how you work.