Keybindings Reference

All agent-shell keybindings are available in two forms:

  • In-buffer: C-c <key> — short form, only inside agent-shell buffers
  • Global: C-c A <key> — works from any buffer

The C-c A prefix is labelled "Agent" in which-key.

Session Management

In-bufferGlobalAction
C-c sC-c A sSession picker (live + saved + new)
—C-c A gGrep sessions (full-text search across all history)
C-c qC-c A qQuit session (saves automatically)
C-c hC-c A hView history (current session or pick)
C-c HC-c A HView history (always pick)
C-c rC-c A rRename buffer
—C-c A aStart / switch to agent
—C-c A nForce new session
—C-c A kInterrupt agent
C-c bC-c A bSwitch agent buffer (live only): sessions that need you first (⚑, in jump order), then the rest as before, each with the sidebar's state glyph and colour

Network-Failure Recovery

When the link drops, every in-flight session dies the same way at the same moment: the turn ends having printed one line (API Error: Unable to connect to API (ECONNRESET)) and then settles, so without help each one reports a cheerful ready and sits in the sidebar looking like it finished its work.

Sessions in this state report the netfail status — the ✗ glyph in the picker, the shared needs-you ⚑ in the sidebar, and first place in both attention orders — and these keys clear them all in one action rather than one at a time:

KeyAction
C-c s NReset every stranded session and send each a continue. Run this once the link is back. C-u widens it to every live session, for a failure whose evidence has already scrolled away.
C-c s C-nReset only — clears the flag and the stuck turn state without re-prompting, for when you would rather steer the sessions yourself.
C-c s M-nList which sessions died, and on what.

Both bulk commands rescan before acting, so a session that recovered on its own is never re-prompted, and idle sessions are prompted immediately while busy ones are queued — a returning link is not saturated by every session at once.

Detection deliberately refuses to flag an agent that merely discusses a network error (the retry sends a prompt, so a false positive would interrupt healthy work): the line must be a reported error, carrying a transient fault (errno, socket/fetch failure, or 408/429/5xx — never a 401 or 400), and the turn must have ended on it. Extend decknix-agent-net-error-transient-regexp for an agent whose wording differs.

In-Picker Keys

Every session-facing picker (C-c A s, C-c A b, C-c A g) prefixes each row with a provider glyph — A Auggie, C Claude, P Pi — and shares a set of picker-local action keys:

KeyAction
M-a / M-c / M-pToggle visibility of Auggie / Claude / Pi rows (filter is shared across all three pickers; not persisted)
M-wToggle workspace filter (all workspaces ↔ the calling buffer's workspace); active filter shows in the prompt as [~/path/to/ws]
C-SPCMark row for batch action
C-kKill highlighted live session buffer(s)
C-dDelete saved / previous session from disk and metadata
C-uExpand (per-picker; e.g. C-u C-c A s shows every saved snapshot instead of one-per-conversation)

Input & Editing

KeyAction
C-c e / C-c A eCompose buffer (multi-line editor)
RETSend prompt (at end of input)
S-RETInsert newline in prompt
C-c C-cInterrupt running agent
C-c EInterrupt agent and open compose buffer
TABExpand yasnippet template

In Compose Buffer

KeyAction
C-c C-cSubmit composed prompt
C-c C-kCancel / close compose buffer
C-c C-sToggle sticky (stays open) vs transient
C-c k kInterrupt agent
C-c k C-cInterrupt agent and submit
M-pPrevious prompt (history)
M-nNext prompt (history)
M-rSearch prompt history (consult)

Templates (C-c Y / C-c A t)

In-buffer, snippet insertion is handled by the upstream C-c Y ("+snippet") prefix — no decknix-specific in-buffer binding. The agent-namespaced C-c A t global prefix is preserved for explicit, namespaced access.

KeyAction
C-c YSnippet prefix (upstream) — insert / new / visit
C-c A t tInsert a prompt template
C-c A t nCreate new template
C-c A t eEdit existing template

Commands (C-c c / C-c A c)

KeyAction
cPick & insert a slash command
nCreate new command
eEdit existing command
rReview PR by URL (quick action; launches in the pr-review purpose's auto mode)
BBatch process (multi-session launcher)
lLink PR to session
LLink repo+branch to session (direct-push repos)
uUnlink PR or repo (single picker)

Tags

Conversation-scoped tags (add / remove / list for this session) are now nested under the session sub-prefix at C-c s t. Global tags (rename / delete / cleanup across all sessions) remain at C-c A T.

Conversation-scoped (C-c s t)

KeyAction
aAdd tag (create or select)
rRemove tag
lList this session's tags
sReplace this session's tags
RRename a tag on every session (same as C-c A T e)
DDelete a tag from every session (same as C-c A T d)

Global (C-c A T)

KeyAction
lList / filter by tag
eRename a tag (M-x decknix-agent-tag-rename)
dDelete tag globally (M-x decknix-agent-tag-delete)
cCleanup orphaned tags

Rename and delete pick from the existing tags with a usage count beside each, say how many conversations they will change, and confirm first. They cover live and saved sessions in one write, so buffer names and the sidebar refresh once. Renaming onto a tag that already exists merges the two. A conversation left with no tags keeps its sessions and workspace.

There is no separate list of known tags: completion is built from the tags sessions carry, so removing a tag from the last session that has it removes it from completion as well. r says when that happened, or how many other conversations still carry it.

Saved Layout (C-c D w / C-c D W)

Frames, tabs and windows, including which agent session each window showed, are saved on exit and every five minutes, and offered back on the first frame after a daemon restart. C-c D w saves now; C-c D W restores and resumes the sessions (C-u for the run before the last). See Emacs: restoring frames and windows.

Trigger sidebar transients without switching focus away from the agent-shell buffer. C-c W opens decknix-sidebar-transient — the same parent menu that the sidebar's ? / h opens — exposing Navigate / Quick / Actions plus T for the toggles sub-transient.

KeyAction
C-c WOpen sidebar action transient
C-c W TToggles transient (filters, sort, indicators)
C-c wToggle the workspace tab itself (unchanged)

Every session blocked on you (netfail, waiting, asking) is listed first, under Needs you, in the order j visits them and with how long each has waited, whichever section it would otherwise sit in. A review session whose PR has since merged or closed is still listed, dimmed and marked PR gone: it is still waiting on a prompt, though the answer is usually to close it. Under each, one dimmed line says what it is asking: the permission it wants, or the question its last turn ended on, followed by the reply it expects (reply 1-3, rec 1, reply yes/edit/cancel, reply yes/no) when y or a digit can send it. The header line opens with the same count.

Pressed inside the Agents sidebar itself. The header line names the few keys that do most of the work, dropping hints from the right as the sidebar narrows; ? is always the last to go, and opens the full reference.

KeyAction
jMove to the next session that needs you (netfail, then waiting, then asking, then the longest wait); again for the one after
JGo straight to that session
iWhat the session at point is asking: its state and wait, the question, its whole last message and the tail of the session. RET there goes to it
yAnswer the session at point "yes", when it asks yes/no or offers yes among its words. Always asks first, naming the session and the exact text
1-9Send that option's number to the session at point, when its question ends in a numbered list (CHOOSE ONE). Confirms first, showing the option; refused when the list has no such number
n / pNext / previous row that has an action, skipping headers and counts
oRestore a previous session (was p)
RETSession rows: go to the session. Reviews PR rows: go to the session covering the PR, ask which when several do, or open the PR's action menu when none does
M-RETPrimary action: open the row's PR in the browser
TABExpand or collapse the Reviews group, or held items, at point
AReviews: only what wants you, or everything
KSub-agents: only running and active ones (default), or finished ones too. Hidden, a session whose sub-agents have all finished takes no row
FFocus the sidebar on one board (a pilot, a hackathon): only its sessions, PRs, worktrees and repos. F again clears it, C-u F switches board. A dim +N need you elsewhere row counts what the focus hides. Survives restarts
NNew session for the repo, worktree or PR at point
GRepo-sync action for the row at point
TToggles
? / hEvery sidebar key

Review Board Keys

C-c s B opens the Review Board: every live review session and every review request, in lanes. Each session row leads with where its review is in /review-service-pr, which assesses the PR, stops at a confirmation gate, then posts once you answer:

GlyphPhaseMeaning
⚑awaiting youThe plan is presented. The row shows the verdict and the reply wanted, e.g. APPROVE · reply 1-3, rec 1. Listed under Needs you
⚑asking / permission / netfailBlocked on you for anything else
◐assessingReading the PR; you have not answered it yet
◐revisingChanging the plan after you asked for an edit
◑postingActing on your go-ahead, with the verdict being posted
●actionedSettled after your go-ahead without reporting a review link (a failed submit looks like this); i to see
✓postedThe review is on GitHub (the session linked it, or the feed has your review). Filed under Finished
●idleSettled, nothing in flight
KeyAction
n / p, TABNext / previous row
RET / oOpen the PR in the browser
iInspect: the session's state, phase and last lines, or the PR detail
jGo to the session
ySend "yes" to the session at point, when it asks yes/no or (yes / edit / cancel). Always confirms first
1-9Send that number to the session at point, when it offers a numbered choice. Confirms first, naming the option and the verdict at stake; refused when out of range
m / u / U / MMark, unmark, unmark all, mark the lane
dDispatch review sessions for the marked rows
k / DQuit (terminating the broker) or detach the marked sessions
sMerge via /merge-train, behind a manifest (C-u s dry run)
rReview PR url(s) pasted from anywhere
A / x / fCycle auto-review, toggle auto-dismiss, toggle filters
g / ?Refresh / full help

The reply keys act on the row at point only, never the marked set: one key answering several gates would post several reviews. The board also repaints itself a second after any session's turn ends or starts, so a review reaching its gate moves to Needs you without waiting for the reviews feed.

Coordination Boards (C-c s H)

C-c s H opens a board (C-u C-c s H, or no boards yet: define one). See Coordination Boards.

KeyAction
n / p, TABNext / previous row; fold the item
RET / oGo to the item's session, else open the item / always open it
NNew session for the item, tagged REPO#N and briefed
j / bGo to the item's session / message its sessions (C-u b: all)
cCreate a child issue (confirms first)
sDraft a Slack update; C-c C-c sends after confirming
g / e / ?Refresh / edit definition / every key

RET or o on a row of the board's Open PRs section opens that PR.

Model & Mode

In-bufferGlobalAction
C-c C-v—Pick model (persists per-conversation; survives resume)
C-c C-m—Pick permission mode (persists per-conversation; survives resume/fork)

See Model Selection for the recommended-model-by-task table and the per-purpose (programs.emacs.decknix.agentShell.purposes) / framework (decknix.cli.auggie.settings.model) override levers.

Context (C-c i / C-c A i)

KeyAction
iList tracked issues
pList tracked PRs
cShow CI status
rShow review threads
aPin issue/PR to context
dUnpin from context
gOpen in browser
fVisit in forge
In-bufferGlobalAction
C-c IC-c A IFull context panel

Extensions

In-bufferGlobalAction
C-c mC-c A mManager dashboard toggle
C-c wC-c A wWorkspace tab toggle
C-c jC-c A jJump to the next session that needs you: netfail, then waiting, then asking, oldest wait first. Repeat to walk the queue; C-u to choose. Selects the tab already showing the session. Global even when the sidebar is focused on a board, unless decknix-attention-respect-focus is set; C-u C-u inverts that for one jump
—C-c A SMCP server list

Help

In-bufferGlobalAction
C-c ?C-c A ?Full keybinding reference (this page, in Emacs)