docs.theus.pe/docs/en/keybindings theus.peDocs home

Keybindings

Every keyboard shortcut in the Theus TUI, grouped by the context where it is active, plus how to customize them in ~/.theus/keybindings.json.

How bindings work

Theus resolves shortcuts by context: the same key can mean different things depending on what is focused (the chat prompt, an autocomplete popup, a confirmation dialog, and so on). Default bindings ship with Theus and are loaded first; your personal overrides from ~/.theus/keybindings.json are applied on top (last wins).

Modifier notation: ctrl, alt, shift, meta and cmd. A binding written with spaces, like ctrl+x ctrl+e, is a chord: press the steps in sequence. Some shortcuts (cmd+…, ctrl+shift+-) only reach the app on terminals that speak the kitty keyboard protocol; portable fallbacks are provided where possible.

Global

Active everywhere in the app.

KeyAction
ctrl+cInterrupt (double-press to exit)
ctrl+dExit
ctrl+lRedraw the screen
ctrl+tToggle the to-do list
ctrl+oToggle the transcript view
ctrl+shift+oToggle teammate preview
ctrl+rSearch command history

Chat (prompt input)

Active while you are composing a message.

KeyAction
enterSubmit the message
escapeCancel / stop the current turn
shift+tabCycle mode (on Windows without VT mode: meta+m)
meta+pOpen the model picker
meta+oToggle fast mode
meta+tToggle thinking
up / downPrevious / next entry from history
ctrl+_ or ctrl+shift+-Undo edit
ctrl+g or ctrl+x ctrl+eOpen the external editor
ctrl+sStash the current draft
ctrl+vPaste an image (Windows: alt+v)
ctrl+x ctrl+kKill running agents
The Chat context leaves readline editing keys (ctrl+a, ctrl+e, ctrl+f, and so on) free for cursor movement, which is why extra actions use the ctrl+x chord prefix.

Autocomplete popup

KeyAction
tabAccept the suggestion
escapeDismiss
up / downPrevious / next suggestion

Lists and selection

The Select context drives menus such as /model, /resume and permission prompts.

KeyAction
up / k / ctrl+pMove up
down / j / ctrl+nMove down
enterAccept the selection
escapeCancel

Confirmation dialogs

KeyAction
y / enterConfirm
n / escapeReject
up / downNavigate list options
tabNext field
spaceToggle the option
shift+tabCycle mode (permission and teams dialogs)
ctrl+eToggle the permission explanation
ctrl+dToggle permission debug info

Settings / config panel

KeyAction
up / k / ctrl+pMove up
down / j / ctrl+nMove down
spaceToggle / activate the selected setting
enterSave and close
escapeDismiss
/Enter search mode
rRetry loading usage data (only on error)

Transcript view

KeyAction
ctrl+eToggle show-all
escape / q / ctrl+cExit

History search

KeyAction
ctrl+rNext match
enterExecute the selected entry
escape / tabAccept
ctrl+cCancel

Scrolling and copy

KeyAction
pageup / pagedownScroll one page
ctrl+home / ctrl+endJump to top / bottom
ctrl+shift+cCopy the selection
cmd+cCopy the selection (kitty-protocol terminals only)

Tabs and footer

KeyAction
tab / rightNext tab
shift+tab / leftPrevious tab
up / ctrl+pFooter indicator up
down / ctrl+nFooter indicator down
enterOpen the selected footer item
escapeClear the footer selection

Other dialogs

ContextKeyAction
Taskctrl+bSend a running foreground task to the background (in tmux, press twice)
Theme pickerctrl+tToggle syntax highlighting
Attachmentsleft / rightPrevious / next attachment
Attachmentsbackspace / deleteRemove the attachment
Diff dialogup / downPrevious / next file
Diff dialogleft / rightPrevious / next source
Diff dialogenterView details
Plugin dialogspaceToggle the plugin
Plugin dialogiInstall the plugin
Rewind / message selectorup / down / j / kNavigate messages
Rewind / message selectorenterSelect the message

Reserved shortcuts

Some keys cannot be rebound because Theus handles them directly or the terminal / OS intercepts them.

KeyWhy
ctrl+cInterrupt / exit — hardcoded, uses double-press timing
ctrl+dExit — hardcoded
ctrl+mIdentical to enter in terminals (both send carriage return)
ctrl+zUnix process suspend (SIGTSTP)
ctrl+\Terminal quit signal (SIGQUIT)

On macOS, the system also intercepts cmd+c, cmd+v, cmd+x, cmd+q, cmd+w, cmd+tab and cmd+space, so binding to those is discouraged.

Customizing your bindings

Run the slash command to open (or create) your personal keybindings file:

/keybindings

This writes a fully documented template to ~/.theus/keybindings.json with every default binding, ready to edit. The file has a bindings array of context blocks:

{
  "$schema": "https://www.schemastore.org/theus-code-keybindings.json",
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "ctrl+g": "chat:externalEditor"
      }
    }
  ]
}

Set an action to null to unbind a key. Your overrides are merged over the defaults, so you only need to list the keys you want to change. The file is watched and reloaded automatically while Theus is running.

If your keybindings.json is malformed (for example, it lacks the bindings array), Theus falls back to the defaults and reports the parse error rather than starting with no shortcuts.
Theus — local-first multimodel coding agent · Made in Peru