Pi coding agent keyboard shortcuts
Pi keeps a coding agent in your terminal and lets you send new instructions while a run is still going. Its keys control the app, switch models and thinking levels, edit and queue prompts, and browse the transcript and session tree.
Windows, macOS, Linux · 69 shortcutsApplication control
Clear, interrupt, quit, suspend, open an external editor, and move clipboard content into the current Pi session.
| Action | Shortcuts |
|---|---|
| Clear the editor, or quit on the second press | Windows / macOS / LinuxCtrl + C |
| Quit when the editor is empty | Windows / macOS / LinuxCtrl + D |
| Cancel autocomplete or abort streaming | Windows / macOS / LinuxEsc |
| Suspend Pi to the backgroundNative Windows has no default suspend binding. WSL follows the Linux behavior; use fg to resume on Unix-like shells. | WindowsNot documented macOS / LinuxCtrl + Z |
| Open the prompt in an external editorUses externalEditor, VISUAL, EDITOR, Notepad on Windows, or nano elsewhere. | Windows / macOS / LinuxCtrl + G |
| Paste text or an imageAlt+V is the Windows and WSL fallback. | Windows / macOS / LinuxCtrl + VorAlt + V |
| Copy the last assistant message | Windows / macOS / LinuxCtrl + X |
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 | Shortcuts |
|---|---|
| Open the model selector | Windows / macOS / LinuxCtrl + L |
| Cycle scoped models forwardShift+Ctrl+P cycles backward. Alt+P is the Windows and WSL backward binding. | Windows / macOS / LinuxCtrl + P |
| Cycle scoped models backward | Windows / macOS / LinuxShift + Ctrl + PorAlt + P |
| Cycle the thinking level | Windows / macOS / LinuxShift + Tab |
| Collapse or expand thinking blocks | Windows / macOS / LinuxCtrl + T |
| Collapse or expand tool output | Windows / macOS / LinuxCtrl + O |
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 | Shortcuts |
|---|---|
| Move up or browse older history at the top | Windows / macOS / LinuxUp |
| Move down or browse newer history at the bottom | Windows / macOS / LinuxDown |
| Move left one character | Windows / macOS / LinuxLeftorCtrl + B |
| Move right one character | Windows / macOS / LinuxRightorCtrl + F |
| Move left one word | Windows / macOS / LinuxAlt + LeftorCtrl + LeftorAlt + B |
| Move right one word | Windows / macOS / LinuxAlt + RightorCtrl + RightorAlt + F |
| Move to the line start | Windows / macOS / LinuxHomeorCtrl + HomeorCtrl + A |
| Move to the line end | Windows / macOS / LinuxEndorCtrl + EndorCtrl + E |
| Jump forward to a character | Windows / macOS / LinuxCtrl + ] |
| Jump backward to a character | Windows / macOS / LinuxCtrl + Alt + ] |
| Scroll the editor up by a page | Windows / macOS / LinuxPageUporCtrl + PageUp |
| Scroll the editor down by a page | Windows / macOS / LinuxPageDownorCtrl + PageDown |
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 | Shortcuts |
|---|---|
| Delete the previous character | Windows / macOS / LinuxBackspace |
| Delete the next character | Windows / macOS / LinuxDeleteorCtrl + D |
| Delete the previous word | Windows / macOS / LinuxCtrl + WorAlt + Backspace |
| Delete the next word | Windows / macOS / LinuxAlt + DorAlt + Delete |
| Delete to the line start | Windows / macOS / LinuxCtrl + U |
| Delete to the line end | Windows / macOS / LinuxCtrl + K |
| Paste the most recently deleted text | Windows / macOS / LinuxCtrl + Y |
| Cycle through deleted text after yanking | Windows / macOS / LinuxAlt + Y |
| Undo the last editAlt+Z is the documented WSL fallback. | WindowsCtrl + Z macOS / LinuxCtrl + - |
| Insert a line without submittingWindows Terminal may need Ctrl+Enter instead of Shift+Enter. | Windows / macOS / LinuxShift + EnterorCtrl + JorCtrl + Enter |
| Complete a path or accept autocomplete | Windows / macOS / LinuxTab |
| Send now, or queue a steering message while busy | Windows / macOS / LinuxEnter |
| 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. | Windows / macOS / LinuxAlt + EnterorCtrl + Q |
| Restore queued messages to the editorAlt+Q is the Windows and WSL binding. | Windows / macOS / LinuxAlt + UporAlt + Q |
Fullscreen transcript
When fullscreen TUI mode is active, use these transcript bindings to search rendered output and jump between marked prompts.
| Action | Shortcuts |
|---|---|
| Scroll the transcript up by a page | Windows / macOS / LinuxPageUp |
| Scroll the transcript down by a page | Windows / macOS / LinuxPageDown |
| Jump to the previous marked prompt | WindowsCtrl + Up macOS / LinuxCtrl + Shift + Up |
| Jump to the next marked prompt | WindowsCtrl + Down macOS / LinuxCtrl + Shift + Down |
| Search the rendered transcript | WindowsCtrl + F macOS / LinuxCtrl + Shift + F |
| Select the next transcript search match | Windows / macOS / LinuxEnterorCtrl + G |
| Select the previous transcript search match | Windows / macOS / LinuxShift + EnterorCtrl + Shift + G |
| Close transcript search | Windows / macOS / LinuxEsc |
| Scroll to the start of the transcript | Windows / macOS / LinuxHome |
| Scroll to the end and follow new output | Windows / macOS / LinuxEnd |
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 | Shortcuts |
|---|---|
| Toggle session path display | Windows / macOS / LinuxCtrl + P |
| Toggle session sort mode | Windows / macOS / LinuxCtrl + S |
| Toggle the named-only session filter | Windows / macOS / LinuxCtrl + N |
| Fold a branch segment or jump to its previous start | Windows / macOS / LinuxCtrl + LeftorAlt + Left |
| Unfold a branch segment or jump to its next end | Windows / macOS / LinuxCtrl + RightorAlt + Right |
| Edit the selected tree label | Windows / macOS / LinuxShift + L |
| Toggle tree label timestamps | Windows / macOS / LinuxShift + T |
| Use the default tree filter | Windows / macOS / LinuxCtrl + D |
| Toggle the no-tools tree filter | Windows / macOS / LinuxCtrl + T |
| Toggle the user-only tree filter | Windows / macOS / LinuxCtrl + U |
| Toggle the labeled-only tree filter | Windows / macOS / LinuxCtrl + L |
| Show all tree entries | Windows / macOS / LinuxCtrl + A |
| Cycle tree filters forward | Windows / macOS / LinuxCtrl + O |
| Cycle tree filters backward | Windows / macOS / LinuxCtrl + Shift + O |
Scoped model selector
Inside the scoped-models selector, save the selection, toggle providers, and reorder the models used by the cycling shortcut.
| Action | Shortcuts |
|---|---|
| Save the current model selection | Windows / macOS / LinuxCtrl + S |
| Enable all matching models | Windows / macOS / LinuxCtrl + A |
| Clear all matching models | Windows / macOS / LinuxCtrl + X |
| Toggle all models for the provider | Windows / macOS / LinuxCtrl + P |
| Move the selected model up | Windows / macOS / LinuxAlt + Up |
| Move the selected model down | Windows / macOS / LinuxAlt + Down |
Source
official Pi keybindings guide · Checked
Current defaults from Pi's official coding-agent README and keybindings guide in August 2026. Bindings can be replaced in ~/.pi/agent/keybindings.json and reloaded with /reload. Native Windows and WSL have a few terminal-specific differences.