Back to feed

0.81.0

Jan 14, 2026
OpenAI/Codex CLICLIvrust-v0.81.0

New Features

  • Default API model moved to gpt-5.2-codex. (#9188)
  • The codex tool in codex mcp-server now includes the threadId in the response so it can be used with the codex-reply tool, 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.toml in docs/ to validate configs. (#8956)
  • Documented the TUI paste-burst state machine for terminals without reliable bracketed paste. (#9020)

Chores

  • Added Bazel build support plus a just bazel-codex helper for contributors. (#8875, #9177)

Changelog

Full Changelog: https://github.com/openai/codex/compare/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