New Features
- Default API model moved to gpt-5.2-codex. (#9188)
- The
codextool incodex mcp-servernow includes thethreadIdin the response so it can be used with thecodex-replytool, fixing #3712. The documentation has been updated at https://developers.openai.com/codex/guides/agents-sdk/. (#9192) - Headless runs now switch to device-code login automatically so sign-in works without a browser. (#8756)
- Linux sandbox can mount paths read-only to better protect files from writes. (#9112)
- Support partial tool calls rendering in
tui
Bug Fixes
- Alternate-screen handling now avoids breaking Zellij scrollback and adds a config/flag to control it. (#8555)
- Windows correctly prompts before unsafe commands when running with a read-only sandbox policy. (#9117)
- Config.toml and rules parsing errors are reported to app-server clients/TUI instead of failing silently. (#9182, #9011)
- Worked around a macOS system-configuration crash in proxy discovery. (#8954)
- Invalid user image uploads now surface an error instead of being silently replaced. (#9146)
Documentation
- Published a generated JSON Schema for
config.tomlindocs/to validate configs. (#8956) - Documented the TUI paste-burst state machine for terminals without reliable bracketed paste. (#9020)
Chores
Changelog
Full Changelog: rust-v0.80.0...rust-v0.81.0
- #8756 [device-auth] When headless environment is detected, show device login flow instead. @mzeng-openai
- #8930 feat: first pass on clb tool @jif-oai
- #8966 nit: rename session metric @jif-oai
- #8969 chore: non mutable btree when building specs @jif-oai
- #8968 chore: move otel provider outside of trace module @jif-oai
- #8973 chore: add mcp call metric @jif-oai
- #8970 chore: add approval metric @jif-oai
- #8975 chore: metrics tool call @jif-oai
- #8901 chore: update metrics temporality @jif-oai
- #8954 Work around crash in system-configuration library @etraut-openai
- #8873 fix(app-server): set originator header from initialize JSON-RPC request @owenlin0
- #8909 Add config to disable /feedback @gt-oai
- #8985 chore: nuke telemetry file @jif-oai
- #8986 Revert "fix(app-server): set originator header from initialize JSON-RPC request" @jif-oai
- #8978 nit: rename to analytics_enabled @jif-oai
- #8963 renaming: task to turn @jif-oai
- #8555 fix: add tui.alternate_screen config and --no-alt-screen CLI flag for Zellij scrollback @hjanuschka
- #8875 feat: add support for building with Bazel @zbarsky-openai
- #8988 fix(app-server): set originator header from initialize (re-revert) @owenlin0
- #8766 fix: harden arg0 helper PATH handling @viyatb-oai
- #8949 Log unhandled sse events @pakrym-oai
- #8996 Add hierarchical agent prompt @pakrym-oai
- #9003 Delete announcement_tip.toml @pakrym-oai
- #8940 Refactor remote models tests to use TestCodex builder @aibrahim-oai
- #8981 Add model provider info to /status if non-default @gt-oai
- #8984 Add URL to responses error messages @gt-oai
- #9008 fix: add .git to .bazelignore @bolinfest
- #9010 fix: include AGENTS.md as repo root marker for integration tests @bolinfest
- #8950 Label attached images so agent can understand in-message labels @charley-oai
- #9032 Revert "Delete announcement_tip.toml" @jif-oai
- #9018 fix: support remote arm64 builds, as well @zbarsky-openai
- #8983 feat: testing harness for collab 1 @jif-oai
- #9088 feat: add wait tool implementation for collab @jif-oai
- #9090 feat: add close tool implementation for collab @jif-oai
- #8971 add static mcp callback uri support @WhammyLeaf
- #9099 nit: add docstring @jif-oai
- #8994 feat: wire fork to codex cli @apanasenko-oai
- #9071 chore(deps): bump tui-scrollbar from 0.2.1 to 0.2.2 in /codex-rs @dependabot
- #9072 chore(deps): bump ts-rs from 11.0.1 to 11.1.0 in /codex-rs @dependabot
- #9074 chore(deps): bump which from 6.0.3 to 8.0.0 in /codex-rs @dependabot
- #9075 chore(deps): bump clap from 4.5.53 to 4.5.54 in /codex-rs @dependabot
- #9076 chore(deps): bump tokio-util from 0.7.16 to 0.7.18 in /codex-rs @dependabot
- #8957 feat: hot reload mcp servers @shijie-oai
- #9107 Remove unused conversation_id header @pakrym-oai
- #9080 Add some tests for image attachments @charley-oai
- #9114 Extract single responses SSE event parsing @pakrym-oai
- #8961 Assemble sandbox/approval/network prompts dynamically @aibrahim-oai
- #9102 Add model client sessions @pakrym-oai
- #8246 fix(tui): show in-flight coalesced tool calls in transcript overlay @Chriss4123
- #9127 Reuse websocket connection @pakrym-oai
- #9117 fix: prompt for unsafe commands on Windows @bolinfest
- #9128 Websocket append support @pakrym-oai
- #9077 Send message by default mid turn. queue messages by tab @aibrahim-oai
- #9049 Handle image paste from empty paste events @aibrahim-oai
- #8952 Use markdown for migration screen @aibrahim-oai
- #9109 Updated heuristic for tool call summary to detect file modifications @etraut-openai
- #9138 Show tab queue hint in footer @aibrahim-oai
- #9140 Use thread rollback for Esc backtrack @aibrahim-oai
- #9143 chore: better error handling on collab tools @jif-oai
- #9147 nit: collab send input cleaning @jif-oai
- #9129 Support response.done and add integration tests @pakrym-oai
- #8798 ollama: default to Responses API for built-ins @drifkin
- #8956 add generated jsonschema for config.toml @sayan-oai
- #9122 Fix queued messages during /review @charley-oai
- #9126 fix: drop session span at end of the session @apanasenko-oai
- #9101 Restrict MCP servers from
requirements.toml@gt-oai - #9020 fix(tui): document paste-burst state machine @joshka-oai
- #9118 feat(app-server): add an --analytics-default-enabled flag @owenlin0
- #9130 Fresh tooltips @mzeng-openai
- #9134 fix(windows-sandbox-rs) bump SETUP_VERSION @dylan-hurd-oai
- #9121 test(tui): add deterministic paste-burst tests @joshka-oai
- #8661 Fix spinner/Esc interrupt when MCP startup completes mid-turn @2mawi2
- #9165 Allow close skill popup with esc. @xl-openai
- #9169 Fix flakiness in WebSocket tests @pakrym-oai
- #9011 fix: report an appropriate error in the TUI for malformed rules @bolinfest
- #9166 fix: integration test for #9011 @bolinfest
- #9177 feat: add bazel-codex entry to justfile @bolinfest
- #9175 WebSocket test server script @pakrym-oai
- #9136 Update models.json @github-actions
- #9168 clean models manager @aibrahim-oai
- #8933 [CODEX-4427] improve parsed commands @aibrahim-oai
- #9174 Renew cache ttl on etag match @aibrahim-oai
- #9124 fix(tui): harden paste-burst state transitions @joshka-oai
- #9186 Use offline cache for tui migrations @aibrahim-oai
- #9182 Improve handling of config and rules errors for app server clients @etraut-openai
- #8997 chore: clarify default shell for unified_exec @sayan-oai
- #9192 feat: add threadId to MCP server messages @bolinfest
- #9188 change api default model @aibrahim-oai
- #9150 feat: add sourcing of rc files to shell snapshot @jif-oai
- #9155 fix: shell snapshot clean-up @jif-oai
- #9146 feat: return an error if the image sent by the user is a bad image @jif-oai
- #9197 feat: only source shell snapshot if the file exists @jif-oai
- #9145 fix: drop double waiting header in TUI @jif-oai
- #9194 Render exec output deltas inline @aibrahim-oai
- #9156 chore: clamp min yield time for empty write_stdin @jif-oai
- #9105 feat: add auto refresh on thread listeners @jif-oai
- #9112 feat: add support for read-only bind mounts in the linux sandbox @viyatb-oai
- #9179 Use current model for review @pakrym-oai