Surface non-content stream status in the turn status UI

Open 💬 1 comment Opened Jun 16, 2026 by softkleenex

Summary

I ran into a case where a streaming Responses-compatible provider needs to send a non-content status update while a turn is still in progress. The specific use case is an account-capacity wait: the stream is still alive, but no model content is available yet, so the CLI should surface a transient status instead of adding anything to the transcript.

I prepared a small branch that adds a generic ResponseEvent::StreamStatus path and forwards it through the existing turn status surface. The parser currently maps codex.keepalive events with status: "waiting_for_account_capacity" into that generic status event.

Compare branch:
https://github.com/openai/codex/compare/main...softkleenex:dex/stream-status-events?expand=1

I tried opening this as a PR, but the repository currently limits PR creation to collaborators, so I'm sharing the branch here instead.

Why

This lets a stream report transient backend/provider state without injecting assistant text or user-visible transcript content. It reuses the existing StreamError/retry status UI path, so the turn can still complete normally after the status update.

Test plan run locally

  • just test -p codex-api
  • just test -p codex-core keepalive_stream_status_emits_stream_error_status
  • just test -p codex-otel
  • git diff --check origin/main...HEAD

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗