The message queue separates steering (executed during agent work) from follow-up messages (executed after), with each delivery mode offering one-at-a-time or bulk queueing; messages are browsable and editable before dispatch. The editor supports file search via @, image paste via Ctrl+V, and bash integration through !command (output sent to LLM) and !!command (run locally), plus Shift+Enter for newlines.
The message queue supports two delivery modes: Enter queues a steering message (delivered after current tool calls finish), and Alt+Enter queues a follow-up message (delivered only after all agent work finishes).[1] steeringMode and followUpMode settings can be "one-at-a-time" (default — waits for response before delivering the next) or "all" (delivers all queued messages at once).[1]
Queued messages can be browsed individually with Alt+Up / Alt+Down; while browsing, Enter applies the edit as steering input and Alt+Enter applies it as a follow-up. Submitting an empty edit deletes the item.[1] queue-selection.ts is the single source of truth for the interactive mode's queue state; interactive-mode.ts reads derived state from it rather than maintaining its own copy, preventing sync bugs that caused stale queue counts and incorrect hint placement. 4509-side-questions.test.ts and 4741-hint-placement.test.ts are regression tests guarding against queue-state sync failures in the interactive mode's render pipeline.
The editor's @ prefix triggers fuzzy file search, Tab completes paths, Shift+Enter (or Ctrl+Enter on Windows Terminal) inserts a newline, Ctrl+V pastes images (Alt+V on Windows), and !command sends bash output to the LLM while !!command runs without sending.[1] custom-editor.ts (packages/tui/src/components/editor.ts) overrides the base editor.ts key handler; any key handler in custom-editor.ts must explicitly pass through keys it does not intend to intercept. A bug in custom-editor.ts caused the Down Arrow key to be consumed even when the cursor was not on the last line, blocking downward navigation inside multi-line drafts; the fix restores default cursor-movement behavior for Down Arrow during prompt composition. prompt-stash-state.ts (interactive mode package) saves and restores the editor buffer when transitioning between the editor and agents view, preventing silent data loss when navigating away from in-progress drafts. interactive-mode.ts stashes the draft when opening the agents view and restores it on return; behavior is covered by interactive-mode-prompt-stash.test.ts. On terminals that emit raw \n for Shift+Enter, custom-editor.ts and interactive-mode.ts normalize the key event before the send-or-newline branch, ensuring the editor inserts a newline instead of submitting the prompt.
Sources