ncode CLI / Using ncode
Keyboard reference
The session is keyboard-first and built around the composer. A few rules explain most of the table below:
- Letters always type. In the composer a letter is text, never a command. Commands start with
/. Single-letter keys act where no text is being typed, such as select mode, pickers and dialogs, or on an approval card while your draft is empty. - Esc stops or closes. It stops the streaming turn, or closes the top layer; it never moves the focus.
- Ctrl+C never surprises you. It closes a layer, else clears the draft (Ctrl+Z restores it), else stops the turn. Only two presses with nothing left to cancel, within 1.5 seconds, quit.
- Help is on screen. F1 (or
? outside a text field) shows the keys of the place you are in.
Terminal notes#
- Nothing essential needs Alt, because Alt is unreliable in some macOS terminals (Ghostty in particular). Alt+Enter (queue), for example, is also Tab while a turn runs.
- Ctrl+K is never bound, because window managers use it.
- Ctrl+Shift+Z (redo) needs a terminal that reports Ctrl with Shift.
- Any action can be rebound in Settings → Keys & input, or listed from a shell with
ncode config keys.
Vim keys#
Set NCODE_KEYMAP=vim before starting, pick Vim mode in the Ctrl+P palette, or set Keymap in Settings → Keys & input. The composer then has vim's NORMAL and VISUAL modes; their keys are the two "vim" contexts below.
Every key#
Keys are read against one context at a time, chosen from where the focus is and which layer is on top. ? (or F1 inside a text field) shows the same list for the current context on screen. Vim's NORMAL and VISUAL modes exist only with the vim keymap on (NCODE_KEYMAP=vim, or "Vim mode" in the command palette; the older SWARM_KEYMAP=vim still works).
Mouse: the wheel scrolls the pane under the pointer (the transcript, the side panel, the agent overlay, the pager), three lines a notch. While wheel reports are on, Shift-drag (Option-drag in Terminal.app and iTerm2) selects text; /mouse off gives the terminal its own selection back.
Composer#
Navigate#
| Keys | Does |
|---|
PgDn | Scroll one page down |
PgUp | Scroll one page up |
Ctrl-D | On an empty draft, scroll the transcript half a page down |
Focus#
| Keys | Does |
|---|
Ctrl-T | Select mode: j/k move, Enter open, y copy, Esc back to typing |
Runs#
| Keys | Does |
|---|
Ctrl-F / Ctrl-Space | Hint mode: a letter opens an agent, a digit a run (not forward-char: Right moves the caret) |
Alt-1 | Switch to the first run tab as drawn |
Alt-2 | Switch to the second run tab as drawn |
Alt-3 | Switch to the third run tab as drawn |
Alt-4 | Switch to the fourth run tab as drawn |
Act#
| Keys | Does |
|---|
Enter | Send the draft (in every vim mode); while loading, it sends once ready |
Alt-Enter | Queue the draft instead of sending it |
Ctrl-S | Send a message that names a workflow as a plain message, not as /create-workflow |
Ctrl-N | Open the next approval or question waiting on you |
Layers#
| Keys | Does |
|---|
Ctrl-P | Command palette; pressed again it keeps the palette and its query |
Ctrl-G | Runs dashboard; the same chord closes it |
Ctrl-R | Run palette; the same chord closes it |
Ctrl-B / Alt-I | Side panel: full, compact, hidden (strip or off under 120 columns) |
Alt-H / Alt-Shift-H / Ctrl-Alt-H / Ctrl-Alt-Shift-H | Narrow the inspector dock (add Ctrl for a bigger step) |
Alt-L / Alt-Shift-L / Ctrl-Alt-L / Ctrl-Alt-Shift-L | Widen the inspector dock (add Ctrl for a bigger step) |
Alt-0 / Alt-Shift-0 / Ctrl-Alt-0 / Ctrl-Alt-Shift-0 | Reset the inspector dock to its default width |
F2 | Settings: every setting, provider, search engine, MCP server and key (also /settings) |
Edit#
| Keys | Does |
|---|
Tab | Complete a slash command; while a turn runs, queue the draft behind it |
Ctrl-O / Ctrl-J / Shift-Enter | Insert a line break without sending (Ctrl-O or Ctrl-J) |
Ctrl-X | Edit the draft in $VISUAL or $EDITOR; saving and quitting brings it back |
↑ | Up a line; on an empty draft, the previous prompt; up the slash list |
↓ | Down a line; back towards the draft in prompt history; down the slash list |
Ctrl-A | Move to the start of the line |
Ctrl-E | Move to the end of the line |
Ctrl-W | Delete the word before the cursor |
Ctrl-U | Delete back to the start of the line; on an empty draft, scroll up |
Ctrl-Z | Undo the last edit |
Ctrl-Shift-Z | Redo (needs a terminal that reports Ctrl-Shift) |
Ctrl-↑ | Give the composer one more row |
Ctrl-↓ | Take one row back from the composer |
Session#
| Keys | Does |
|---|
F1 | The keyboard help sheet; the same key closes it |
Ctrl-C | Clear the draft, else stop the turn; twice with nothing to stop quits |
Esc | Stop the turn that is streaming; the draft stays |
Composer, vim NORMAL#
Vim#
| Keys | Does |
|---|
h | Left one character |
j | Down one line |
k | Up one line |
l | Right one character |
w | Forward to the start of the next word |
b | Back to the start of the previous word |
e | Forward to the end of the word |
0 | Start of the line; after a count, one more digit |
^ | First non-blank character of the line |
$ | End of the line |
G | End of the draft |
g | g g: start of the draft |
1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 | Repeat the next motion or operator that many times |
d | Delete with a motion; d d deletes the line |
c | Delete with a motion, then INSERT; c c the line |
y | Copy with a motion; y y copies the line |
x | Delete the character under the caret |
X | Delete the character before the caret |
D | Delete to the end of the line |
C | Delete to the end of the line, then INSERT |
Y | Copy the line |
s | Delete the character under the caret, then INSERT |
S | Clear the line, then INSERT |
p | Put the last deleted or yanked text after the caret |
P | Put the last deleted or yanked text before the caret |
u | Undo the last edit |
Ctrl-R | Redo (Ctrl-R is the run palette outside NORMAL) |
i | INSERT at the caret |
a | INSERT after the caret |
I | INSERT at the first non-blank of the line |
A | INSERT at the end of the line |
o | New line below, then INSERT |
O | New line above, then INSERT |
v | VISUAL: motions select, then d, y or c act on it |
V | VISUAL with the whole line selected |
Navigate#
| Keys | Does |
|---|
PgDn | Scroll one page down |
PgUp | Scroll one page up |
Focus#
| Keys | Does |
|---|
Tab | Move focus on; from select mode, back into the composer |
Ctrl-T | Select mode: j/k move, Enter open, y copy, Esc back to typing |
Runs#
| Keys | Does |
|---|
Ctrl-F / Ctrl-Space | Hint mode: a letter opens an agent, a digit a run (not forward-char: Right moves the caret) |
Alt-1 | Switch to the first run tab as drawn |
Alt-2 | Switch to the second run tab as drawn |
Alt-3 | Switch to the third run tab as drawn |
Alt-4 | Switch to the fourth run tab as drawn |
] | Next inspector tab while the inspector is visible |
[ | Previous inspector tab while the inspector is visible |
Act#
| Keys | Does |
|---|
Enter | Send the draft (in every vim mode); while loading, it sends once ready |
Alt-Enter | Queue the draft instead of sending it |
Ctrl-S | Send a message that names a workflow as a plain message, not as /create-workflow |
Ctrl-N | Open the next approval or question waiting on you |
Layers#
| Keys | Does |
|---|
Ctrl-P | Command palette; pressed again it keeps the palette and its query |
Ctrl-G | Runs dashboard; the same chord closes it |
Ctrl-B / Alt-I | Side panel: full, compact, hidden (strip or off under 120 columns) |
Alt-H / Alt-Shift-H / Ctrl-Alt-H / Ctrl-Alt-Shift-H | Narrow the inspector dock (add Ctrl for a bigger step) |
Alt-L / Alt-Shift-L / Ctrl-Alt-L / Ctrl-Alt-Shift-L | Widen the inspector dock (add Ctrl for a bigger step) |
Alt-0 / Alt-Shift-0 / Ctrl-Alt-0 / Ctrl-Alt-Shift-0 | Reset the inspector dock to its default width |
F2 | Settings: every setting, provider, search engine, MCP server and key (also /settings) |
Edit#
| Keys | Does |
|---|
Ctrl-X | Edit the draft in $VISUAL or $EDITOR; saving and quitting brings it back |
Session#
| Keys | Does |
|---|
? / F1 | The keyboard help sheet; the same key closes it |
Ctrl-C | Clear the draft, else stop the turn; twice with nothing to stop quits |
Esc | Close the top layer, end a vim mode, or leave select mode |
Composer, vim VISUAL#
Vim#
| Keys | Does |
|---|
h | Left one character |
j | Down one line |
k | Up one line |
l | Right one character |
w | Forward to the start of the next word |
b | Back to the start of the previous word |
e | Forward to the end of the word |
0 | Start of the line; after a count, one more digit |
^ | First non-blank character of the line |
$ | End of the line |
G | End of the draft |
g | g g: start of the draft |
1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 | Repeat the next motion or operator that many times |
d / x | Delete the selection |
y | Copy the selection |
c | Delete the selection, then INSERT |
Navigate#
| Keys | Does |
|---|
PgDn | Scroll one page down |
PgUp | Scroll one page up |
Focus#
| Keys | Does |
|---|
Tab | Move focus on; from select mode, back into the composer |
Ctrl-T | Select mode: j/k move, Enter open, y copy, Esc back to typing |
Runs#
| Keys | Does |
|---|
Ctrl-F / Ctrl-Space | Hint mode: a letter opens an agent, a digit a run (not forward-char: Right moves the caret) |
Alt-1 | Switch to the first run tab as drawn |
Alt-2 | Switch to the second run tab as drawn |
Alt-3 | Switch to the third run tab as drawn |
Alt-4 | Switch to the fourth run tab as drawn |
] | Next inspector tab while the inspector is visible |
[ | Previous inspector tab while the inspector is visible |
Act#
| Keys | Does |
|---|
Enter | Send the draft (in every vim mode); while loading, it sends once ready |
Alt-Enter | Queue the draft instead of sending it |
Ctrl-S | Send a message that names a workflow as a plain message, not as /create-workflow |
Ctrl-N | Open the next approval or question waiting on you |
Layers#
| Keys | Does |
|---|
Ctrl-P | Command palette; pressed again it keeps the palette and its query |
Ctrl-G | Runs dashboard; the same chord closes it |
Ctrl-B / Alt-I | Side panel: full, compact, hidden (strip or off under 120 columns) |
Alt-H / Alt-Shift-H / Ctrl-Alt-H / Ctrl-Alt-Shift-H | Narrow the inspector dock (add Ctrl for a bigger step) |
Alt-L / Alt-Shift-L / Ctrl-Alt-L / Ctrl-Alt-Shift-L | Widen the inspector dock (add Ctrl for a bigger step) |
Alt-0 / Alt-Shift-0 / Ctrl-Alt-0 / Ctrl-Alt-Shift-0 | Reset the inspector dock to its default width |
Session#
| Keys | Does |
|---|
? / F1 | The keyboard help sheet; the same key closes it |
Ctrl-C | Clear the draft, else stop the turn; twice with nothing to stop quits |
Esc | Close the top layer, end a vim mode, or leave select mode |
Transcript (main)#
Navigate#
| Keys | Does |
|---|
Alt-← / Backspace | Go back to where you came from |
g | Go-to prefix: g top, G bottom, t / T run tabs |
j / ↓ | Move the selection down |
k / ↑ | Move the selection up |
Home | Select the first item (also g g) |
G / End | Select the last item and follow the stream |
PgDn | Scroll one page down |
PgUp | Scroll one page up |
Ctrl-D | Scroll half a page down |
Ctrl-U | Scroll half a page up |
Ctrl-E | Scroll one line down, keeping the selection |
Ctrl-Y | Scroll one line up, keeping the selection |
h / ← | Collapse the selected item |
l / → | Expand the selected item |
Space | Expand or collapse the selected item |
Focus#
| Keys | Does |
|---|
Tab | Move focus on; from select mode, back into the composer |
Shift-Tab | Move focus back |
Ctrl-T | Select mode: j/k move, Enter open, y copy, Esc back to typing |
i | Focus the composer (INSERT in vim) |
Runs#
| Keys | Does |
|---|
Ctrl-F / Ctrl-Space | Hint mode: a letter opens an agent, a digit a run (not forward-char: Right moves the caret) |
Alt-1 | Switch to the first run tab as drawn |
Alt-2 | Switch to the second run tab as drawn |
Alt-3 | Switch to the third run tab as drawn |
Alt-4 | Switch to the fourth run tab as drawn |
] | Next inspector tab while the inspector is visible |
[ | Previous inspector tab while the inspector is visible |
t | Open the run inspector over this run |
Act#
| Keys | Does |
|---|
x | Stop the current run (asks to confirm) |
p | Pause or continue the current run |
m | Mark the current run as seen |
a | Open the action menu for what is selected |
y | Copy the selected item's text to the clipboard |
o | Open the full text of the selected item |
Enter | Activate what is focused; on an approval card that cuts its command, show all of it |
Alt-Enter | Queue the draft instead of sending it |
n | Open the next approval or question waiting on you, across every run |
N | Open the previous approval or question waiting on you |
Layers#
| Keys | Does |
|---|
Ctrl-P | Command palette; pressed again it keeps the palette and its query |
Ctrl-G | Runs dashboard; the same chord closes it |
Ctrl-R | Run palette; the same chord closes it |
Ctrl-B / Alt-I | Side panel: full, compact, hidden (strip or off under 120 columns) |
Alt-H / Alt-Shift-H / Ctrl-Alt-H / Ctrl-Alt-Shift-H | Narrow the inspector dock (add Ctrl for a bigger step) |
Alt-L / Alt-Shift-L / Ctrl-Alt-L / Ctrl-Alt-Shift-L | Widen the inspector dock (add Ctrl for a bigger step) |
Alt-0 / Alt-Shift-0 / Ctrl-Alt-0 / Ctrl-Alt-Shift-0 | Reset the inspector dock to its default width |
F2 | Settings: every setting, provider, search engine, MCP server and key (also /settings) |
Session#
| Keys | Does |
|---|
? / F1 | The keyboard help sheet; the same key closes it |
Ctrl-C | Clear the draft, else stop the turn; twice with nothing to stop quits |
q | Close the top layer; in select mode with none open, quit |
Esc | Close the top layer, end a vim mode, or leave select mode |
P | Hand off to the plain presenter |
Inspector#
Navigate#
| Keys | Does |
|---|
Alt-← / Backspace | Go back to where you came from |
g | Go-to prefix: g top, G bottom, t / T run tabs |
j / ↓ | Move the selection down |
k / ↑ | Move the selection up |
Home | Select the first item (also g g) |
G / End | Select the last item and follow the stream |
PgDn | Scroll one page down |
PgUp | Scroll one page up |
Ctrl-D | Scroll half a page down |
Ctrl-U | Scroll half a page up |
Ctrl-E | Scroll one line down, keeping the selection |
Ctrl-Y | Scroll one line up, keeping the selection |
h / ← | Collapse the selected item |
l / → | Expand the selected item |
Space | Expand or collapse the selected item |
Focus#
| Keys | Does |
|---|
Tab | Move focus on; from select mode, back into the composer |
Shift-Tab | Move focus back |
Ctrl-T | Select mode: j/k move, Enter open, y copy, Esc back to typing |
i | Focus the composer (INSERT in vim) |
Runs#
| Keys | Does |
|---|
Ctrl-F / Ctrl-Space | Hint mode: a letter opens an agent, a digit a run (not forward-char: Right moves the caret) |
Alt-1 | Switch to the first run tab as drawn |
Alt-2 | Switch to the second run tab as drawn |
Alt-3 | Switch to the third run tab as drawn |
Alt-4 | Switch to the fourth run tab as drawn |
] | Next inspector tab while the inspector is visible |
[ | Previous inspector tab while the inspector is visible |
t | Open the run inspector over this run |
Act#
| Keys | Does |
|---|
x | Stop the current run (asks to confirm) |
p | Pause or continue the current run |
m | Mark the current run as seen |
a | Open the action menu for what is selected |
y | Copy the selected item's text to the clipboard |
o | Open the full text of the selected item |
Enter | Activate what is focused; on an approval card that cuts its command, show all of it |
Alt-Enter | Queue the draft instead of sending it |
n | Open the next approval or question waiting on you, across every run |
N | Open the previous approval or question waiting on you |
Layers#
| Keys | Does |
|---|
Ctrl-P | Command palette; pressed again it keeps the palette and its query |
Ctrl-G | Runs dashboard; the same chord closes it |
Ctrl-R | Run palette; the same chord closes it |
Ctrl-B / Alt-I | Side panel: full, compact, hidden (strip or off under 120 columns) |
Alt-H / Alt-Shift-H / Ctrl-Alt-H / Ctrl-Alt-Shift-H | Narrow the inspector dock (add Ctrl for a bigger step) |
Alt-L / Alt-Shift-L / Ctrl-Alt-L / Ctrl-Alt-Shift-L | Widen the inspector dock (add Ctrl for a bigger step) |
Alt-0 / Alt-Shift-0 / Ctrl-Alt-0 / Ctrl-Alt-Shift-0 | Reset the inspector dock to its default width |
F2 | Settings: every setting, provider, search engine, MCP server and key (also /settings) |
Session#
| Keys | Does |
|---|
? / F1 | The keyboard help sheet; the same key closes it |
Ctrl-C | Clear the draft, else stop the turn; twice with nothing to stop quits |
q | Close the top layer; in select mode with none open, quit |
Esc | Close the top layer, end a vim mode, or leave select mode |
P | Hand off to the plain presenter |
Pickers: command palette, run palette, runs dashboard, go-to#
Navigate#
| Keys | Does |
|---|
g | From the go-to popup, jump to the first item |
G | From the go-to popup, jump to the last item |
↓ / Ctrl-N | Next result |
↑ | Previous result |
PgDn / Ctrl-D | A screenful further down the list |
PgUp / Ctrl-U | A screenful further up the list |
Home | The first row of the list |
End | The last row of the list |
Focus#
| Keys | Does |
|---|
Tab | Move focus on; from select mode, back into the composer |
Shift-Tab | Move focus back |
Runs#
| Keys | Does |
|---|
t | From the go-to popup, the next run tab |
T | From the go-to popup, the previous run tab |
Alt-1 | Switch to the first run tab as drawn |
Alt-2 | Switch to the second run tab as drawn |
Alt-3 | Switch to the third run tab as drawn |
Alt-4 | Switch to the fourth run tab as drawn |
Act#
| Keys | Does |
|---|
Enter | Activate what is focused; on an approval card that cuts its command, show all of it |
Alt-Enter | Queue the draft instead of sending it |
Layers#
| Keys | Does |
|---|
Ctrl-P | Command palette; pressed again it keeps the palette and its query |
Ctrl-G | Runs dashboard; the same chord closes it |
Ctrl-R | Run palette; the same chord closes it |
Ctrl-B / Alt-I | Side panel: full, compact, hidden (strip or off under 120 columns) |
Alt-H / Alt-Shift-H / Ctrl-Alt-H / Ctrl-Alt-Shift-H | Narrow the inspector dock (add Ctrl for a bigger step) |
Alt-L / Alt-Shift-L / Ctrl-Alt-L / Ctrl-Alt-Shift-L | Widen the inspector dock (add Ctrl for a bigger step) |
Alt-0 / Alt-Shift-0 / Ctrl-Alt-0 / Ctrl-Alt-Shift-0 | Reset the inspector dock to its default width |
Session#
| Keys | Does |
|---|
F1 | The keyboard help sheet; the same key closes it |
Ctrl-C | Clear the draft, else stop the turn; twice with nothing to stop quits |
q | Close the top layer; in select mode with none open, quit |
Esc | Close the top layer, end a vim mode, or leave select mode |
Text fields inside dialogs#
Focus#
| Keys | Does |
|---|
Tab | Move focus on; from select mode, back into the composer |
Shift-Tab | Move focus back |
Runs#
| Keys | Does |
|---|
Alt-1 | Switch to the first run tab as drawn |
Alt-2 | Switch to the second run tab as drawn |
Alt-3 | Switch to the third run tab as drawn |
Alt-4 | Switch to the fourth run tab as drawn |
Act#
| Keys | Does |
|---|
Enter | Activate what is focused; on an approval card that cuts its command, show all of it |
Alt-Enter | Queue the draft instead of sending it |
Layers#
| Keys | Does |
|---|
Ctrl-P | Command palette; pressed again it keeps the palette and its query |
Ctrl-G | Runs dashboard; the same chord closes it |
Ctrl-R | Run palette; the same chord closes it |
Ctrl-B / Alt-I | Side panel: full, compact, hidden (strip or off under 120 columns) |
Alt-H / Alt-Shift-H / Ctrl-Alt-H / Ctrl-Alt-Shift-H | Narrow the inspector dock (add Ctrl for a bigger step) |
Alt-L / Alt-Shift-L / Ctrl-Alt-L / Ctrl-Alt-Shift-L | Widen the inspector dock (add Ctrl for a bigger step) |
Alt-0 / Alt-Shift-0 / Ctrl-Alt-0 / Ctrl-Alt-Shift-0 | Reset the inspector dock to its default width |
Edit#
| Keys | Does |
|---|
← | Move the cursor left, or pick the previous choice |
→ | Move the cursor right, or pick the next choice |
Ctrl-O / Ctrl-J / Shift-Enter | Insert a line break without sending (Ctrl-O or Ctrl-J) |
Ctrl-A | Move to the start of the line |
Ctrl-E | Move to the end of the line |
Ctrl-W | Delete the word before the cursor |
Ctrl-U | Delete back to the start of the line |
Ctrl-Z | Undo the last edit |
Ctrl-Shift-Z | Redo (needs a terminal that reports Ctrl-Shift) |
Session#
| Keys | Does |
|---|
F1 | The keyboard help sheet; the same key closes it |
Ctrl-C | Clear the draft, else stop the turn; twice with nothing to stop quits |
Esc | Close the top layer, end a vim mode, or leave select mode |
Dialogs#
Navigate#
| Keys | Does |
|---|
j / ↓ | Focus the next control |
k / ↑ | Focus the previous control |
→ | Next question, or the next control |
← | Previous question, or the previous control |
PgDn | Scroll the dialog down a page |
PgUp | Scroll the dialog up a page |
Ctrl-D | Scroll the dialog down half a page |
Ctrl-U | Scroll the dialog up half a page |
Home | Scroll the dialog to the top |
G / End | Scroll the dialog to the bottom |
Focus#
| Keys | Does |
|---|
Tab | Move focus on; from select mode, back into the composer |
Shift-Tab | Move focus back |
Runs#
| Keys | Does |
|---|
Ctrl-F / Ctrl-Space | Hint mode: a letter opens an agent, a digit a run (not forward-char: Right moves the caret) |
Alt-1 | Switch to the first run tab as drawn |
Alt-2 | Switch to the second run tab as drawn |
Alt-3 | Switch to the third run tab as drawn |
Alt-4 | Switch to the fourth run tab as drawn |
] | Next inspector tab while the inspector is visible |
[ | Previous inspector tab while the inspector is visible |
Act#
| Keys | Does |
|---|
Enter | Activate what is focused; on an approval card that cuts its command, show all of it |
Alt-Enter | Queue the draft instead of sending it |
y | Confirm: yes; on an approval, allow it once |
Y | Allow it for the rest of this run |
A | Always allow commands of this family in the project |
d | Deny the pending request; the run goes on without it |
D | Deny the pending request and stop the run |
n | Confirm: no; on an approval or question, the next one waiting |
1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 | Pick a numbered question option |
Space | Tick or untick the focused option |
Layers#
| Keys | Does |
|---|
Ctrl-P | Command palette; pressed again it keeps the palette and its query |
Ctrl-G | Runs dashboard; the same chord closes it |
Ctrl-R | Run palette; the same chord closes it |
Ctrl-B / Alt-I | Side panel: full, compact, hidden (strip or off under 120 columns) |
Alt-H / Alt-Shift-H / Ctrl-Alt-H / Ctrl-Alt-Shift-H | Narrow the inspector dock (add Ctrl for a bigger step) |
Alt-L / Alt-Shift-L / Ctrl-Alt-L / Ctrl-Alt-Shift-L | Widen the inspector dock (add Ctrl for a bigger step) |
Alt-0 / Alt-Shift-0 / Ctrl-Alt-0 / Ctrl-Alt-Shift-0 | Reset the inspector dock to its default width |
Session#
| Keys | Does |
|---|
? / F1 | The keyboard help sheet; the same key closes it |
Ctrl-C | Clear the draft, else stop the turn; twice with nothing to stop quits |
q | Close the top layer; in select mode with none open, quit |
Esc | Close the top layer, end a vim mode, or leave select mode |
Agent overlay#
Navigate#
| Keys | Does |
|---|
] | The next agent in panel order, wrapping (types while the composer has text) |
[ | The previous agent in panel order, wrapping |
↓ | Next group of the activity |
↑ | Previous group of the activity |
PgDn | Scroll the activity a page down |
PgUp | Scroll the activity a page up |
Focus#
| Keys | Does |
|---|
Tab | Focus the band, the activity, the composer (and the pages under 120 columns) |
Shift-Tab | Move the overlay's focus back |
Runs#
| Keys | Does |
|---|
Ctrl-F / Ctrl-Space | Hint mode: a letter opens an agent, a digit a run (not forward-char: Right moves the caret) |
Alt-1 | Switch to the first run tab as drawn |
Alt-2 | Switch to the second run tab as drawn |
Alt-3 | Switch to the third run tab as drawn |
Alt-4 | Switch to the fourth run tab as drawn |
Act#
| Keys | Does |
|---|
o | Show every raw operation instead of the grouped activity, and back |
x | Stop the agent the overlay shows (asks to confirm); only while the composer is empty |
y / a / Y / A / d / D / n | y/a once, Y this run, A always the family, d deny, D deny + stop, n next; only while the composer is empty |
Enter | In the composer, steer only this agent; on a group, expand it; on the band, the card |
Alt-Enter | Queue the draft instead of sending it |
Ctrl-N | Open the next approval or question waiting on you |
Layers#
| Keys | Does |
|---|
Ctrl-P | Command palette; pressed again it keeps the palette and its query |
Ctrl-G | Runs dashboard; the same chord closes it |
Ctrl-B / Alt-I | Side panel: full, compact, hidden (strip or off under 120 columns) |
Alt-H / Alt-Shift-H / Ctrl-Alt-H / Ctrl-Alt-Shift-H | Narrow the inspector dock (add Ctrl for a bigger step) |
Alt-L / Alt-Shift-L / Ctrl-Alt-L / Ctrl-Alt-Shift-L | Widen the inspector dock (add Ctrl for a bigger step) |
Alt-0 / Alt-Shift-0 / Ctrl-Alt-0 / Ctrl-Alt-Shift-0 | Reset the inspector dock to its default width |
Edit#
| Keys | Does |
|---|
Ctrl-O / Ctrl-J / Shift-Enter | Insert a line break without sending (Ctrl-O or Ctrl-J) |
Ctrl-X | Edit the draft in $VISUAL or $EDITOR; saving and quitting brings it back |
Ctrl-A | Move to the start of the line |
Ctrl-E | Move to the end of the line |
Ctrl-W | Delete the word before the cursor |
Ctrl-Z | Undo the last edit |
Ctrl-Shift-Z | Redo (needs a terminal that reports Ctrl-Shift) |
Session#
| Keys | Does |
|---|
F1 | The keyboard help sheet; the same key closes it |
Esc | Back to the chat, at the same scroll and with the same draft |
Ctrl-C | Clear the draft, else stop the turn; twice with nothing to stop quits |
Hint mode (Ctrl-F)#
Runs#
| Keys | Does |
|---|
Ctrl-F / Ctrl-Space | Pressed again: the next request waiting on you (as Ctrl-N) |
s / f / g / h / j / k / l / w / e / r / t / u / i / o / p | Open the agent with this badge in the overlay (two letters past 15 agents) |
1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 | Show the run with this number in the chat |
0 | The runs dashboard (as Ctrl-G) |
Alt-1 | Switch to the first run tab as drawn |
Alt-2 | Switch to the second run tab as drawn |
Alt-3 | Switch to the third run tab as drawn |
Alt-4 | Switch to the fourth run tab as drawn |
] | Next inspector tab while the inspector is visible |
[ | Previous inspector tab while the inspector is visible |
Act#
| Keys | Does |
|---|
Alt-Enter | Queue the draft instead of sending it |
Layers#
| Keys | Does |
|---|
Ctrl-P | Command palette; pressed again it keeps the palette and its query |
Ctrl-G | Runs dashboard; the same chord closes it |
Ctrl-B / Alt-I | Side panel: full, compact, hidden (strip or off under 120 columns) |
Alt-H / Alt-Shift-H / Ctrl-Alt-H / Ctrl-Alt-Shift-H | Narrow the inspector dock (add Ctrl for a bigger step) |
Alt-L / Alt-Shift-L / Ctrl-Alt-L / Ctrl-Alt-Shift-L | Widen the inspector dock (add Ctrl for a bigger step) |
Alt-0 / Alt-Shift-0 / Ctrl-Alt-0 / Ctrl-Alt-Shift-0 | Reset the inspector dock to its default width |
Session#
| Keys | Does |
|---|
? / F1 | The keyboard help sheet; the same key closes it |
Esc | Leave hint mode; hint keys never answer a request |
Backspace | Take back the first letter of a two-letter badge |
Ctrl-C | Clear the draft, else stop the turn; twice with nothing to stop quits |
Settings#
F2 or /settings (also /config, /prefs) opens Settings over the shell; /settings <words> opens it at the matching section or setting. Esc goes back one level and closes Settings at a section page; q closes it from anywhere. The letters below act on the focused row, and the footer lists only the letters that row answers to, in its own words (t test the connection, R restart now). With the vim keymap j, k, g g and G also move. Ctrl-C clears a text, then cancels; on a page it closes Settings, and a second Ctrl-C quits as in the shell.
Every key except Esc, Enter, the arrows, Ctrl-C, ?/F1 and Ctrl-S can be changed on Settings › Keys & input (stored in cli.json's keys). If a change leaves you without a way back, run ncode config reset terminal.keys in a shell.
Settings: browsing the rail and the pages#
Settings#
| Keys | Does |
|---|
↑ | The row above (the result above, the option above) |
↓ | The row below (the result below, the option below) |
PgUp | One page up; in a number editor one big step up |
PgDn | One page down; in a number editor one big step down |
Home | The first row; in a text editor the start of the line |
End | The last row; in a text editor the end of the line |
← | Back to the rail or step down (an enum or a number on its row; in text the caret left) |
→ | Open the section or step up (an enum or a number on its row; in text the caret right) |
Shift-← | A number one big step down (Shift-Left) |
Shift-→ | A number one big step up (Shift-Right) |
[ | The section above on the rail |
] | The section below on the rail |
Tab / Shift-Tab | Tab and Shift-Tab walk the rail, the page and the detail (the tabs of the cleanup wizard) |
Ctrl-F | Letter badges on the rail; the badge's letter opens that section |
Esc / q / F2 | Esc goes back one level and closes Settings at a section page; q and F2 close Settings |
Enter | Open, edit or run the focused row (choose the option, press the focused button) |
Space | Flip a toggle, a switch or a checklist item |
/ | Search every setting; in a list of more than 20 rows, filter the list |
: | The command line: :set key value, :reset key, :go section |
? / F1 | Every key of this page; the same key closes it |
i | The detail of the focused row (a page of its own on a small terminal) |
Ctrl-R | Reload this page from the saved settings and cli.json |
Ctrl-N | Close Settings and go to the run that waits for you |
Ctrl-C | Clear the text, then cancel; on a page close Settings (twice quits, as in the shell) |
Ctrl-S | Create the record being drafted; commit a multi-line text |
Ctrl-X | Edit the text or the file in your editor (terminal.editor, VISUAL, EDITOR) |
u / Ctrl-Z | Undo the last change made here (not a key: those are never kept) |
U / Ctrl-Y | Redo what undo took back |
r | Reset to the default (revert a staged field) |
R | Restart an MCP server now; reload the project file |
a | Add a record or a list item |
+ | Key bindings: capture an additional key (4 at most) |
x / Del | Delete the focused item (asks when it cannot be undone) |
D | Delete the record this page shows (asks) |
X | Remove every item of a list; unbind every key of a binding (asks) |
K / Shift-↑ | Move the focused item up an ordered list |
J / Shift-↓ | Move the focused item down an ordered list |
t | Test the connection, the key or the command |
f | Fetch the provider's models |
o | An MCP server's output; a file's or a path's folder |
c | Cancel the task running on the focused row |
y | Copy the setting's key or the path (never a secret) |
n | Library: a new command, skill, agent definition or workflow file |
C | Memory: clear the file (asks) |
e | Edit the file in your editor (as Ctrl-X) |
A | MCP tools: every tool on; storage sessions: pick every one shown |
N | MCP tools: every tool off |
s | The row's second action: treat as secret, sort, save it anyway |
g | A search result's section (vim: g g is the first row) |
Settings: the search row and the : command line#
Settings#
| Keys | Does |
|---|
↑ | The row above (the result above, the option above) |
↓ | The row below (the result below, the option below) |
PgUp | One page up; in a number editor one big step up |
PgDn | One page down; in a number editor one big step down |
Home | The first row; in a text editor the start of the line |
End | The last row; in a text editor the end of the line |
← | Back to the rail or step down (an enum or a number on its row; in text the caret left) |
→ | Open the section or step up (an enum or a number on its row; in text the caret right) |
Enter | Open, edit or run the focused row (choose the option, press the focused button) |
F1 | Every key of this page; the same key closes it |
Ctrl-N | Close Settings and go to the run that waits for you |
Ctrl-C | Clear the text, then cancel; on a page close Settings (twice quits, as in the shell) |
Esc | Cancel the editor (the old value stays); clear the search, then leave; close once |
Tab | Complete a key, a path, a model, an env name or an @filter |
Ctrl-A | The caret to the start of the line |
Ctrl-E | The caret to the end of the line |
Ctrl-W | Delete the word before the caret |
Ctrl-U | Delete everything before the caret |
Backspace | Delete the character before the caret |
Del | Delete the character after the caret |
Settings: a value being edited#
Settings#
| Keys | Does |
|---|
PgUp | One page up; in a number editor one big step up |
PgDn | One page down; in a number editor one big step down |
Home | The first row; in a text editor the start of the line |
End | The last row; in a text editor the end of the line |
← | Back to the rail or step down (an enum or a number on its row; in text the caret left) |
→ | Open the section or step up (an enum or a number on its row; in text the caret right) |
Shift-← | A number one big step down (Shift-Left) |
Shift-→ | A number one big step up (Shift-Right) |
F1 | Every key of this page; the same key closes it |
Ctrl-C | Clear the text, then cancel; on a page close Settings (twice quits, as in the shell) |
Ctrl-S | Create the record being drafted; commit a multi-line text |
Ctrl-X | Edit the text or the file in your editor (terminal.editor, VISUAL, EDITOR) |
Esc | Cancel the editor (the old value stays); clear the search, then leave; close once |
Enter | Save the value (a new line in a multi-line text: Ctrl-S saves) |
Tab | Complete a key, a path, a model, an env name or an @filter |
Ctrl-A | The caret to the start of the line |
Ctrl-E | The caret to the end of the line |
Ctrl-W | Delete the word before the caret |
Ctrl-U | Delete everything before the caret |
Backspace | Delete the character before the caret |
Del | Delete the character after the caret |
Settings: pasting a key#
Settings#
| Keys | Does |
|---|
F1 | Every key of this page; the same key closes it |
Ctrl-C | Clear the text, then cancel; on a page close Settings (twice quits, as in the shell) |
Esc | Cancel the editor (the old value stays); clear the search, then leave; close once |
Enter | Check the pasted key and save it |
Ctrl-U | Drop what was pasted |
Ctrl-T | Type the key instead of pasting it (never shown) |
Settings: capturing a key (Key bindings)#
Settings#
| Keys | Does |
|---|
Ctrl-C | Clear the text, then cancel; on a page close Settings (twice quits, as in the shell) |
Settings: a picker#
Settings#
| Keys | Does |
|---|
↑ | The row above (the result above, the option above) |
↓ | The row below (the result below, the option below) |
PgUp | One page up; in a number editor one big step up |
PgDn | One page down; in a number editor one big step down |
Home | The first row; in a text editor the start of the line |
End | The last row; in a text editor the end of the line |
Enter | Open, edit or run the focused row (choose the option, press the focused button) |
F1 | Every key of this page; the same key closes it |
Ctrl-C | Clear the text, then cancel; on a page close Settings (twice quits, as in the shell) |
Esc | Cancel the editor (the old value stays); clear the search, then leave; close once |
Ctrl-W | Delete the word before the caret |
Ctrl-U | Delete everything before the caret |
Backspace | Delete the character before the caret |
Del | Delete the character after the caret |
Settings: a confirmation, the key help or the leave question#
Settings#
| Keys | Does |
|---|
↑ | The row above (the result above, the option above) |
↓ | The row below (the result below, the option below) |
← | Back to the rail or step down (an enum or a number on its row; in text the caret left) |
→ | Open the section or step up (an enum or a number on its row; in text the caret right) |
Enter | Open, edit or run the focused row (choose the option, press the focused button) |
Ctrl-C | Clear the text, then cancel; on a page close Settings (twice quits, as in the shell) |
Esc | Cancel the editor (the old value stays); clear the search, then leave; close once |
Backspace | Delete the character before the caret |
Tab | The next button (focus stays inside the popover) |
Shift-Tab | The previous button |