Keybindings & cursor mode¶
A reference for every key kin binds — in the composer, globally, in cursor (browse) mode, and inside the modals. Press F1 in the app for the same map as an overlay.
Composer keys¶
The composer is a multi-line text field. Sending is the dominant action, so Enter sends and Shift+Enter inserts a newline.
| Key | Action |
|---|---|
| Enter | Send the message (queues if a turn is already running) |
| Shift+Enter | Insert a newline for multi-line editing |
| Ctrl+S | Send (an alias of Enter for muscle memory) |
/ |
Open the slash-command menu |
@ |
Open the file-mention picker |
!<command> |
Run <command> in a real shell instead of sending it to the model — see the tip below |
! shell passthrough
!git status (or any shell command) runs immediately in your shell — no
model turn involved. The output shows up right in the transcript, and a
summary (command + exit code + output) rides into the model's context on
your next turn, so it can react to what you just ran. Only works while
kin is idle (a running turn or /compact refuses it with a notify); the
command runs with your full environment (real credentials, so !gh pr
list and !git push work) and is never something the model can trigger
itself — only a literal ! you type. Bare ! with nothing after it is
sent to the model as ordinary text. See
docs/decisions/0075-shell-passthrough.md
for the full design.
Tip
With the composer empty or on a single line, Up and Down recall your previous prompts. The recalled text replaces the buffer with the caret at the end; edits stay transient until you submit.
Ctrl+R: search your history
Ctrl+R opens a search overlay over the same history ↑/↓ recalls linearly — type to filter (substring, case-insensitive), Up / Down move the highlight, Enter copies the match into the composer, Esc closes without changing anything, and pressing Ctrl+R again while the overlay is open steps to the next-older match (readline muscle memory). The search is in-memory only for this session — nothing is written to disk. See Slash commands for the composer's other overlays.
Global keys¶
These work anywhere in the app (a few are suppressed while a modal owns the screen, so you can't, for example, flip mode behind an open approval prompt).
| Key | Action |
|---|---|
| Shift+Tab | Toggle the permission mode: auto ↔ strict |
| Esc | Interrupt the running turn; exit cursor mode |
| Esc Esc | On an empty, idle composer (no turn running, no modal open): open the rewind picker — press again within ~1s of the first tap |
| Ctrl+B | Enter cursor / browse mode (composer must be empty) |
| Ctrl+R | Search your prompt history — type to filter, Up / Down move the highlight, Enter inserts, Esc closes, Ctrl+R again steps to the next-older match |
| Ctrl+N | Expand or collapse all reasoning blocks |
| Ctrl+T | Expand or collapse all tool calls |
| Ctrl+F | Search the transcript — opens an overlay; type to filter, Up / Down or n / shift+n step, Enter jumps to a match, Esc closes |
| Ctrl+O | Open the agent panel (bg shells / agents (fg + bg subagents) / tasks); press again or Esc to close |
| Ctrl+G | Toggle the file-tree sidebar (also /tree) |
| Ctrl+J | Expand or collapse the pinned todo panel (click the title too) |
v (on the tree) |
Peek the focused file in a read-only viewer (also /view <path>) |
| ++pageup++ / ++pagedown++ | Scroll the transcript — or, with a modal open, that modal's own content (plan, help, proposal diffs) |
| Ctrl+Home / Ctrl+End | Jump to the top / bottom of the same scroll surface |
| F1 | Open the help overlay |
| Ctrl+C | Quit kin |
See Modes & permissions for what the Shift+Tab cycle changes.
Hover hints (tooltips)¶
Several chrome widgets advertise their function on hover so screen-reader users and the curious don't have to chase docs.
| Widget | Hover hint | Opens |
|---|---|---|
WorkflowCard (running) |
"click for the full run — /workflows" |
/workflows modal |
BgAgentsBar |
"background agents — Ctrl+O for the panel" | the agent panel |
RetryNote |
"re-send the failed request" | the redrive action |
TopBar |
"context meter · model · git branch" | — (informational) |
The composer placeholder also surfaces a compact hint set: enter sends ·
shift+enter newline · / commands · @ files · f1 help — the same voice as the
welcome banner's shortcut row and the idle status-bar hints.
Cursor / browse mode¶
Cursor mode lets you walk the transcript with the keyboard to read, copy, or expand individual items. Enter it from an empty composer with Ctrl+B (or Up once prompt history is exhausted) — the highlight lands on the last item. The composer must be empty; with text in it the key is left alone.
| Key | Action |
|---|---|
Up / Down or j / k |
Move between transcript items |
g / G |
Jump to the first / last item |
y |
Copy the focused item to the clipboard |
| Tab | Expand or collapse the focused item (reasoning / tool call) |
| Esc | Exit cursor mode and return to the composer |
Moving past the bottom returns you to the composer. Typing any other printable character drops you out of cursor mode and back into editing.
Modal keys¶
When the harness needs an answer it parks the turn and shows a modal. Each modal binds its own keys.
| Modal | Keys |
|---|---|
| Approval | a or bare Enter allow once (the focused default) · s allow always (this session — the button names the covered scope) · d or Esc deny · n deny with a note (the note rides back to the model as the denial reason; esc closes the note first) |
Confirm (e.g. /clear) |
y confirm · n or Esc cancel · bare Enter cancels too (Cancel is the focused default — confirming a destructive action is always explicit) |
| Question (single-select) | Up / Down select · Enter pick · Esc cancel |
| Question (multi-select) | Space toggle · Enter or Submit · Esc cancel |
| Question (other / free text) | type into the field · Enter submits |
| Plan | Up / Down select · Enter choose · Esc keeps planning |
| Providers | Up / Down pick provider · Up / Down model (when picker active) · Enter save · Esc cancel |
Model picker (bare /model) |
Up / Down pick · f toggle favorite · Enter pick · Esc cancel |
MCP manager (/mcp) |
a add · e or Enter edit · d / x enable-disable · t test · Del remove · Ctrl+S save · Esc cancel |
Effort picker (bare /effort) |
Up / Down pick · Enter pick · Esc cancel |
Config hub (/config) |
Up / Down select · v view current (singletons) · Enter edit · Esc cancel |
Proposal (artifact-edit diff, /settings change) |
a or Enter apply · d or Esc reject |
Workflows (/workflows) |
Up / Down pick a run · Esc close |
| Grants | Up / Down select · d arms a revoke · y confirm · n / Esc cancel |
| Resume picker | Up / Down select · Enter resume · Esc cancel |
| Rewind picker (double-Esc) | Up / Down select · Enter picks a turn, then a scope · Esc cancels (either stage) |
| Agent panel | Tab cycle the focused pane (shells → agents → tasks) · x kill / dismiss (works on running fg rows too) · o open raw buffered output · Enter open the agent's rich transcript (TranscriptModal — falls through to read-only output for shell/task rows) · Esc close |
| Help | Esc or F1 close |
| Read-only viewer (file peek / agent output) | Esc or q close |
| Transcript modal (agent transcript peek) | Esc or q close |
The approval modal's s ("always") remembers the call's signature for the rest
of the session, so calls that match it stop prompting — review and revoke those
with /grants. Permission decisions are covered in
Modes & permissions.