CATCH #1304
DETECTED SEP 10, 2026 20:19 UTC
THE CATCHscore 7/10
EXHIBIT 1304 · URGENT
Sep 10, 2026 20:19 UTC
github
openai/codex
OpenAI Codex Python SDK adds `max` and `ultra` reasoning efforts, `ExternalMessage` support, and new turn/history options.
READY TO POST:
openai codex python sdk just dropped v0.154.0. looks like new `max` and `ultra` reasoning efforts were added, interesting to see what those do!
big update for openai codex python devs. externalmessage is now supported for `run()` and `turn()` calls, plus more granular control over turn history and metadata. time to dig in.
EVIDENCE — the receipts
openai/codex release: python-v0.154.0
name: Python SDK 0.154.0
published: 2026-09-10T19:51:43Z
url: https://github.com/openai/codex/releases/tag/python-v0.154.0
Install with `pip install --upgrade openai-codex==0.154.0` (Python 3.10 or later). This release includes the matching `openai-codex-cli-bin==0.154.0` runtime.
- Add `max` and `ultra` reasoning-effort values. [#39662](https://github.com/openai/codex/pull/39662)
- Add `ExternalMessage` to synchronous and asynchronous `run()` and `turn()` calls. External content can start a turn or join an active regular turn with tool-level authority; it does not grant user authorization. Consumers receive independent event streams. [#44086](https://github.com/openai/codex/pull/44086)
- Add `include_turns` on resume/fork, `turn_service_tier` for one newly started turn, and `source` metadata. History selection changes the returned response, not model context. Existing defaults are preserved when these options are omitted. [#44084](https://github.com/openai/codex/pull/44084)
- Refresh generated protocol models and notifications, and preserve completion events that arrive before a turn-start response. [#44032](https://github.com/openai/codex/pull/44032), [#44400](https://github.com/openai/codex/pull/44400)
Check these migrations when upgrading:
- `HookMetadata` wraps its handler in `.root`. Replace accesses such as `hook.command` with `hook.root.command`, checking `hook.root.handler_type` before reading handler-specific fields.
- Some previously unknown notifications now have typed payloads. Read named fields instead of `.params`; unknown or invalid payloads still use `UnknownNotification`.
- Manually constructed or late-joining turn handles receive events from their attachment point. Earlier output is not replayed, so collected results can be partial; attaching after completion can raise `TransportClosedError`. Use `thread.read(include_turns=True)` for saved history. Handles returned directly by `thread.turn(...)` retain eve
caught by the 20-minute sweep ·
the live wire · all receipts