Keyboard shortcuts
The keys the terminal UI responds to, grouped by where your focus is. The review screen, terminal
tabs and the side chat have their own keys, listed on
Review changes,
Terminals and
Ask a side question.
On macOS, the Alt shortcuts need your terminal to send Option as Meta (Alt). Most terminals have a
setting for this.
Everyday
| Key |
Does |
| Enter |
Send. While a turn runs, the agent reads it at its next step |
| Alt+Enter |
Queue the message to run after the current work |
| Shift+Enter, Ctrl+J |
New line |
| Esc, Esc |
Stop the running turn and its child agents |
| Ctrl+C |
Copy the selection, close a dialog, or clear the draft (↑ brings it back) |
| Ctrl+C, Ctrl+C |
Stop the running turn; quit when nothing runs |
| Ctrl+D |
Quit, on an empty prompt |
| Ctrl+Z |
Suspend to your shell (fg returns), on macOS and Linux |
/ |
Show matching slash commands |
@ |
Show matching files, agents and resources |
! |
Shell mode, on an empty prompt |
| Tab |
Complete the suggestion, or cycle agents |
| Shift+Tab |
Cycle agents backwards |
| Up, Down |
Earlier and later prompts |
| Esc |
Close the suggestion list, leave shell mode, or clear a selection |
Opening things
| Key |
Opens |
| Ctrl+P |
Command palette |
| Ctrl+L |
Chats in this folder |
| Alt+N |
New chat |
| F2 |
Models |
| Alt+A |
Agents |
| Alt+R |
Reasoning effort |
| Alt+M |
Message browser |
| Alt+U |
Usage and context for this chat |
| Alt+E |
The draft in $EDITOR |
| Ctrl+S |
Save the draft to the stash |
| Alt+S |
The stash, to restore a saved draft |
| Ctrl+O |
Child agents of this turn |
| Ctrl+B |
Show or hide the sidebar |
| Ctrl+T |
Thinking: compact, shown in full, or hidden |
| Ctrl+R |
Open or close the fold nearest the prompt: a tool's output, a long prompt, a thought |
| Key |
Does |
| Page Up, Page Down |
Scroll the transcript |
| Alt+↑, Alt+↓ |
Previous, next message |
| Alt+Shift+↑, Alt+Shift+↓ |
Your previous, next prompt |
| Alt+Home |
The start of the chat (also Ctrl+Home) |
| Alt+End |
Your last prompt |
| End, Ctrl+End |
Back to the latest output |
| Mouse drag |
Select text; it is copied when you let go |
Approvals
| Key |
Does |
| Ctrl+G |
Move between a waiting approval and the prompt |
y |
Allow once |
n, Esc |
Reject |
a |
Always: every chat on this Haarness server, until it stops |
w |
This folder: every chat in this folder, kept after restarts |
r |
Repository: this Git repository and its worktrees |
u |
Once + Auto: allow once, then switch this chat to Auto |
| ←, → or Tab |
Move between the buttons |
| Enter |
Choose the highlighted button, or confirm a staged answer |
| ↑, ↓, Page Up, Page Down |
Scroll a long command or script on the card |
| Ctrl+E |
Show all of a long command or script |
| Ctrl+Y |
Switch this chat between Review and Auto; kept after you quit |
y and n light their button and answer after a short pause: the same key again or Enter answers
at once, and Esc, Backspace or Ctrl+C takes it back. a, w, r and u are staged: the card
says what the answer grants, Enter or the same key again confirms, and Esc cancels. An approval
takes the keyboard only from an empty prompt, so a message you are typing never answers it. See
Answer an approval.
Questions from the agent
| Key |
Does |
| ↑, ↓ |
Move between choices |
| 1–9 |
Pick that choice (tick it, on a multiple-choice question) |
| Space |
Tick or untick, on a multiple-choice question |
| Enter |
Send the choice, or your typed answer |
| Shift+Enter |
New line in a typed answer |
| Esc |
Cancel the question |
Editing the prompt
| Key |
Does |
| Ctrl+A, Ctrl+E |
Start, end of the line |
| Alt+←, Alt+→ |
Word left, right (also Ctrl+←, Ctrl+→, Alt+B, Alt+F) |
| Ctrl+W |
Delete the word before the cursor (also Alt+Backspace, Ctrl+Backspace) |
| Alt+D |
Delete the word after the cursor (also Ctrl+Delete) |
| Ctrl+K |
Delete to the end of the line |
| Ctrl+U |
Delete to the start of the line |
| Ctrl+D |
Delete the character under the cursor |
| Ctrl+- |
Undo (Ctrl+_ in terminals that send that) |
| Ctrl+. |
Redo |
Lists and pickers
| Key |
Does |
| ↑, ↓ or Ctrl+P, Ctrl+N |
Move |
| Page Up, Page Down, Home, End |
Move further |
| Type |
Filter. Ctrl+U clears the filter, Ctrl+W removes a word |
| Enter |
Choose |
| → or Tab |
Chat actions, or inspect a workflow |
| ← |
Back from chat actions to the list |
| Ctrl+F |
Mark a model as a favourite |
| Esc |
Back, or close |
Watching a child agent
When you open a child agent from Ctrl+O, its transcript is read-only.
| Key |
Does |
| ←, → |
Previous, next child agent |
| ↑ |
Back to the parent chat |
| Alt+M |
Browse the child's messages |
Change a shortcut
Run /keybinds (or /shortcuts) to rebind the shortcuts below. Changes apply at once and win
over the file. The same screen lists the fixed keys you cannot rebind.
To set them in a file instead, add a [tui.keybinds] section to config.toml, next to your
haarness.json (see Make it yours for where it is). The TUI reads
it when it starts, and the status line names any line it could not apply.
[tui.keybinds]
models = "F6"
editor = "ctrl+x"
stash = "none" # unbind
| Action |
Default |
commands |
ctrl+p |
fold |
ctrl+r |
sessions |
ctrl+l |
messages |
alt+m |
models |
F2 |
agents |
alt+a |
reasoning |
alt+r |
usage |
alt+u |
stash |
alt+s |
stash_save |
ctrl+s |
editor |
alt+e |
new |
alt+n |
messages_previous |
alt+up |
messages_next |
alt+down |
messages_previous_user |
alt+shift+up |
messages_next_user |
alt+shift+down |
messages_first |
alt+home |
messages_last_user |
alt+end |
A shortcut is Ctrl or Alt plus a character (ctrl+k, alt+r); Ctrl, Alt or Shift plus an arrow,
home, end, pageup or pagedown (alt+up); a function key F1–F12; or none. Ctrl+C,
Ctrl+Z and Ctrl+M cannot be bound.
- Two shortcuts cannot share a key. In
/keybinds, free the key first by giving the other
action another key or none. In config.toml, an action whose default key you give to another
action simply loses it.
- Once you move an action, its old key stops working.
- Cards and dialogs come first. Approval cards, questions and open dialogs get their keys
before any shortcut, so a rebind cannot answer an approval.
- A shortcut wins over the prompt's own keys. Binding
ctrl+k, for example, takes Ctrl+K away
from deleting to the end of the line. Pick a key nothing else uses: the prompt uses Ctrl+A, E, F,
D, K, U, W, J, - and ., and Ctrl+B, G, O, T and Y open things or switch modes.