Keyboard Shortcuts
Complete reference of all keyboard shortcuts in Codemux.
All shortcuts use Ctrl on Linux/Windows. Shortcuts are rebindable in Settings → Shortcuts, and the tables below
follow the same groups as that page.
The exceptions are Reload interface (Ctrl+Alt+R), the browser-pane keys, the
Changes and Diff pane keys, and the terminal's Ctrl+click and Shift+Enter, which are fixed.
Press Ctrl+Shift+? for a cheat sheet over whatever you're doing — every binding grouped by area, with a filter box and a Customize… link to Settings → Shortcuts. It shows your current bindings, rebinds included, and Escape (or Ctrl+Shift+? again) closes it. Tooltips on buttons that have a shortcut — sidebar and panel toggles, new tab, split and close pane, Run, and the + launcher — show the bound key, and follow your rebinds too.
General
| Shortcut | Action |
|---|---|
| Ctrl+K | Command palette |
| Ctrl+B | Toggle sidebar (collapse to an icon rail / expand) |
| Ctrl+Shift+B | Toggle the right panel |
| Ctrl+, | Open settings |
| Ctrl+O | Open an existing folder as a project |
| Ctrl+Shift+? | Show the keyboard-shortcuts cheat sheet over the current view |
| Ctrl+= / Ctrl+- | Increase / decrease the interface size, 1px per press (12–22px). A small pill shows the new size, and says when you've hit the limit |
| Ctrl+0 | Reset the interface size to the 16px default |
| Escape | Close the open overlay — the cheat sheet first, then settings, search, or the command palette, one layer per press |
| Ctrl+Alt+R | Reload interface — recovers a blank or frozen window; terminals and agents keep running. Handled by the desktop app itself, so it works even when the UI is frozen. Fixed — it can't be rebound, and no other action can take it |
Ctrl+R, Ctrl+Shift+R, and F5 are bound to Block reload actions so a stray press can't reload the app. They only reload the interface once the window has stopped responding. They're listed in Settings → Shortcuts but left out of the cheat sheet.
Search
| Shortcut | Action |
|---|---|
| Ctrl+Shift+P | Find file by name (via fd/find) |
| Ctrl+Shift+F | Search in files (via rg/grep) |
Workspaces
| Shortcut | Action |
|---|---|
| Ctrl+N | New agent (home chat draft, or the New Workspace dialog — same as the sidebar New agent button; Shift+click it for the dialog) |
| Ctrl+Shift+A | Open the title bar's + launcher (agents, terminal, browser) |
| Ctrl+Shift+N | New workspace in the current project (quick-create) |
| Ctrl+] | Next workspace |
| Ctrl+[ | Previous workspace |
| Alt+1 – Alt+9 | Jump to the Nth workspace card in the sidebar inbox (filter-scoped; parked rows — settled and snoozed — excluded, and numbering runs across the Wrapping up divider). With the sidebar collapsed, the numbers follow the icon rail's order instead. Hold the bound modifier to reveal numbered badges — rebind to Ctrl and Ctrl reveals them. A number with no workspace behind it is passed through to the focused app instead of being swallowed. |
| Ctrl+Shift+J | Jump to the workspace that has waited longest for you; press again to move through the rest. Works with the sidebar collapsed, where the rail also shows a needs-you chip with a count |
| Ctrl+Shift+G | Run the project's configured dev command |
| F2 | Rename the active workspace. A focused terminal keeps F2 for the program running in it (htop, mc, nano) |
Tabs
| Shortcut | Action |
|---|---|
| Ctrl+T | New terminal tab |
| Ctrl+W | Close active tab. A focused terminal keeps Ctrl+W as delete-word; it closes the tab from anywhere else (sidebar, chat, a panel) |
| Ctrl+Shift+T | Reopen the last agent chat you closed, with its transcript, at its old tab position |
| Ctrl+1 through Ctrl+9 | Jump to tab by position (tab 1 = leftmost) |
| Ctrl+PageDown / Ctrl+PageUp | Next / previous tab, wrapping at either end |
Closing a tab or pane that still has a working agent or a running process asks first — see Closing tabs and panes.
Panes
| Shortcut | Action |
|---|---|
| Ctrl+Shift+D | Split active pane right |
| Ctrl+Shift+E | Split active pane down |
| Ctrl+Shift+W | Close active pane |
| Alt+Shift+Arrow keys | Move focus to the pane on the left, right, above, or below. Landing on a chat pane puts the caret in its composer |
| Ctrl+Shift+Enter | Zoom the active pane to fill the tab; press again (or click the Zoomed chip) to bring the split back |
Next tab, previous tab, and zoom pane only take the key when there's something to act on — with a single tab or a single pane the key is left for whatever has focus. Cycling through panes in order is a command-palette action (Ctrl+K → "Focus next pane" / "Focus previous pane") with no default binding.
Chat
| Shortcut | Action |
|---|---|
| Escape | Stop the running agent, from the chat composer. Anything open on top — a popup, the composer strip, a subagent drill-in, the browser peek — takes Escape first |
| Ctrl+C | Also stops the agent when the composer is empty and nothing is selected. Unbinding Stop the agent turns this off too |
Terminal
These work inside terminal panes.
| Shortcut | Action |
|---|---|
| Ctrl+Shift+C | Copy selected text |
| Ctrl+Shift+V | Paste from clipboard |
| Ctrl+Backspace | Backward kill word |
| Ctrl+F | Find in the scrollback. Full-screen apps such as vim and less keep the key |
| Ctrl+click | Open a link or file path printed in the terminal |
| Shift+Enter | Newline in agent input (when the Kitty keyboard protocol is active, e.g. OpenCode; otherwise equivalent to Enter) |
Browser pane
These apply while the page in a browser pane has focus. They're fixed, not rebindable.
| Shortcut | Action |
|---|---|
| Ctrl+L | Focus and select the address bar |
| Alt+Left / Alt+Right | Back / forward |
| Ctrl+R or F5 | Reload the page |
| Ctrl+Shift+I | Toggle the element inspector |
Changes and Diff panes
These single-key shortcuts work while the list or diff has focus, and are fixed.
- Changes —
↑/↓move between files,Enter/Spaceopen the diff,Sstages or unstages,Delete/Backspacediscards (press twice). - Diff —
jor]/kor[for next / previous change,Shift+J/Shift+Kfor next / previous file,Escback to Changes (Diff pane only).
Known Conflicts
| Keys | Conflict |
|---|---|
| Ctrl+W | Close tab vs. delete-word vs. close window. A focused terminal gets Ctrl+W as delete-word. Anywhere else, Codemux consumes it whenever the workspace has at least one tab, including the last one, so it does not reach the window manager. |