Skip to content

Keyboard Shortcuts

These are the defaults. Every one of them can be changed — see Customizing below.

ShortcutAction
Ctrl+Shift+TNew session
Ctrl+Shift+NNew window
Ctrl+WClose the panel tab you were last in — and once no panel is left open, the session tab itself
Ctrl+PgUp / Ctrl+PgDnPrevious / next tab
Ctrl+C / Ctrl+VCopy selection / paste (easy copy & paste, on by default)
Ctrl+Shift+C / Ctrl+Shift+VCopy / paste in the terminal (always available)
Ctrl+Shift+GFind in the agent's terminal (the Ctrl+J shell has no find bar)
Ctrl++ (or Ctrl+=) / Ctrl+- / Ctrl+0Zoom the terminal in / out / back to normal (the keypad's +, - and 0 work too)
Ctrl+KQuick switcher — jump to any session
Ctrl+Shift+AArchive the current session (closes its tab)
Ctrl+Shift+ZUndo the last archive (until another session is archived)
Ctrl+Shift+EToggle a 😊 marker on the current tab
Shift+EnterInsert a newline in the agent's prompt (the keypad's Enter counts)
Ctrl+JShow/hide the terminal panel
Ctrl+Shift+KClear the terminal panel (screen and saved history)
Ctrl+;Move the current panel tab to the panel's other side (bottom ↔ right) — the same thing as its tab row's rotate button
EscBring a panel tab that's overlaying the whole session back to its place in the panel (a shell with a program running in it keeps the key)
Ctrl+.Show/hide the composer — raised, the cursor lands in it; pressed again while composing it closes and puts the draft back in the agent's own input box
Ctrl+'Show/hide the attachments gallery — the images this session has been shown, the same panel the handle on the terminal's right edge raises; docked as a panel tab it comes to the front (revealing a hidden strip) instead of closing
F6Show/hide the git page — the diff beside the session showing the working tree, the index, or the branch against its parent; pressed while the cursor is in it, it closes
F7Open the pull request page for the newest PR this session is linked to — already open, it comes to the front and re-reads itself
F8Show/hide the editor panel (brings a popped-out editor back first)
Ctrl+Shift+OQuick open — fuzzy-find a file in the project, opened in the editor
Ctrl+S (in the editor)Save the current file
Ctrl+F (in the editor)Find in the current file
Ctrl+F (in the git page)Find in the diff — one query over every hunk; Enter / Shift+Enter walk the matches across hunks and files
F9Toggle the sidebar
Ctrl+Shift+BShow/hide the notification history — the sheet the header bell opens; Esc closes it too
Ctrl+,Preferences
Ctrl+QQuit

In the close-tab and close-window confirmation dialogs (shown when a session is still active), a single keypress answers the dialog:

KeyAction
EExit the session(s)
BBackground the session(s) (when available)
KKeep running — hide the window, sessions untouched (close-window dialog)
C (or Esc)Cancel

Easy copy & paste

With easy copy & paste on (the default, see Preferences), Ctrl+C copies when text is selected — otherwise it interrupts as usual — and Ctrl+V pastes.

Note that Ctrl+K opens the quick switcher app-wide, so it takes priority over the shell's own kill-line binding inside terminals.

Customizing

The sidebar's menu (☰) → Keyboard Bindings lists every shortcut above, grouped by what it acts on. Click a row and press the new key combination: it takes effect immediately, in every open window and tab. In the capture dialog, Backspace on its own removes the binding (the action keeps working from its menus and buttons, it just has no key) and Esc keeps the current one. A chord that another action already holds is offered back: confirm and it moves, leaving the other action without it.

Each changed row shows a reset arrow that puts its default back; Reset All in the dialog's header does the same for all of them, after asking. It's greyed out while nothing is customized. Rows sharing a chord carry a warning mark naming the other action — every scope is checked against every other, because the window's shortcuts win over the editor's and the terminal's.

A few actions ship unbound, for anyone who wants a key for them: search sessions (win.focus-search), swap the panel's sides, move a panel tab to the other strip, focus the editor, and opening the Keyboard Bindings dialog itself.

The bindings are stored in ~/.config/collins/state.json under settings.keybindings, as a map of action name to a list of GTK accelerator strings ("win.close-tab": ["<Control>F4"]; an empty list means unbound).

Keys of the widget under the cursor

These belong to the widget under the cursor rather than to the window. Most don't appear in the Keyboard Bindings dialog; the git page's diff keys (the ] / [ row onwards) are the exception — they are its Git page group, rebindable there like any other:

KeyWhereAction
Enter / Ctrl+EnterComposer, new-chat screenSend / newline — swapped by the Enter sends composer text preference. Shift+Enter is always a newline
/ , Enter, EscQuick switcher, quick openMove the selection, open it, close
Esc, arrows, Tab, Enter / SpaceLightboxClose, walk the gallery, cycle the shade's buttons, activate the focused one — nothing reaches the terminal underneath
Ctrl+EnterPull request comment & review boxesPost, as on GitHub; a bare Enter stays a newline
Ctrl+1 / Ctrl+2 / Ctrl+3Git pageLoad the unstaged changes, the staged changes, or the branch's diff against its parent
/ , EnterGit page (commits and files lists)Walk the rows, load the commit or branch (or reveal the file in the diff) — the sidebar's lists are ordinary GTK lists
Enter, Shift+EnterGit page commit dialogCommit; a newline in the body
] / [, . / ,Git page (diff)Focus the next / previous hunk, the next / previous file — scrolled into view, the files list following. This row and the ones below are the Git page group of the Keyboard Bindings dialog: bare letters bound to the diff alone (they never reach the agent's terminal), rebindable there like any other
j / kGit page (diff)Move the cursor line down / up in the focused hunk, the page scrolling to keep it on screen; past the hunk's last (first) line the keyboard walks on into the next (previous) hunk
} / {Git page (diff)The next / previous hunk carrying a note or highlight
c, E, aGit page (diff)Add a note under the focused hunk, anchored to the cursor line (Ctrl+Enter saves, Esc cancels; while the editor is open the other letters type into it); edit the hunk's first note of yours; show or fold the agent's notes
zGit page (diff)Draw every unchanged line above the focused hunk
x / X, D, EscGit page (diff)Stage, unstage or revert — by the load — the selected lines or, with none, the focused hunk; the same for the whole file; discard (revert, on a commit or branch) the selection or hunk after a confirmation whose default is CancelEsc or Enter there leaves the tree alone; clear the line selection (made by dragging in the text or on the line numbers, or with Shift+arrows). The hunk and file headers' buttons press the same; a binary has no hunk and goes whole from its file header, never reverted
0 / 1 / 2, l, wGit page (diff)Layout automatic / split / stacked, line numbers on or off, wrap long lines — each writes the Preferences → Git setting, so every page follows
r, /, ?, e, qGit page (diff)Reload the diff; focus the files filter (Esc there clears it and comes back); open the Keyboard Bindings dialog on its Git page group; open the file under the cursor in the editor, at that line; close the page
/ Sidebar project headerCollapse / expand the group
EscNotification sheet, attachments overlay, Open with pickerClose

Unofficial community tool — not affiliated with or endorsed by Anthropic. Released under GPL-3.0. Forked from agent-session-manager by Máté Molnár.