Codex stale-thinking thread spinner may persist after stream-state mismatch

Resolved 💬 2 comments Opened Feb 26, 2026 by g0udurix Closed Feb 27, 2026

Reproducibility summary

  • Run performed against ~/.codex/sessions, ~/.codex/archived_sessions and app logs.
  • Detection runs in read-only mode for logs and session data.

Key stale indicators

  • 019c9a7f-46f2-7e03-aceb-89afe89a581b => stale score=12.6 unmatched_starts=2 heartbeat_ms=3867753 stream_warnings=0 in_progress_stream=True marked_streaming=True turn_not_found_count=1272
  • 019c489a-0eb0-7142-8c30-e92ced2cf74a => at-risk score=5.8 unmatched_starts=0 heartbeat_ms=7549254 stream_warnings=0 in_progress_stream=True marked_streaming=True turn_not_found_count=0

Hypothesis

  • Potential stale stream-state reconciliation path after orphaned run IDs or lost completion events.
  • App UI likely depends on stream flag from resume + turn completion to stop spinner loop.

Ask

  • Please investigate stream-state lifecycle for thread-stream-state-changed, maybe_resume_success, and Turn not found for event reconciliation.

Evidence Artifacts

  • stale_threads: /Users/jeremie/.codex/reports/codex-stale-thinking/2026-02-26/20260226T220025Z/stale_threads.jsonl
  • actions: /Users/jeremie/.codex/reports/codex-stale-thinking/2026-02-26/20260226T220025Z/actions.json
  • incident_summary: /Users/jeremie/.codex/reports/codex-stale-thinking/2026-02-26/20260226T220025Z/incident_summary.md
  • openai_feedback_draft: /Users/jeremie/.codex/reports/codex-stale-thinking/2026-02-26/20260226T220025Z/openai_feedback_draft.md

Detection Inputs

  • sessions root: ~/.codex/sessions, ~/.codex/archived_sessions
  • app logs: ~/Library/Logs/com.openai.codex
  • version matrix: codex-cli 0.101.0 / codex-cli 0.105.0

Please keep diagnostics redacted; do not expose prompt contents or file/project contents.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗