$ the-wire · showcase
Codex 0.154.0 adds GPT-6-Astra and experimental worktrees, Python SDK stops crashing on null output
By RepoJournal · Filed · About OpenAI · Composed from the cited sources · methodology
Codex 0.154.0 ships GPT-6-Astra in the model picker and Amazon Bedrock catalogs, experimental `--worktree` isolated checkouts, and inline question answering, while openai-python fixes a Responses parsing crash on `output: null` and openai-node adds API key expiration controls.
Codex 0.154.0 lands GPT-6-Astra in the model picker and Amazon Bedrock catalogs, and introduces experimental worktree support: `--worktree` or `/worktree` creates isolated checkouts for new or forked sessions that you can browse and resume later [1]. Sessions can now also answer questions inline while Codex keeps working, using suggested choices or custom text without losing the main draft [1]. Windows sessions can share a background something the release notes truncate, so treat that line as incomplete [1].
Session-start hooks get a correctness fix. Forked threads used to report `startup`, which caused startup hooks to run again even when their context was inherited from the parent, and resuming with supplied history also reported `startup` instead of `resume` [2]. The commit adds `fork` as a `SessionStart` source and exposes it in the hook input schema, reporting `fork` for histories with a fork parent and `resume` for supplied histories without one [2]. If you match on `SessionStart` source values, add the new case. This is a breaking change for hook logic that assumed only `startup` and `resume`.
On the Python side, `openai-python` 3.11.0 adds expiration controls for service account keys [3]. The pipeline commit behind it fixes a real crash: Responses parsing raised `TypeError` when a response contained `output: null` [4]. Null output is now treated as empty for standalone parsing, and finalized `response.output_item.done` items are recovered when a streaming completion has null or missing output, preserving item order, final statuses, annotations, refusals, structured output, tool arguments, and completion metadata [4][5]. Explicit completion output, including `[]`, remains authoritative [5]. A separate fix handles bare `dict` and `list` annotations without type arguments, where `transform()` and `construct_type()` indexed unconditionally into `get_args()` and raised on the empty tuple [6].
`openai-node` 7.13.0 mirrors the same feature, adding API key expiration controls [7][8]: `expires_in_seconds` on service-account creation parameters for the initial key lifetime, plus optional `expires_at` timestamps on project API keys and newly created service-account keys [8]. CI also got attention on both SDKs after the dependency-security checker landed. The Node test jobs had grown from 1m32s in the August 12 reference run to about 5m38s on current main, with the regular test step going from 32s to 224 to 228s [9]; the fix compiles example, ecosystem CLI, and SDK sources once per Vitest invocation so each subprocess test runs prebuilt JavaScript in a fresh Node process [9]. The Python test job had jumped from 2m24s to 7m00s on Python 3.14 after the policy regression matrix landed, and is back to 2m41s, with Pydantic v2 pytest going from 192.88s to 62.75s [10]. On the Codex orchestration side, synchronous Guardian review moved into `codex-guardian-reviewer`, with core supplying adapters for evidence capture, authorization checks, session creation, and event publication [11], and remote compaction now always routes through the streamed v2 implementation, retiring the `remote_compaction_v2` feature toggle while still advertising it in the model client beta features header [12]. The Windows `/sandbox-add-read-dir` slash command is gone, along with its event handlers and non-elevated read-root grant helper [13].
Action items
- → Update session-start hook logic to handle the new `fork` SessionStart source before upgrading codex openai/codex [plan]
- → Upgrade openai-python to 3.11.0 if you parse Responses output and currently hit TypeError on null completion output openai/openai-python [immediate]
- → Upgrade openai-node to 7.13.0 to pick up `expires_in_seconds` and `expires_at` on API keys openai/openai-node [plan]
- → Stop relying on the Windows `/sandbox-add-read-dir` command in codex TUI workflows openai/codex [monitor]
References
- [1] 0.154.0 ↗ openai/codex
- [2] Distinguish forked sessions in session-start hooks (#44349) ↗ openai/codex
- [3] v3.11.0 ↗ openai/openai-python
- [4] fix: preserve finalized output on null response completion (#3345) ↗ openai/openai-python
- [5] fix: preserve finalized output on null response completion ↗ openai/openai-python
- [6] fix: handle bare `dict` and `list` annotations without type arguments ↗ openai/openai-python
- [7] v7.13.0 ↗ openai/openai-node
- [8] feat(api): Add API key expiration controls ↗ openai/openai-node
- [9] test: reduce CI subprocess and validation overhead ↗ openai/openai-node
- [10] test: restore CI test runtime after dependency-policy regression (#3830) ↗ openai/openai-python
- [11] Move synchronous Guardian orchestration into the reviewer extension ↗ openai/codex
- [12] Always use streamed remote compaction for supported providers ↗ openai/codex
- [13] Remove the Windows `/sandbox-add-read-dir` slash command ↗ openai/codex