Starting & Core Keys

Action Shortcut
Install with Homebrew brew install charmbracelet/tap/crushwinget install charmbracelet.crushbrew install charmbracelet/tap/crush
Install with npm npm install -g @charmland/crushnpm install -g @charmland/crushnpm install -g @charmland/crush
Install from source (Go) go install github.com/charmbracelet/crush@latestgo install github.com/charmbracelet/crush@latestgo install github.com/charmbracelet/crush@latest
Start Crush in the current project crushcrushcrush
Send the current message EnterEnterEnter
Add a new line without sending ShiftEnterShiftEnterShiftEnter
Add a new line (works in every terminal) CtrlJCtrlJCtrlJ
Quit Crush CtrlCCtrlCCtrlC
Suspend Crush to the shell CtrlZCtrlZCtrlZ
Move focus between panes TabTabTab
Expand the help bar to see more keys CtrlGCtrlGCtrlG
Cancel the current action EscEscEsc

Palette, Models & Sessions

Action Shortcut
Open the command palette — the main way around Crush CtrlPCtrlPCtrlP
Open the model picker and switch provider mid-session CtrlLCtrlLCtrlL
Open the model picker (alternate binding) CtrlMCtrlMCtrlM
Browse and switch sessions CtrlSCtrlSCtrlS
Start a new session CtrlNCtrlNCtrlN
Toggle YOLO mode (auto-approve everything) CtrlYCtrlYCtrlY
Toggle the details panel CtrlDCtrlDCtrlD
Toggle the task list CtrlTCtrlTCtrlT

Writing the Prompt

Action Shortcut
Compose in your external editor CtrlOCtrlOCtrlO
Mention a file to pull it into context @@@
Open the commands menu from the input box ///
Attach an image CtrlFCtrlFCtrlF
Paste an image from the clipboard CtrlVCtrlVCtrlV
Step back through your previous prompts
Delete the attachment at position i Ctrl+R then {i}Ctrl+R then {i}Ctrl+R then {i}
Delete every attachment Ctrl+R then RCtrl+R then RCtrl+R then R

Reading the Chat (Vim-Style)

Action Shortcut
Move down one line jjj
Move up one line kkk
Jump down one whole message ShiftShiftShift
Jump up one whole message ShiftShiftShift
Half page down ddd
Half page up uuu
Full page down fff
Full page up bbb
Jump to the top of the conversation ggg
Jump to the newest message ShiftGShiftGShiftG
Expand or collapse the selected block SpaceSpaceSpace
Copy the selection yyy
Clear the selection EscEscEsc
Scroll wide output left ShiftShiftShift
Scroll wide output right ShiftShiftShift
Focus the sidebar lll
Focus the chat hhh

Command Palette Actions

Action Shortcut
Analyze the project and create its context file Initialize ProjectInitialize ProjectInitialize Project
Start a fresh session New SessionNew SessionNew Session
Switch to another saved session SessionsSessionsSessions
Change the model Switch ModelSwitch ModelSwitch Model
Set how hard the model thinks Select Reasoning EffortSelect Reasoning EffortSelect Reasoning Effort
Compact the conversation to free up context Summarize SessionSummarize SessionSummarize Session
Browse files to attach Open File PickerOpen File PickerOpen File Picker
Compose in your external editor Open External EditorOpen External EditorOpen External Editor
Show or hide the sidebar Toggle SidebarToggle SidebarToggle Sidebar
Show or hide the full key list Toggle HelpToggle HelpToggle Help
Turn auto-approval on or off Toggle Yolo ModeToggle Yolo ModeToggle Yolo Mode
Turn the Docker MCP catalog on or off Enable Docker MCP CatalogEnable Docker MCP CatalogEnable Docker MCP Catalog
Quit Crush QuitQuitQuit
No shortcuts found. Try a different search term.

Frequently Asked Questions

How do I exit Crush?
Press Ctrl+C. Crush binds it straight to quit, with no interrupt step and no confirmation, so it behaves like Codex CLI rather than Claude Code — if you meant to stop the agent rather than leave, press Esc instead. You can also pick Quit from the Ctrl+P command palette. Ctrl+Z suspends Crush to the shell if you want it still running in the background.
How do I add a new line in Crush without sending?
Shift+Enter, or Ctrl+J. Crush binds both, and it's thoughtful about the difference: its own help bar shows Ctrl+J by default and swaps the hint to Shift+Enter only when it detects that your terminal can actually report that key. If Shift+Enter seems to send your message, your terminal can't distinguish it — use Ctrl+J.
Why does Ctrl+J do two different things in Crush?
Because it's bound in both panes, and which one has focus decides what happens. In the input box, Ctrl+J inserts a newline. In the chat pane, Ctrl+J moves down a line (it's an alias for the vim-style j). So the same key writes a line break while you're typing and scrolls while you're reading. Tab moves focus between the two, so if Ctrl+J is scrolling when you wanted a newline, your focus is in the wrong pane. Ctrl+K is the matching scroll-up alias.
Does Crush have slash commands?
Not in the way most terminal agents do. Crush is palette-driven: Ctrl+P opens a command palette that you filter by typing, holding actions like Initialize Project, Switch Model, Summarize Session, and Toggle Yolo Mode. Typing / in the input box opens the commands menu too, and @ mentions a file. So there's no fixed catalog of /commands to memorise — you search the palette instead.
How do I navigate the chat history in Crush?
With vim keys, which is unusual for this class of tool. In the chat pane: j and k move a line, d and u go half a page, f and b go a full page, g jumps to the top and Shift+G to the newest message. Shift+↑ and Shift+↓ jump a whole message at a time, Space expands or collapses the selected block, and y copies. For wide output that runs off the edge, Shift+← and Shift+→ scroll sideways. Case matters throughout: lowercase j moves one line, capital J (Shift+J) jumps a whole message, and the same split applies to k / K, h / H, and l / L.
How do I remove a file or image I attached by mistake?
Press Ctrl+R, then the number of the attachment you want gone — Crush shows them in order, so Ctrl+R then 2 drops the second one. Ctrl+R then R removes all of them, and Esc leaves delete mode without removing anything. It's a two-step chord rather than a single key, which is why it isn't obvious from the help bar.
Is Crush the same as opencode?
No — they're two separate projects today, though the names have a shared history and people still mix them up. The practical difference for shortcuts is real: opencode is built around a leader key, so many of its actions are Ctrl+X chords, while Crush binds actions directly to Ctrl combinations and puts the rest behind the Ctrl+P palette. Kilo CLI is a fork of opencode and follows opencode's scheme, not Crush's. If you're switching between them, the leader key is the thing to unlearn.
How do I switch model mid-session in Crush?
Press Ctrl+L to open the model picker (Ctrl+M is bound to the same thing, though the help bar advertises Ctrl+L). You can change provider partway through a conversation without restarting. Select Reasoning Effort in the Ctrl+P palette is the companion setting, letting you dial how hard the model thinks on models that support it.