Codex Signal Reference¶
This page records the concrete visible Codex TUI signals the repository currently uses when tracking tmux-backed Codex surfaces reliably. It is intentionally closer to source than the higher-level parser and runtime contract pages.
Use it together with:
- Shared Contracts
- Codex
- Runtime Lifecycle The concrete examples here were confirmed from the maintained complex capture logged in 20260323-124129.md.
Scoping Rules¶
Codex tracking now uses two scopes at once. Before reading any individual signal, separate them correctly:
- Find the latest visible Codex prompt anchor line beginning with
›. - Walk upward to the previous visible Codex prompt anchor before the current prompt.
- Treat the region above the current prompt and back to that previous prompt as the latest-turn region.
- Separately, take the bounded live-edge tail from the latest visible non-empty lines on screen.
Current implementation note:
- The latest-turn region is still used for interruption, success context, and temporal transcript growth.
- The live-edge tail is used for current status-row and tool-cell activity.
- Full tmux scrollback may still be captured for parser and history use, but activity detection must not trust arbitrary historical rows above the live edge.
- When no current prompt is visible, Codex falls back to a bounded recent non-empty window rather than using the entire pane.
Reliable Signal Families¶
| Signal family | Concrete examples seen in captures | Used for | Reliability notes |
|---|---|---|---|
| Current prompt anchor | › Reply with the single word READY and stop., › Search this repository for files related to tmux and prepare a grouped summary. Think carefully before answering., › Reply with the single word RECOVERED and stop. |
latest-turn boundary, accepting-input, draft classification | The latest visible › line is the prompt anchor. Plain prompt payload means real draft text; dim prompt payload is placeholder; empty prompt means not editing. |
| Active status row | • Working (0s • esc to interrupt), • Working (47s • esc to interrupt) |
active evidence (status_row) |
This is the primary visible active cue for Codex when it is present in the live-edge tail. Old rows higher in scrollback are stale. |
| In-flight tool cell | • Calling ..., • Running ..., • Waited for background terminal · ... |
active evidence (tool_cell) |
Tool cells are also live-edge signals. They keep the turn active even if no Working row is visible. |
| Temporal transcript growth | later latest-turn region grows while the active status row is not visible yet | active evidence (transcript_growth) |
Codex can still be active before the status row stabilizes. The detector treats meaningful recent growth in the latest-turn region as temporal active evidence. |
| Response bullet | • READY, • RECOVERED |
settled success context | These bullet response lines are the visible success content in the maintained complex fixture family. |
| Interrupted-ready banner | ■ Conversation interrupted - tell the model what to do differently. Something went wrong? Hit /feedback to report the issue. |
ready/interrupted posture | This banner can wrap across multiple terminal lines. Normalize whitespace before judging it. |
| Prompt-adjacent terminal failure | red error blocks such as compact/server failures, or warning rows carrying overload/high-load/context-window style terminal semantics | current-error evidence, success blocker, known_failure for recognized terminal families, recoverable degraded chat context for compact/server signatures |
Only the bounded prompt-adjacent region counts. The matcher uses structural role plus essential semantic token families, not exact full-sentence literals. Long scrollback errors above the current prompt area are historical and must not degrade the current prompt state. |
| Live-edge retry or reconnect status | retry, reconnect, stream-recovery, or connection-loss status near the current prompt/live edge | active evidence (stream_retry_status) |
This is active current-turn evidence, not a ready-success return. Historical retry text outside the live edge must not keep a later prompt-ready turn active. |
| Completion marker | ─ Worked for ... |
completion context when visible | This is useful supporting success context, but current success tracking also depends on the prompt/ready posture and the absence of stronger blocking or active evidence. |
Signal Meanings Used Today¶
Ready placeholder¶
Typical surface:
- latest prompt anchor visible
- dim placeholder payload or empty prompt
- no current active status row
- no current interrupted banner
Tracker meaning:
surface_accepting_input=yessurface_editing_input=nosurface_ready_posture=yesturn_phase=readylast_turn=none
Ready draft¶
Typical surface:
- latest prompt anchor contains real plain-text user-authored input
- no current active status row
- no current interrupted banner
Tracker meaning:
surface_accepting_input=yessurface_editing_input=yessurface_ready_posture=yesturn_phase=ready- newer-turn authority clears stale
last_turn
Active turn¶
Typical surface:
- active status row visible in the live-edge tail
- or in-flight tool cell visible in the live-edge tail
- or a bounded retry, reconnect, stream-recovery, or connection-loss status is visible near the live edge
- or the latest-turn region is still growing across recent frames enough to satisfy temporal activity inference
Tracker meaning:
turn_phase=activelast_turn=none- retry/reconnect status uses active reason
stream_retry_status
Important reliability rule:
- Current activity checks are scoped to the live-edge tail, not the entire pane.
- Interrupted and success checks still use the latest-turn region.
- A stale interrupted banner visible above the current prompt must not override a later active or success turn once newer-turn authority exists.
- A stale
• Working (... esc to interrupt)row far above the prompt must not keep the turn active once the visible surface has returned to a prompt-ready posture. - A current retry or reconnect status remains active while visible, even if the parser or prompt area also looks submit-ready.
Active turn with overlapping draft¶
Typical surface:
- Codex still shows active status or temporal growth for the current turn
- a newer prompt line below already contains typed follow-up text
Concrete example from the complex capture:
- interrupted or older transcript content above
- current prompt below:
› Now search this repository for files related to terminal recording ...
Tracker meaning:
turn_phase=activesurface_editing_input=yes- visible newer draft still clears stale terminal state
Interrupted ready¶
Typical surface:
- wrapped or unwrapped interrupted banner text is visible in the latest-turn region
- current prompt is visible
- active status row is no longer visible
Tracker meaning:
turn_phase=readylast_turn_result=interruptedlast_turn_source=explicit_inputin the maintained interrupt workflow
Operational note:
- Normalize whitespace before matching the interrupted banner because Codex commonly wraps it.
Prompt-ready terminal failure¶
Typical surface:
- prompt-adjacent red error block or warning-style failure row is visible near the current prompt
- bounded text carries a recognized terminal failure family such as overload/high-load, context-window exhaustion, invalid prompt, quota exhaustion, or similar terminal semantics
- current prompt is visible, accepting input, not editing input, and not blocked by an overlay
Tracker meaning:
turn_phase=readycurrent_error_present=truesuccess_candidate=falseknown_failure=truefor recognized terminal failure families strong enough to publish that outcome- prompt-derived readiness is preserved when the composer is otherwise genuinely ready
Operational note:
- Warning rows are not terminal failures by default. They must be prompt-adjacent and carry the essential terminal semantics for a recognized family. Matchers should be maintained as semantic token families inside the Codex profile instead of exact upstream full sentences.
Prompt-ready compact/server error¶
Typical surface:
- prompt-adjacent red error cell is visible near the current prompt
- the bounded error text carries compact/server degraded semantics, such as compact plus stream, disconnect, server, or remote semantics
- current prompt is visible, accepting input, not editing input, and not blocked by an overlay
Tracker meaning:
turn_phase=readycurrent_error_present=truesuccess_candidate=falsechat_context=degradedchat_context_diagnostic.tool_name=codexchat_context_diagnostic.degraded_error_typeis Codex-scoped, for examplecodex_remote_compact_stream_disconnected,codex_remote_compact_context_length_exceeded,codex_remote_compact_unknown_parameter,codex_remote_compact_server_error, orunknownknown_failure=false
Operational note:
chat_context=degradedmeans the current context is recoverably unhealthy, not that the gateway must clear context. Ordinary prompt delivery can continue when the prompt-ready gates pass. An explicit clean-context request such aschat_session.mode=newstill runs the reset workflow.- Compact/server degraded context is intentionally separate from
known_failure: it blocks success while preserving readiness, but it does not imply a mandatory reset. - Degraded error labels belong to the detector's CLI tool. Do not reuse Codex-specific labels for Claude, Gemini, or other tools; only
unknownis shared.
Settled success¶
Typical surface:
- bullet response line such as
• READYor• RECOVERED - current prompt is visible and back in a ready posture
- no current active status row
- no current interrupted banner
- prompt is empty or placeholder-only rather than an active visible draft
Tracker meaning:
turn_phase=readylast_turn_result=successlast_turn_source=explicit_input
Cues That Are Not Authoritative By Themselves¶
- The top-of-screen bubblewrap warning is not latest-turn authority.
- Generic tip lines are not latest-turn authority.
- A warning row without prompt-adjacent terminal semantics is not a failure result.
- An older interrupted banner outside the latest-turn region is stale until proven otherwise.
- Older terminal failure or retry text outside the bounded current-turn region is historical evidence, not current readiness or completion authority.
- A visible typed draft should prevent the surface from being treated as a success candidate even if earlier success-looking transcript content remains above it.
Practical Checklist¶
When investigating a Codex tracking bug from pane snapshots:
- Find the latest visible
›prompt anchor. - Bound the latest-turn region using the previous prompt before it.
- Look for active status, tool, retry, reconnect, or stream-recovery cues in the live-edge tail first.
- If the status row is absent, check whether recent latest-turn growth is supplying temporal active evidence.
- Normalize whitespace and then look for the interrupted banner inside the latest-turn region.
- Look for
• <payload>and any─ Worked for ...completion marker as success context. - Decide whether the current prompt payload is plain draft text, dim placeholder text, or empty.
- Ignore bubblewrap warnings, generic tips, and stale banners outside the latest-turn region when judging current-turn state.
- Ignore stale
Workingrows and tool cells outside the live-edge tail when judging current activity. - Treat prompt-adjacent warning or red failure blocks as current failures only when the bounded block carries recognized terminal semantics.
- Treat compact/server error cells as current degraded-context evidence only when they are in the bounded prompt-adjacent region near the current prompt and carry the compact/server degraded family.