OpenAI Codex CLI rust-v0.107.0

New Features - You can now fork a thread into sub-agents, making it easier to branch work without leaving the current conversation. (12499) - Realtime voice sessions now let you pick microphone and...

New Features - You can now fork a thread into sub-agents, making it easier to branch work without leaving the current conversation. (12499) - Realtime voice sessions now let you pick microphone and speaker devices, persist those choices, and send audio in a format better aligned with transcription. (12849, 12850, 13030) - Custom tools can now return multimodal output, including structured content like images, instead of being limited to plain text. (12948) - The app server now exposes richer model availability and upgrade metadata, and the TUI uses it to explain plan-gated models with limited-run tooltips. (12958, 12972, 13021) - Memories are now configurable, and there is a new codex debug clear-memories command to fully reset saved memory state when needed. (12997, 12999, 13002, 13085) Bug Fixes - Reconnecting with thread/resume now restores pending approval and input requests instead of leaving clients out of sync. (12560) - thread/start no longer blocks unrelated app-server requests, reducing stalls during slow startup paths such as MCP auth checks. (13033) - Interactive terminal sessions no longer print the final assistant response twice. (13082) - Large pasted-content placeholders now survive file completion correctly, fixing a regression from 0.106.0. (13070) - ChatGPT accounts that arrive without plan info now handle account reads correctly instead of triggering repeated login issues. (13072) - Diff rendering in the TUI now respects theme colors better and displays more cleanly in Windows Terminal and other low-color environments. (13016, 13037) - MCP OAuth login flows now forward configured oauthresource values correctly for servers that require a resource parameter. (12866) Documentation - Updated sandbox escalation guidance so dependency-install failures caused by sandboxed network access are more clearly treated as escalation candidates. (13051) Chores - Tightened sandbox filesystem behavior by improving restricted read-only handling on Linux and avoiding sensitive directories like ~/.ssh on Windows. (12369, 12835) - Escalated shell commands now keep their sandbox configuration when rerun, closing a gap where approvals could lose the intended restrictions. (12839) Changelog Full Changelog: https://github.com/openai/codex/compare/rust-v0.106.0...rust-v0.107.0 - 12925 chore: calm down awaiter @jif-oai - 12499 feat: fork thread multi agent @jif-oai - 12837 Log jsrepl nested tool responses in rollout history @fjord-oai - 12774 feat: add post-compaction sub-agent infos @jif-oai - 12929 Remove noisy log @pakrym-oai - 12835 don't grant sandbox read access to ~/.ssh and a few other dirs. @iceweasel-oai - 12839 feat: include sandbox config with escalation request @bolinfest - 12940 feat: add git info to memories @jif-oai - 12727 tui: use threadid for resume/fork cwd resolution @charley-oai - 12950 Allow clients not to send summary as an option @pakrym-oai - 12944 fix: sort codex features list alphabetically @bolinfest - 12849 Add realtime audio device config @aibrahim-oai - 12957 test: move unixescalation tests into sibling file @bolinfest - 12947 feat: add local date/timezone to turn environment context @celia-oai - 12959 Make realtime audio test deterministic @aibrahim-oai - 12958 Feat: cxa-1833 update model/list @shijie-oai - 12850 Add realtime audio device picker @aibrahim-oai - 12948 Support multimodal custom tool outputs @fjord-oai - 12745 [apps] Improve app/list with forcefetch=true @mzeng-openai - 12866 Add oauthresource handling for MCP login flows @etraut-openai - 12936 Add a background job to refresh the requirements local cache @alexsong-oai - 12972 Add model availability NUX metadata @aibrahim-oai - 12981 Add realtime websocket tracing @aibrahim-oai - 12968 notify: include client in legacy hook payload @bolinfest - 12997 feat: add use memories config @jif-oai - 12999 feat: gen memories config @jif-oai - 13002 feat: use the memory mode for phase 1 extraction @jif-oai - 13001 chore: tmp remove awaiter @jif-oai - 13011 fix: more stable notify script @jif-oai - 12970 fix: use AbsolutePathBuf for permission profile file roots @bolinfest - 13016 fix(tui): promote windows terminal diff ansi16 to truecolor @fcoury - 13030 Align TUI voice transcription audio with 4o ASR @nornagon-openai - 13047 app-server: deflake running thread resume tests @bolinfest - 12560 app-server: Replay pending item requests on thread/resume @euroelessar - 13055 fix: disable Bazel builds in CI on ubuntu-24.04-arm until we can stabilize them @bolinfest - 12964 execpolicy: add hostexecutable() path mappings @bolinfest - 13051 Clarify escalation guidance for sandbox-related network failures @daniel-oai - 12612 Unify rollout reconstruction with resume/fork TurnContext hydration @charley-oai - 13067 [apps] Stablize app list updated event. @mzeng-openai - 12369 feat(linux-sandbox): support restricted ReadOnlyAccess in bwrap @viyatb-oai - 13037 fix(tui): theme-aware diff backgrounds with fallback behavior @fcoury - 13070 Keep large-paste placeholders intact during file completion @etraut-openai - 13072 Handle missing plan info for ChatGPT accounts @etraut-openai - 13021 Add model availability NUX tooltips @aibrahim-oai - 13080 app-server: Add an ability to watch events in the test client @euroelessar - 13082 Suppress duplicate assistant output on stdout in interactive sessions @etraut-openai - 13033 fix(app-server): make thread/start non-blocking @owenlin0 - 13046 core: adopt hostexecutable() rules in zsh-fork @bolinfest - 13084 app-server: Add ephemeral field to Thread object @euroelessar - 13085 feat: add debug clear-memories command to hard-wipe memories state @sayan-oai