$ the-wire · showcase
Agents API lands in both OpenAI SDKs, Python streaming errors normalized
By RepoJournal · Filed · About OpenAI · Composed from the cited sources · methodology
OpenAI shipped the beta Agents API in openai-node v7.15.0 and openai-python v3.13.0, while openai-python began wrapping post-stream HTTPX failures inside openai.APIError.
The beta Agents API is the day's headline: openai-node v7.15.0 adds `beta.agents` [1] for managing agents, sessions, items, and turns, inspecting subagents and their history, and working with environments, templates, files, artifacts, vaults, and credentials [2]. It ships with automatic pagination, streaming events, binary artifact downloads, and the `OpenAI-Beta: agents=v1` header, plus `beta.agents.sessions.stream(...)` for streaming one turn on an idle session and function-tool handlers that parse arguments, invoke registered functions, and submit tool results during the stream [2]. openai-python v3.13.0 carries the same API addition [3]. The same release window added Live API endpoints to openai-node, with WebSocket and browser WebRTC helpers and a `TranscriptGrouper` for streaming transcripts [4].
openai-python's streaming error handling is a breaking change for anyone catching provider exceptions. A timeout or broken connection after streaming starts used to escape as a raw HTTPX exception, bypassing `except openai.APIError`; request failures are now wrapped at the event-read boundary, preserving the original exception as `__cause__` and closing the response [5]. Parsing and callback errors are unchanged, existing Assistants event-handler and raw byte-stream behavior is preserved, and partially consumed streams are not retried [6].
The SDK also fixed stream index handling: null or missing `response.output_item.added` items are skipped, valid items are tracked by their original stream indexes, and later text and tool-call deltas now reach the correct item even when indexes have gaps [7]. Content for an item never received raises a `RuntimeError` instead of being silently discarded, and the finalized-output recovery from the earlier fix is preserved [7].
In codex, the TUI fix keeps completed voice captions anchored to the next live turn and restores them before that turn during replay, covering buffered item, delta, and completion events even when the turn-start event has been evicted [8]. Managed provider requirements now support `model_provider` and `model_providers`: required selection overrides local and session configuration, and each required provider definition replaces the corresponding local entry including its authentication and headers [9]. Thread analytics opt-outs are honored again when a shared client is in play: a disabled analytics client is used when `config.analytics_enabled` is `Some(false)`, without disabling analytics for sibling threads, and delegated threads no longer emit initialization events through the parent's client [10]. The Windows offline sandbox now blocks non-loopback inbound traffic with a firewall rule scoped to the offline user's SID, matching the existing outbound block, and the rule is removed during uninstall [11].
Action items
- → Adopt beta.agents in openai-node 7.15.0 or openai-python 3.13.0 to reach the Agents API openai/openai-node [plan]
- → Audit except openai.APIError handlers before upgrading openai-python, since post-stream HTTPX failures now surface as openai errors with the original as __cause__ openai/openai-python [immediate]
- → Check stream index assumptions if you consume output_item.added events with possible gaps openai/openai-python [monitor]
References
- [1] v7.15.0 ↗ openai/openai-node
- [2] feat(api): add Agents API ↗ openai/openai-node
- [3] v3.13.0 ↗ openai/openai-python
- [4] feat(api) Add Live API ↗ openai/openai-node
- [5] feat(streaming): normalize errors raised while reading streams (#3827) ↗ openai/openai-python
- [6] feat(streaming): normalize errors raised while reading streams ↗ openai/openai-python
- [7] fix: preserve response stream indexes after empty items (#3126) ↗ openai/openai-python
- [8] Preserve voice caption order when replaying TUI history ↗ openai/codex
- [9] Enforce managed model provider selection and definitions ↗ openai/codex
- [10] Honor thread analytics opt-outs when using shared clients ↗ openai/codex
- [11] Block non-loopback inbound traffic for the Windows offline sandbox ↗ openai/codex