essential key bindings in the composer + transcript
Keyboard shortcuts
#Press Ctrl+G any time for this cheatsheet as an overlay.
Compose
#- Enter — send · Ctrl+J — newline. Shift+Enter inserts one too, but only in a terminal that reports it separately (kitty's keyboard protocol, or
modifyOtherKeys); most send the same byte for Enter and Shift+Enter, so there it sends the message. - Shift+Tab — cycle permission mode (default → acceptEdits → plan → auto)
- / — command palette · @path — attach one exact bounded file (
@"path with spaces") - ! command — run a bounded direct shell command · # note — atomically save project memory
- /memory add TEXT — save project memory · /memory add user TEXT — save personal memory
- Ctrl+R — recall a past prompt · Tab / → — accept the ghost suggestion
- Ctrl+Y — copy the last reply to your clipboard (works mid-turn) · /copy code — its code block
- Paste — a tall paste folds to a chip, a lone URL becomes a pill, and characters you cannot see are counted. See Pasted text.
This turn
#- Esc — stop the turn · Ctrl+C — cancel · clear draft · quit
- Enter — steer native work at the next model/tool boundary; subscription follow-ups queue
- Tab — queue a separate turn while working, outside menus and completion
- /skills and /skills show NAME — browse the current catalog without stopping work
- /mode MODE — change native permission decisions during work; explicit ask/deny rules remain
Unconsumed terminal follow-ups remain queued after interruption; a new prompt continues the queue. In the editor, Enter steers and Alt+Enter or Queue submits a later turn. Unapplied steering can be restored to the draft. Subscription CLI mode changes apply to the next launched turn.
A message sent mid-turn says what became of it, on its own line under the bubble (under, not in: what became of a message is not something you said): steering … while the backend holds it, queued for the next turn if the turn would not take it, and steered — the model has read this at the moment it actually reaches the model. Until then the only sign was a screen-reader-only label, so a sighted user had none.
Files pane (/files)
#- j / k · ↑ ↓ move · h / l · ← → parent / enter · gg / G top / bottom · H / L back / forward
- Space select · v visual select · Ctrl+A all · Esc clear selection, filter, or help
- y / x / p copy / cut / paste · P paste overwriting · a new (end with
/for a folder) · r rename - d trash · D delete permanently · u undo the last change
- f filter · / find, n / N next / previous · . hidden files · s / S sort / reverse
- Enter insert
@pathinto the prompt · c insert the plain path · i / Tab inspect · J / K scroll the preview - ? all keys · q return to DGC · Ctrl+C still stops the agent
Diff pane (/diff)
#- j / k · ↑ ↓ move · Enter / l open the diff under the cursor · h / Esc back to the file list
- Space / v start or end a line selection · Enter attach the selection to your prompt · a attach the whole hunk
- J / K next / previous file without leaving the diff · g / G top / bottom · PgUp / PgDn page
- r re-read git now · Tab list ⇄ diff on a narrow terminal · ? all keys · q return to DGC
Navigate
#- PageUp / PageDn — scroll the transcript · End — jump to the latest
- click ◆ Thought — expand the reasoning · click the token count — context details
Copy text
#DGC owns its screen, so it can copy without you selecting anything, from any position, even while a turn is still running. The text goes to your system clipboard through the terminal (OSC 52), which works over SSH and inside tmux with set-clipboard on.
- Ctrl+Y or /copy — the last reply · /copy code — its last fenced code block
- /copy 2 — the reply before that · /copy all — the whole conversation as Markdown
- /export — save the conversation as Markdown (
~/.dgc/exports/, or/export PATH)
If you would rather drag-select with the mouse: DGC captures the mouse so the wheel scrolls its own transcript and rows stay clickable, and that capture is what stops your terminal's own selection. /select hands the mouse back for this session (PageUp/PageDn still scroll), and /mouse off remembers that choice. Shift+drag (Option+drag on some terminals) selects without leaving scroll mode at all, where the terminal passes the modifier through.
Session
#- Ctrl+N — new session · /resume — reopen a past one · /name — rename
- /new DIR — an agent in another folder (see Multiple agents)