Pi coding agent keyboard shortcuts
Pi's keyboard model separates the prompt you are writing from the agent work already running. This reference covers the current editor, queue, session, model, thinking, transcript, tree, and application defaults.
Windows, macOS, Linux · 69 shortcutsApplication control
Clear, interrupt, quit, suspend, open an external editor, and move clipboard content into the current Pi session.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Clear the editor, or quit on the second press | CtrlC | CtrlC | CtrlC |
| Quit when the editor is empty | CtrlD | CtrlD | CtrlD |
| Cancel autocomplete or abort streaming | Esc | Esc | Esc |
| Suspend Pi to the backgroundNative Windows has no default suspend binding. WSL follows the Linux behavior; use fg to resume on Unix-like shells. | Not documented | CtrlZ | CtrlZ |
| Open the prompt in an external editorUses externalEditor, VISUAL, EDITOR, Notepad on Windows, or nano elsewhere. | CtrlG | CtrlG | CtrlG |
| Paste text or an imageAlt+V is the Windows and WSL fallback. | CtrlVorAltV | CtrlVorAltV | CtrlVorAltV |
| Copy the last assistant message | CtrlX | CtrlX | CtrlX |
Models, thinking, and tools
Choose a model, cycle a scoped model list, change thinking level, and control how tool output or thinking blocks are shown.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Open the model selector | CtrlL | CtrlL | CtrlL |
| Cycle scoped models forwardShift+Ctrl+P cycles backward. Alt+P is the Windows and WSL backward binding. | CtrlP | CtrlP | CtrlP |
| Cycle scoped models backward | ShiftCtrlPorAltP | ShiftCtrlPorAltP | ShiftCtrlPorAltP |
| Cycle the thinking level | ShiftTab | ShiftTab | ShiftTab |
| Collapse or expand thinking blocks | CtrlT | CtrlT | CtrlT |
| Collapse or expand tool output | CtrlO | CtrlO | CtrlO |
Prompt cursor and history
Move through the prompt by character, word, line, page, or history entry while preserving the distinction between editing and sending.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Move up or browse older history at the top | Up | Up | Up |
| Move down or browse newer history at the bottom | Down | Down | Down |
| Move left one character | LeftorCtrlB | LeftorCtrlB | LeftorCtrlB |
| Move right one character | RightorCtrlF | RightorCtrlF | RightorCtrlF |
| Move left one word | AltLeftorCtrlLeftorAltB | AltLeftorCtrlLeftorAltB | AltLeftorCtrlLeftorAltB |
| Move right one word | AltRightorCtrlRightorAltF | AltRightorCtrlRightorAltF | AltRightorCtrlRightorAltF |
| Move to the line start | HomeorCtrlHomeorCtrlA | HomeorCtrlHomeorCtrlA | HomeorCtrlHomeorCtrlA |
| Move to the line end | EndorCtrlEndorCtrlE | EndorCtrlEndorCtrlE | EndorCtrlEndorCtrlE |
| Jump forward to a character | Ctrl] | Ctrl] | Ctrl] |
| Jump backward to a character | CtrlAlt] | CtrlAlt] | CtrlAlt] |
| Scroll the editor up by a page | PageUporCtrlPageUp | PageUporCtrlPageUp | PageUporCtrlPageUp |
| Scroll the editor down by a page | PageDownorCtrlPageDown | PageDownorCtrlPageDown | PageDownorCtrlPageDown |
Editing, queue, and multiline input
Delete text, use the kill ring, insert new lines, complete paths, and decide whether a message steers the current run or follows it.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Delete the previous character | Backspace | Backspace | Backspace |
| Delete the next character | DeleteorCtrlD | DeleteorCtrlD | DeleteorCtrlD |
| Delete the previous word | CtrlWorAltBackspace | CtrlWorAltBackspace | CtrlWorAltBackspace |
| Delete the next word | AltDorAltDelete | AltDorAltDelete | AltDorAltDelete |
| Delete to the line start | CtrlU | CtrlU | CtrlU |
| Delete to the line end | CtrlK | CtrlK | CtrlK |
| Paste the most recently deleted text | CtrlY | CtrlY | CtrlY |
| Cycle through deleted text after yanking | AltY | AltY | AltY |
| Undo the last editAlt+Z is the documented WSL fallback. | CtrlZ | Ctrl- | Ctrl- |
| Insert a line without submittingWindows Terminal may need Ctrl+Enter instead of Shift+Enter. | ShiftEnterorCtrlJorCtrlEnter | ShiftEnterorCtrlJorCtrlEnter | ShiftEnterorCtrlJorCtrlEnter |
| Complete a path or accept autocomplete | Tab | Tab | Tab |
| Send now, or queue a steering message while busy | Enter | Enter | Enter |
| Queue a follow-up after the current work finishesCtrl+Q is the Windows and WSL binding. Windows Terminal may reserve Alt+Enter for full-screen. | AltEnterorCtrlQ | AltEnterorCtrlQ | AltEnterorCtrlQ |
| Restore queued messages to the editorAlt+Q is the Windows and WSL binding. | AltUporAltQ | AltUporAltQ | AltUporAltQ |
Fullscreen transcript
When fullscreen TUI mode is active, use these transcript bindings to search rendered output and jump between marked prompts.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Scroll the transcript up by a page | PageUp | PageUp | PageUp |
| Scroll the transcript down by a page | PageDown | PageDown | PageDown |
| Jump to the previous marked prompt | CtrlUp | CtrlShiftUp | CtrlShiftUp |
| Jump to the next marked prompt | CtrlDown | CtrlShiftDown | CtrlShiftDown |
| Search the rendered transcript | CtrlF | CtrlShiftF | CtrlShiftF |
| Select the next transcript search match | EnterorCtrlG | EnterorCtrlG | EnterorCtrlG |
| Select the previous transcript search match | ShiftEnterorCtrlShiftG | ShiftEnterorCtrlShiftG | ShiftEnterorCtrlShiftG |
| Close transcript search | Esc | Esc | Esc |
| Scroll to the start of the transcript | Home | Home | Home |
| Scroll to the end and follow new output | End | End | End |
Session tree and filters
Use the session tree and its filters to move between branches, label entries, and control which messages or tool results remain visible.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Toggle session path display | CtrlP | CtrlP | CtrlP |
| Toggle session sort mode | CtrlS | CtrlS | CtrlS |
| Toggle the named-only session filter | CtrlN | CtrlN | CtrlN |
| Fold a branch segment or jump to its previous start | CtrlLeftorAltLeft | CtrlLeftorAltLeft | CtrlLeftorAltLeft |
| Unfold a branch segment or jump to its next end | CtrlRightorAltRight | CtrlRightorAltRight | CtrlRightorAltRight |
| Edit the selected tree label | ShiftL | ShiftL | ShiftL |
| Toggle tree label timestamps | ShiftT | ShiftT | ShiftT |
| Use the default tree filter | CtrlD | CtrlD | CtrlD |
| Toggle the no-tools tree filter | CtrlT | CtrlT | CtrlT |
| Toggle the user-only tree filter | CtrlU | CtrlU | CtrlU |
| Toggle the labeled-only tree filter | CtrlL | CtrlL | CtrlL |
| Show all tree entries | CtrlA | CtrlA | CtrlA |
| Cycle tree filters forward | CtrlO | CtrlO | CtrlO |
| Cycle tree filters backward | CtrlShiftO | CtrlShiftO | CtrlShiftO |
Scoped model selector
Inside the scoped-models selector, save the selection, toggle providers, and reorder the models used by the cycling shortcut.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Save the current model selection | CtrlS | CtrlS | CtrlS |
| Enable all matching models | CtrlA | CtrlA | CtrlA |
| Clear all matching models | CtrlX | CtrlX | CtrlX |
| Toggle all models for the provider | CtrlP | CtrlP | CtrlP |
| Move the selected model up | AltUp | AltUp | AltUp |
| Move the selected model down | AltDown | AltDown | AltDown |