Feature Reference

Keybindings, header fields, states, exit codes and configuration for ait frozenagent

Keybindings

Every key below can be rebound — press ? for the in-place editor, or open Settings → Shortcuts.

KeyActionNotes
rToggle ANSI replay / plain textViewer mode only
mRender the capture as MarkdownSelected range if any, else the whole capture
/Open the search boxViewer mode only
nJump to the next matchWraps, and says so
EscapeClose the search box, else clear the selection
shift+↑ / shift+↓Extend a line range from the cursor
yCopy the selectionKeyboard range first, else the mouse selection
g / GJump to the top / bottom
RRestore the agentNo confirmation
pRe-pick the taskNo confirmation; needs a task id on the record
kDrop the recordConfirms — this deletes the capture
EnterOpen the highlighted recordList mode only
jTUI switcher
?Shortcut editor
qQuit

The footer advertises only Keys, Quit, Plain/ANSI, Markdown, Search, Copy, Restore, Re-pick and Drop; the rest are bound but unlisted.

While an operation is in flight on a record, that record’s R, p and k are disabled rather than queued.

Header fields

Seven fields joined by ·, in this order:

FieldEmpty value
Project root, shortened
tmux window name
Task (t<id> plus its title)(no task)
Agent string(agent unknown)
frozen <timestamp>falls back to the record’s state
<n> lines
State, or the note currently overriding it

Trailing markers: \[plain], \[colour unavailable — showing plain text]. State suffixes: · capture missing, · colour data missing.

In list mode the header is frozen records: <n> instead.

States shown

The viewer prints the record’s state from the session store verbatim. The vocabulary is live, freezing, frozen, restoring and aborting — a frozen record you are reading normally shows frozen, and the transitional values appear while an operation is settling.

Outcomes are sentences rather than states:

MessageCaptureMeaning
restoreddeletedthe resumed agent confirmed itself
restored, unverified — capture keptkeptrunning, but unconfirmed — a success
restore failed: <reason> — capture keptkeptthe attempt failed; the viewer is back
restore ended — capture keptkeptended with no recorded reason
restore did not start — run 'ait frozenagent' or reconcilekeptnothing was dispatched
restore still <state> after the grace — run reconcile; capture keptkeptstill transitional
record vanishedthe record is gone
dropped — capture removeddeleteddrop succeeded
drop failed — record keptkeptnothing was deleted

A viewer that returns after a failed restore shows the store’s memory of it: last restore failed: <reason> — capture kept.

Exit codes

CodeCause
0Normal quit
1Missing Python packages, or an interpreter older than the framework requires — both say to run ait setup
2Bad arguments (usage: ait frozenagent [--record <id>]), or frozenagent: unknown record <id>

Configuration

Two keys under a frozen: block in aitasks/metadata/project_config.yaml affect frozen agents. No frozen: block ships by default, so both defaults apply unless you add one.

KeyDefaultEffect
capture_max_lines50000How far back into the pane’s scrollback a freeze reaches. The capture is the tail of the scrollback, so a pane with more history than this keeps only its most recent lines
restore_ack_grace20 (seconds)How long a restore waits for the resumed agent’s SessionStart hook to acknowledge it, before falling back to confirming on liveness alone

restore_ack_grace is read from the record’s own project, not from whichever project you happen to be viewing from, because a freeze-all spans projects.

It sets a waiting period, not an outcome. Raising it only helps an agent whose acknowledgement is slow to arrive; one that never acknowledges at all — because its CLI reports no session on startup, or because the session hook is not installed — reaches restored, unverified — capture kept however long the grace is. Nothing is lost in that case: the unverified outcome is the one that keeps the capture.

See also

  • Monitor and Minimonitor — where agents are frozen (f, Z) and frozen rows are listed, filtered and revived.