Releases: openai/codex
0.38.0
This release includes only one change on top of 0.37.0, which is a fix to the npm-publish
step in the release process (#3806). Updating npm
with the latest release is now fully automated, and if you visit https://www.npmjs.com/package/@openai/codex#provenance-details-header, you should now see this special Provenance badge:

Merged PRs:
0.37.0
Mostly small quality-of-life fixes in this release.
Highlights
Updated the npm release process to use "trusted publishing" (#3431). Though apparently there was a bug, so we may not see the benefit until 0.38.0
. Fix is in #3806.
Merged PRs
- [#3329] notifications on approvals and turn end (#3329)
- [#3659] chore: restore prerelease logic in rust-release.yml (#3659)
- [#3617] chore(deps): bump serde_json from 1.0.143 to 1.0.145 in /codex-rs (#3617)
- [#3664] chore: simplify dep so serde=1 in Cargo.toml (#3664)
- [#3618] chore(deps): bump serde from 1.0.219 to 1.0.223 in /codex-rs (#3618)
- [#3619] chore(deps): bump wildmatch from 2.4.0 to 2.5.0 in /codex-rs (#3619)
- 45bccd36 fix permissions alignment
- [#3673] fix: read-only escalations (#3673)
- [#3680] Update azure model provider example (#3680)
- [#3745] Persist search items (#3745)
- [#3678] fix: Record EnvironmentContext in SendUserTurn (#3678)
- [#3701] Review mode core updates (#3701)
- [#3755] restyle thinking outputs (#3755)
- [#3758] Add dev message upon review out (#3758)
- [#3431] fix: make GitHub Action publish to npm using trusted publishing (#3431)
- [#3763] fix: ensure pnpm is installed before running
npm install
(#3763) - [#3767] fix: make publish-npm its own job with specific permissions (#3767)
- [#3806] fix: specify --repo when calling gh (#3806)
0.39.0-alpha.1
rust-v0.39.0-alpha.1 Release 0.39.0-alpha.1
0.37.0-alpha.4
rust-v0.37.0-alpha.4 Release 0.37.0-alpha.4
0.37.0-alpha.1
rust-v0.37.0-alpha.1 Release 0.37.0-alpha.1
0.36.0
Breaking change: OPENAI_API_KEY
is no longer read from the environment
API login is no longer implicit; we do not pick up OPENAI_API_KEY
from the environment. To use an API key programmatically, run the following once:
codex login --api-key "your-api-key-here"
and this value will be stored in CODEX_HOME/auth.json
.
The next time you run codex
, the API key stored in auth.json
will be used automatically.
To switch to ChatGPT login instead of using your API key, run codex login
.
Note that codex logout
will remove whatever login credential is stored in auth.json
(API key or ChatGPT auth token).
Highlights
Introducing our newest model GPT-5-Codex
GPT-5-Codex works faster through easy tasks and harder on complex tasks, improves on code quality, and is more steerable with AGENTS.md. Learn More
Resuming old sessions
Resuming old conversations with codex resume
(#3537, #3625).
Unified execution and reliability
Unified execution improvements (#3288, #3479) and race-condition fix (#3644); include command output on timeouts (#3576); do not execute when command parses as a patch (#3382); improved sandbox timeout handling (#3435); flaky test fixes (#3596, #3564).
Auth and login experience
- login polish (#3632); fix issue allowing to be both logged in and using API key simultaneously (#3611); fix stray login URL characters (#3639); fix
get_auth_status
for custom providers (#3581).
JSON-RPC and MCP
JSON-RPC: SetDefaultModel
and None
clears default (#3512, #3529), UserInfo
(#3428), reasoning_effort
in NewConversationResponse
(#3506); initial MCP interface and docs (#3543, #3507, #3345); standardized shell description (#3514).
TUI onboarding and polish
New onboarding flow and animation (#3398, #3631, #3590, #3627), consistent headers on resume (#3615, #3592), improved spacing/padding (#3469, #3471, #3472, #3474), clearer interruption and status styling (#3470), numerous UX nits addressed (#3650, #3534).
Core platform
Experimental automatic context compaction (#3446); expanded default sandbox (#3483); Azure Responses API workaround (#3528); preserve more item IDs in Azure (#3542); logging and clippy improvements (#3488, #3489); just test
via nextest (#3508).
All merged PRs
- fix: change MIN_ANIMATION_HEIGHT so show_animation is calculated correctly (#3656)
- feat: tweak onboarding strings (#3650)
- fix stray login url characters persisting in login (#3639)
- Add file reference guidelines to gpt-5 prompt (#3651)
- feat: skip animations on small terminals (#3647)
- chore: rename (#3648)
- fix: add references (#3633)
- chore: set
prerelease:true
for now (#3645) - fix: race condition unified exec (#3644)
- feat: update splash (#3631)
- chore(deps): bump tracing-subscriber from 0.3.19 to 0.3.20 in /codex-rs (#3620)
- chore(deps): bump slab from 0.4.10 to 0.4.11 in /codex-rs (#3635)
- Login flow polish (#3632)
- Fix codex resume so flags (cd, model, search, etc.) still work (#3625)
- feat: tighten preset filter, tame storage load logs, enable rollout prompt by default (#3628)
- Show abort in the resume (#3629)
- Change animation frames (#3627)
- initial mcp add interface (#3543)
- chore: update prompts for gpt-5-code (#3624)
- feat: add reasoning level to header (#3622)
- Revert "refactor transcript view to handle HistoryCells" (#3614)
- Show the header when resuming a conversation (#3615)
- When logging in using ChatGPT, make sure to overwrite API key (#3611)
- Don't show the model for apikey (#3607)
- Fix get_auth_status response when using custom provider (#3581)
- fix: model family and apply_patch consistency (#3603)
- fix(tui): update full-auto to default preset (#3608)
- fix(core): flaky test
completed_commands_do_not_persist_sessions
(#3596) - Skip frames files in codespell (#3606)
- Add session header to chat widget (#3592)
- Append full raw reasoning event text (#3605)
- feat: UI animation (#3590)
- Fix EventMsg Optional (#3604)
- Single branch for gpt-5-code (#3601)
- enable-resume (#3537)
- feat: update model save (#3589)
- Fix flaky windows test (#3564)
- Fix gpt-5-code model selector (#3598)
- Add per-model-family prompts (#3597)
- Include command output when sending timeout to model (#3576)
- Align user history message prefix width (#3467)
- Gate model upgrade prompt behind ChatGPT auth (#3586)
- chore: update
output_lines()
to take a struct instead of bools (#3591) - Add spacing before queued status indicator messages (#3474)
- Handle resuming/forking after compact (#3533)
- refactor transcript view to handle HistoryCells (#3538)
- Default gpt-5-code models to experimental reasoning summaries (#3560)
- Preserve IDs for more item types in azure (#3542)
- Always request encrypted cot (#3539)
- Review Mode (Core) (#3401)
- fix: NIT None reasoning effort (#3536)
- Fix NUX UI (#3534)
- core: expand default sandbox (#3483)
- Add Azure Responses API workaround (#3528)
- if a command parses as a patch, do not attempt to run it (#3382)
- Update interruption error message styling (#3470)
- feat: context compaction (#3446)
- Add spacing before composer footer hints (#3469)
- Add spacing between dropdown headers and items (#3472)
- feat: reasoning effort as optional (#3527)
- feat: change the behavior of SetDefaultModel RPC so None clears the value. (#3529)
- standardize shell description (#3514)
- bug: fix model save (#3525)
- Add spacing to timer duration formats (#3471)
- MCP Documentation Changes Requests in Code Review (#3507)
- chore: add
just test
, which runscargo nextest
(#3508) - feat: added SetDefaultModel to JSON-RPC server (#3512)
- feat: include reasoning_effort in NewConversationResponse (#3506)
- add(readme): IDE (#3494)
- Log cf-ray header in client traces (#3488)
- bug: default to image (#3501)
- feat: TUI onboarding (#3398)
- Use PlanType enum when formatting usage-limit CTA (#3495)
- Add more detailed documentation on MCP server usage (#3345)
- fix: improve
handle_sandbox_error
timeouts (#3435) - chore: enable
clippy::redundant_clone
(#3489) - Assign the entire gpt-5 model family same characteristics (#3490)
- Clear composer on fork (#3445)
- fix: use -F instead of -f for force=true in gh call (#3486)
- Add Compact and Turn Context to the rollout items (#3444)
- NIT unified exec (#3479)
- Simplify auth flow and reconcile differences between ChatGPT and API Key auth (#3189)
- apply-patch: sort replacements and add regression tests (#3425)
- chore: rust-release.yml should update the latest-alpha-cli branch (#3458)
- fix: add check to ensure output of
generate_mcp_types.py
matchescodex-rs/mcp-types/src/lib.rs
(#3450) - Change forking to read the rollout from file (#3440)
- Unified execution (#3288)
- feat: add UserInfo request to JSON-RPC server (#3428)
- fix: ensure output of
codex-rs/mcp-types/generate_mcp_types.py
matchescodex-rs/mcp-types/src/lib.rs
(#3439) - fix trampling projects table when accepting trusted dirs (#3434)
- put workspace roots in the environment context (#3375)
0.35.0
0.35.0-alpha.13
rust-v0.35.0-alpha.13 Release 0.35.0-alpha.13
0.35.0-alpha.12
rust-v0.35.0-alpha.12 Release 0.35.0-alpha.12
0.35.0-alpha.11
rust-v0.35.0-alpha.11 Release 0.35.0-alpha.11