New Features
- The
/appcommand can now hand off the current CLI thread into Codex Desktop on macOS and native Windows, and Windows workspace launches can open directly into Desktop instead of stopping at a manual prompt. (#25638, [#26500]) - Local image attachments and standalone image generations now expose their saved file paths to the model, which makes follow-up edits and file references more reliable. (#25944, [#25947])
- Reasoning effort selection is more flexible: the TUI adds fallback shortcuts for terminals that miss
Altbindings, and model-defined effort levels now flow through in the order advertised by the model. (#25623, [#26444], [#26446]) - App-server integrations can now read account token usage, and Codex auth supports v2 personal access tokens in CLI and app-server flows. (#25344, [#25731])
- Plugin automation got richer structured output: add/remove and marketplace commands support
--json, plugin list JSON includes marketplace source, and plugin detail data now exposes default prompts, remote MCP servers, and unavailable app templates. (#26631, [#26417], [#25887], [#26453], [#26317])
Bug Fixes
- Goal workflows are more predictable: multiline paste in
/goal editno longer submits early, idle auto-turns stay out of Plan mode, and goals stop auto-continuing after terminal turn failures. (#26047, [#26147], [#26690]) - Forked threads now keep user-renamed titles instead of falling back to the original first-prompt name. (#26075)
- The TUI no longer adds extra blank space while streaming, and cancelled prompts reopen with the cursor at the end so you can keep editing naturally. (#26636, [#26457])
- TUI config write failures now show the underlying cause, making validation problems and read-only filesystem issues much easier to diagnose. (#26537)
- Startup is more resilient across environments, with support for
/usr/bin/bash, shorter Linux proxy socket paths, and pre-refresh of expired OAuth-backed MCP credentials. (#26538, [#26553], [#26482]) - Workspace instruction loading is more accurate for remote and symlinked workspaces, so the right
AGENTS.mdfiles are picked up consistently. (#26205, [#26465])
Documentation
- The CLI README was refreshed to remove stale guidance and better match the current documentation flow. (#26313)
Chores
- TUI startup does less repeated plugin work by reusing discovery results and loading only hook metadata on the critical path. (#26469, [#26272])
resume --lastnow finds the newest matching session through the state DB first, which speeds up restore on large local histories. (#26462)- Large MCP/Ollama streams and long message histories process much faster thanks to optimized byte scanning. (#26265)
Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.137.0...rust-v0.138.0
- [#26179] nit: small prompt update for MAv2 @jif-oai
- [#26175] feat: guard git enrichment @jif-oai
- [#26047] Fix multiline paste in /goal edit @etraut-openai
- [#25700] core: stop threading SandboxPolicy through exec @bolinfest
- [#25925] [codex] Copy user Bazel settings into Codex worktrees @anp-oai
- [#26216] [codex] Pin Python SDK to runtime 0.137.0a4 @aibrahim-oai
- [#25887] Preserve remote plugin default prompts @ericning-o
- [#25944] Expose local image paths to models @won-openai
- [#25469] [profile-switcher][rust] -- [1/2] Add app-server account session protocol @dhruvgupta-oai
- [#26075] Fix forked thread name inheritance @etraut-openai
- [#25960] Restore Windows coverage for code-mode image generation exposure @won-openai
- [#26226] [codex] Split Python runtime release workflow @aibrahim-oai
- [#26254] feat: catalog multi-agent v2 config @jif-oai
- [#26251] Rewrite oversized tool outputs during remote compaction @pakrym-oai
- [#26260] codex-pr-body: avoid confidential references @anp-oai
- [#26074] Use Windows setup marker as completion signal @abhinav-oai
- [#26002] log plugin MCP server names @chrisdong-oai
- [#25623] fix(tui): add reasoning effort fallback shortcuts @fcoury-oai
- [#25638] feat(tui): add /app desktop handoff @fcoury-oai
- [#26189] cli: add package path from install context @bolinfest
- [#25946] [codex-analytics] report compaction request token counts @rhan-oai
- [#26252] ci: sign macOS release artifacts with Azure Key Vault @eburke-openai
- [#26367] chore: calm down @jif-oai
- [#26147] Gate automatic idle turns in Plan mode @jif-oai
- [#26172] Bridge host-loaded skills into the skills extension @jif-oai
- [#26265] Optimize unbounded byte scans with memchr @charliemarsh-oai
- [#26396] Reduce SQLite contention from OpenTelemetry SDK debug logs @zanie-oai
- [#26272] Load plugin hooks without other plugin capabilities @charliemarsh-oai
- [#26313] Simplify Codex CLI README @etraut-openai
- [#25947] Add saved image path hint to standalone image generation @won-openai
- [#26291] Bound external agent session detection work @stefanstokic-oai
- [#26417] Expose configured marketplace source in plugin list JSON @mpc-oai
- [#26436] app-server: support -c config overrides @bolinfest
- [#26435] external-agent-migration: avoid mixed MCP transport configs @stefanstokic-oai
- [#26248] [codex-analytics] emit forked thread id on initialization @kbazzi
- [#26320] core: allow excluding tool namespaces from code mode @sayan-oai
- [#25945] Use Azure artifact signing environment secrets @shijie-oai
- [#26205] Route AGENTS.md loading through environment filesystems @anp-oai
- [#26445] [codex] Fix Windows sandbox build script lint @pakrym-oai
- [#23710] build: use ThinLTO for release binaries @anp-oai
- [#26447] Remove response.processed websocket request @pakrym-oai
- [#26312] Cleanup experimentalFeature/enablement/set @mzeng-openai
- [#26444] [codex] Support model-defined reasoning efforts @aibrahim-oai
- [#26446] [codex] Use model-advertised reasoning effort order @aibrahim-oai
- [#26466] Use Winget release environment secret @shijie-oai
- [#26465] [codex] Preserve logical paths during AGENTS.md discovery @anp-oai
- [#26453] fix(app-server): expose remote MCP servers in plugin read @ericning-o
- [#26473] Add skill for pushing CI configuration changes @anp-oai
- [#26317] [codex] Expose unavailable app templates in plugin detail @charlesgong-openai
- [#26471] Improve Windows sandbox setup refresh diagnostics @iceweasel-oai
- [#26431] Pull plugin service less frequently @beggers-openai
- [#25000] ci: test windows cross build @cconger
- [#25955] [codex] Emit sandbox outcome telemetry event @rreichel3-oai
- [#26487] [codex] Add use_responses_lite 'override' logic @rka-oai
- [#26482] fix(rmcp): refresh expired OAuth tokens before startup @anp-oai
- [#26256] [codex] Keep Bazel startup options stable across commands @anp-oai
- [#26499] core: derive exec policy filesystem policy from profile @bolinfest
- [#26215] feat(remote-control): allow pairing while disabled @apanasenko-oai
- [#26480] [codex] Add environment shell info @pakrym-oai
- [#26210] Encrypt multi-agent v2 message payloads @jif-oai
- [#26566] nit: doc @jif-oai
- [#25710] [codex] Forward turn moderation metadata through app-server @carlc-oai
- [#26599] [codex] Keep v1 spawn metadata visible @jif-oai
- [#26610] refactor: split agent control modules @jif-oai
- [#25344] feat(app-server): expose account token usage [1 of 2] @fcoury-oai
- [#26553] [codex] Fix long proxy socket paths @viyatb-oai
- [#26537] Surface TUI config write error causes @etraut-openai
- [#26500] Open Windows app workspaces via deep link @etraut-openai
- [#26551] Fix
/goalusage text for control commands @etraut-openai - [#26554] Render code comment directives in TUI replay @etraut-openai
- [#26623] feat: reload v2 agents on delivery @jif-oai
- [#26532] Require absolute cwd in thread settings @pakrym-oai
- [#26625] [codex] Allow socketpair in proxy-routed Linux sandbox @viyatb-oai
- [#26538] [codex] Add /usr/bin/bash shell fallback @pakrym-oai
- [#26449] feat(remote-control): add pairing status transport @hefuc-oai
- [#26433] Make turn diff tracker multi-env aware @pakrym-oai
- [#26636] fix(tui): avoid doubled blank rows while streaming @fcoury-oai
- [#26450] feat(app-server): add remote control pairing status RPC @hefuc-oai
- [#26335] Clean up Rust release workflow @shijie-oai
- [#26547] [1 of 2] Align goal extension with core behavior @etraut-openai
- [#26181] fix(tui): Windows composer background @fcoury-oai
- [#26457] fix(tui): restore cancelled prompt cursor at end @fcoury-oai
- [#26307] [codex] Respect Windows sandbox backend in exec policy @iceweasel-oai
- [#26484] [codex] Add turn profiling analytics @aibrahim-oai
- [#26552] Make runtime workspace roots absolute in app-server API @pakrym-oai
- [#26462] Use state DB first for
resume --last@charliemarsh-oai - [#26469] Speed up TUI startup by reusing plugin discovery @charliemarsh-oai
- [#26631] Add JSON output for plugin subcommands @mpc-oai
- [#26669] [codex] Bound WSL local curated discovery @xl-openai
- [#26548] [2 of 2] Finish moving goal runtime to extension @etraut-openai
- [#26674] protocol: remove submission-side serde from Op @pakrym-oai
- [#26690] Block active goals after terminal turn errors @etraut-openai
- [#25936] [codex] Remove legacy remote plugin startup sync @xl-openai
- [#26490] [codex] Use standalone tools for Responses Lite @rka-oai
- [#26013] [codex] Gate terminal visualization instructions in TUI @vie-oai
- [#25731] [codex-rs] support v2 personal access tokens @cooper-oai
- [#26542] [codex] Send Responses Lite transport header @rka-oai
- [#24852] permissions: enforce managed permission profile allowlists @viyatb-oai
- [#26698] [codex] Deduplicate skill load warnings @xl-openai
- [#26716] Remove
just bench-smokefromjust test. @anp-oai