This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Affected surfaces
Summary
AI summaryUpdates Changelog Full Changelog: https://github.com/openai/codex/compare/rust-v0.131.0...rust-v0.132.0, Bug Fixes, and New Features across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Python SDK supports first-class authentication, including API key login and logout APIs. Python SDK supports first-class authentication, including API key login and logout APIs. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Feature | Medium |
Python turn APIs accept plain string input and return richer TurnResult with usage data. Python turn APIs accept plain string input and return richer TurnResult with usage data. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Feature | Medium |
`codex exec resume` accepts `--output-schema` for structured JSON output while preserving session context. `codex exec resume` accepts `--output-schema` for structured JSON output while preserving session context. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Feature | Medium |
Remote executor registration uses standard Codex auth instead of separate registry credentials. Remote executor registration uses standard Codex auth instead of separate registry credentials. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Extension event sink capability added for goal resumed metrics and token usage async handling. Extension event sink capability added for goal resumed metrics and token usage async handling. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Thread goal storage isolated behind GoalStore interface. Thread goal storage isolated behind GoalStore interface. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Goal update events emitted from goal extension tools. Goal update events emitted from goal extension tools. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
App-server turns preserve requested image fidelity, including original-resolution local images. App-server turns preserve requested image fidelity, including original-resolution local images. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Remote executor registration can use standard Codex authentication rather than a separate registry credential flow. Remote executor registration can use standard Codex authentication rather than a separate registry credential flow. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Performance | Medium |
TUI startup is faster due to batched terminal capability probes. TUI startup is faster due to batched terminal capability probes. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Bugfix | Medium |
Multi-session TUI flows keep MCP calls active during replay and route elicitation replies correctly. Multi-session TUI flows keep MCP calls active during replay and route elicitation replies correctly. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Windows installs are more robust; `codex doctor` detects npm-managed installs, MSVC binaries no longer depend on separate VC++ runtime DLLs. Windows installs are more robust; `codex doctor` detects npm-managed installs, MSVC binaries no longer depend on separate VC++ runtime DLLs. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Goal continuations stop on usage limits or repeated blockers instead of looping. Goal continuations stop on usage limits or repeated blockers instead of looping. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Bugfix | Medium |
Session picker shows `name (thread-id)` for renamed threads and supports pasted text in search. Session picker shows `name (thread-id)` for renamed threads and supports pasted text in search. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Bugfix | Medium |
Remote sessions maintain websocket connections alive and display repo-relative diff paths. Remote sessions maintain websocket connections alive and display repo-relative diff paths. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Bugfix | Medium |
TUI polish fixes include immediate shutdown feedback, hiding ChatGPT usage link for non-OpenAI providers, and preventing cleared Fast tier from reappearing after side-thread resume. TUI polish fixes include immediate shutdown feedback, hiding ChatGPT usage link for non-OpenAI providers, and preventing cleared Fast tier from reappearing after side-thread resume. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Bugfix | Medium |
Goal continuations stop when they hit usage limits or encounter a repeated blocker, preventing endless loops and improving usage reporting phrasing. Goal continuations stop when they hit usage limits or encounter a repeated blocker, preventing endless loops and improving usage reporting phrasing. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Refactor | Medium |
Memory summaries are now versioned and rebuilt when format is stale to keep context leaner. Memory summaries are now versioned and rebuilt when format is stale to keep context leaner. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Other | Medium |
Python SDK docs, FAQ, and examples refreshed around new auth flow and turn APIs with clearer setup guidance. Python SDK docs, FAQ, and examples refreshed around new auth flow and turn APIs with clearer setup guidance. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
Full changelog
New Features
- The Python SDK now supports first-class authentication, including API key login, ChatGPT browser and device-code flows, account inspection, and logout APIs. (#23093)
- Python turn APIs are easier to use for text-only workflows: you can pass a plain string as input, and handle-based runs now return a richer
TurnResultwith collected items, timing, and usage data. (#23151, #23162) codex exec resumenow accepts--output-schema, so resumed automations can keep session context while still enforcing structured JSON output. (#23123)- TUI startup is faster because terminal capability probes are now batched instead of waiting on several serial checks before the first interactive frame. (#23175)
- Remote executor registration can now use standard Codex auth instead of a separate registry credential flow. (#22769)
- App-server turns can preserve requested image fidelity, including original-resolution local images, across user inputs and image-producing tools. (#20693)
Bug Fixes
- Goal continuations now stop when they hit usage limits or a repeated blocker instead of looping and burning more tokens, and completion responses phrase usage more naturally. (#23094, #22907)
- The session picker is easier to trust: renamed threads now show
name (thread-id)in resume hints, and pasted text works in the picker search box. (#23234, #23338) - Multi-session TUI flows are more reliable: in-progress MCP calls stay marked as active during replay, and elicitation replies are sent back to the thread that requested them. (#23236, #23241)
- Remote sessions now keep websocket connections alive and show repo-relative diff paths again instead of
/tmp/...-prefixed paths. (#23226, #23261) - Windows installs are more robust:
codex doctornow detects npm-managed installs correctly, and MSVC release binaries no longer depend on separately installed VC++ runtime DLLs. (#22967, #22905) - TUI polish fixes include immediate shutdown feedback on exit, hiding the ChatGPT usage link for non-OpenAI providers, and keeping a cleared Fast tier from reappearing after side-thread resume. (#23323, #23127, #23121)
Documentation
- The Python SDK docs, FAQ, and examples were refreshed around the new auth flow and turn APIs, with clearer setup guidance and simpler text-only examples. (#22941, #23093, #23151, #23162)
Chores
- Memory summaries are now versioned and rebuilt when the stored format is stale, which should keep long-lived memory context leaner and more predictable. (#23148)
Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.131.0...rust-v0.132.0
- #20693 Preserve image detail in app-server inputs @fjord-oai
- #22891 tui: pass active permission profiles through app commands @bolinfest
- #22924 app-server-protocol: remove PermissionProfile from API @bolinfest
- #22941 [codex] Refine Python SDK user-facing docs @aibrahim-oai
- #22967 Fix Windows doctor npm root probe @etraut-openai
- #22920 core: set permission profiles from snapshots @bolinfest
- #22939 [codex] Split Python SDK helper logic @aibrahim-oai
- #22907 Improve goal completion usage reporting @etraut-openai
- #23030 test: construct permission profiles directly @bolinfest
- #22769 exec-server: support auth-backed remote executor registration @miz-openai
- #22946 [codex] preserve MCP result meta in McpToolCallItemResult @miaolin-oai
- #23069 multiagent: trim model-visible description, cap to 5 models @sayan-oai
- #22913 [1 of 4] tui: route primary settings writes through app server @etraut-openai
- #23093 sdk/python: add first-class login support @aibrahim-oai
- #23151 [codex] Return TurnResult from Python turn handles @aibrahim-oai
- #23147 Make multi-agent v2 tool namespace configurable @jif-oai
- #23036 test: reduce core sandbox policy test setup @bolinfest
- #23162 [codex] Accept string input for Python turns @aibrahim-oai
- #23226 Add exec-server websocket keepalive @starr-openai
- #23148 Densify and version memory summaries @jif-oai
- #22448 [codex] Add installed-plugin mention API @xli-oai
- #23288 chore: goal ext skeleton @jif-oai
- #23291 Make extension lifecycle hooks async @jif-oai
- #23293 feat: add extension event sink capability @jif-oai
- #23295 chore: isolate thread goal storage behind GoalStore @jif-oai
- #23301 chore: goal resumed metrics @jif-oai
- #23305 chore: make token usage async @jif-oai
- #23306 Emit goal update events from goal extension tools @jif-oai
- #23121 tui: keep cleared Fast tier from reappearing after side-thread resume @etraut-openai
- #23123 Support --output-schema for exec resume @etraut-openai
- #23128 Fix TUI stream cleanup after turn errors @etraut-openai
- #23127 Hide ChatGPT usage link for non-OpenAI status @etraut-openai
- #23175 [1 of 2] Optimize TUI startup terminal probes @etraut-openai
- #22706 [codex] Remove legacy shell output formatting paths @pakrym-oai
- #23332 nit: read prompt @jif-oai
- #22905 windows: link MSVC release binaries with static CRT @iceweasel-oai
- #23323 fix(tui): show shutdown feedback on exit @fcoury-oai
- #23261 Fix remote turn diff display roots @starr-openai
- #22569 Simplify legacy Windows sandbox ACL persistence @iceweasel-oai
- #23273 Upload rust full CI JUnit reports @starr-openai
- #22893 fix: harden plugin creator sharing validation @efrazer-oai
- #23094 goal: pause continuation loops on usage limits and blockers @etraut-openai
- #23234 Clarify resume hints for renamed threads @etraut-openai
- #23241 TUI: route elicitation responses to request thread @etraut-openai
- #23236 TUI: replay in-progress MCP calls as started @etraut-openai
- #23088 goals: keep pause transitions explicit @etraut-openai
- #23338 feat(tui): handle paste in session picker @fcoury-oai
- #23335 feat(app-server): add optional thread_id to experimentalFeature/list @owenlin0
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About codex
All releases →Related context
Related tools
Earlier breaking changes
- vrust-v0.134.0 Makes `--profile` the primary profile selector and rejects legacy selectors.
Beta — feedback welcome: [email protected]