$ cat openai/week/2026-09-14.log
the week in review · Sep 14 – Sep 20, 2026
openai-python 3.14.0 and WebSocket sessions land
By RepoJournal · composed from the cited sources · human-reviewed weekly · methodology
Both SDKs shipped managed Responses WebSocket sessions and per-iterator buffering limits, while Codex rewrote its TUI and agent control surface.
v3.14.0 openai/openai-python
by openai-sdks[bot]
The Python SDK cuts v3.14.0 and normalizes errors raised while reading streams, so a failure mid-chunk surfaces as a stream error rather than leaking out of the read loop. If you wrap streaming in your own retry or error handling, that path changes.
fix: include completion in content filter errors (#3094) openai/openai-python
Chat completion parsing now attaches the completion to `ContentFilterFinishReasonError` as `.completion`, matching `LengthFinishReasonError`. Callers filtering on that exception can finally read usage off the failed response instead of throwing it away.
feat(websocket): add per-iterator incoming event limits openai/openai-node
Responses and Live WebSocket streams accept a `maxBufferedEvents` limit per iterator. Overflow discards that iterator's queued records, removes its listeners, and rejects `next()` with `WebSocketError`, while the socket and other iterators keep running, which gives slow consumers a bounded backlog instead of unbounded memory.
feat(api): add compaction progress events openai/openai-node
Responses streams and WebSocket listeners expose typed `response.compaction.compacting` events with item ID, output index, and sequence number, and the stream helpers accept them while preserving the response snapshot. UIs can show compaction progress instead of stalling silently.
fix: keep callback credentials local to each HTTP request (#2744) openai/openai-node
Concurrent requests using a callback credential could build headers from a later callback's result. Credentials are now captured per invocation across OpenAI, Azure AD, and legacy Bedrock auth, which is the kind of race that only shows up under load.
fix(streaming): emit terminal SSE events missing a trailing blank line (#2726) openai/openai-node
`SSEDecoder` emitted only on a blank line and was never flushed, so a final `data:` or `event:` record without its trailing blank line was dropped. Terminal SSE events now reach consumers.
Preserve terminal scrollback when growing the TUI viewport openai/codex
Growing the TUI viewport used `CSI S`, which can discard history rows in QTermWidget and xterm.js. Codex now writes newlines at the bottom of the history scroll region for `ScrollbackStrategy::Standard`, keeping the compositor's scrollback intact.
Open new sessions directly from the command center openai/codex
The inline task composer is replaced by a session list: `n` opens a blank session in the selected checkout without sending an initial turn or interrupting running agents. Single-letter shortcuts and `Enter` handle the rest.
$ ls openai/week/ # the briefings behind this review
Keep up with OpenAI in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
fair warning: these emails are deeply technical. diffs, version numbers, CVEs, benchmark deltas. if that's not your idea of a good read, this isn't your newsletter.
Folds into your digest — weekly by default, monthly if you prefer. Unsubscribe in one click.