OpenAI Codex CLI rust-v0.119.0

New Features - Realtime voice sessions now default to the v2 WebRTC path, with configurable transport, voice selection, native TUI media support, and app-server coverage for the new flow (16960, 17...

New Features - Realtime voice sessions now default to the v2 WebRTC path, with configurable transport, voice selection, native TUI media support, and app-server coverage for the new flow (16960, 17057, 17058, 17093, 17097, 17145, 17165, 17176, 17183, 17188). - MCP Apps and custom MCP servers gained richer support, including resource reads, tool-call metadata, custom-server tool search, server-driven elicitations, file-parameter uploads, and more reliable plugin cache refreshes (16082, 16465, 16944, 17043, 15197, 16191, 16947). - Remote/app-server workflows now support egress websocket transport, remote --cd forwarding, runtime remote-control enablement, sandbox-aware filesystem APIs, and an experimental codex exec-server subcommand (15951, 16700, 16973, 16751, 17059, 17142, 17162). - The TUI can copy the latest agent response with Ctrl+O, including better clipboard behavior over SSH and across platforms (16966). - /resume can now jump directly to a session by ID or name from the TUI (17222). - TUI notifications are more configurable, including Warp OSC 9 support and an opt-in mode for notifications even while the terminal is focused (17174, 17175). Bug Fixes - The TUI starts faster by fetching rate limits asynchronously, and /status now refreshes stale limits instead of showing frozen or misleading quota information (16201, 17039). - Resume flows are more stable: the picker no longer flashes false empty states, uses fresher thread names, stabilizes timestamp labels, preserves resume hints on zero-token exits, and avoids crashing when resuming the current thread (16591, 16601, 16822, 16987, 17086). - Composer and chat behavior are smoother, including fixed paste teardown, CJK word navigation, stale /copy output, percent-decoded local file links, and clearer truncated exec-output hints (16202, 16829, 16648, 16810, 17076). - Fast Mode no longer stays stuck on after /fast off in app-server-backed TUI sessions (16833). - MCP status and startup are less noisy and faster: hyphenated server names list tools correctly, /mcp avoids slow full inventory probes, disabled servers skip auth probing, and residency headers are honored by codex mcp-server (16674, 16831, 17098, 16952). - Sandbox, network, and platform edge cases were tightened, including clearer read-only applypatch errors, refreshed network proxy policy after sandbox changes, suppressed irrelevant bubblewrap warnings, a macOS HTTP-client sandbox panic fix, and Windows firewall address handling (16885, 17040, 16667, 16670, 17053). Documentation - The README now uses the current ChatGPT Business plan name (16348). - Developer guidance for argumentcommentlint was updated to favor getting CI started instead of blocking on slow local lint runs (16375). - Obsolete codex-cli README content was removed to avoid stale setup guidance (17096). - codex exec --help now shows clearer usage and approval-mode wording (16881, 16888). Chores - codex-core was slimmed down through major crate extractions for MCP, tools, config, model management, auth, feedback, protocol, and related ownership boundaries (15919, 16379, 16508, 16523, 16962). - Rust CI and workspace guardrails were simplified by blocking new crate features and dropping routine --all-features runs (16455, 16473). - Core compile times were reduced by removing expensive async-trait expansion from hot tool/task abstractions (16630, 16631). - Bazel diagnostics and dependency wiring improved with compact execution logs, repository-cache persistence, remote downloader support, and several platform-specific build fixes (16577, 16926, 16928, 16634, 16744). Changelog Full Changelog: https://github.com/openai/codex/compare/rust-v0.118.0...rust-v0.119.0 - 16308 fix: one shot end of turn @jif-oai - 16238 fix: ma2 @jif-oai - 16317 chore: clean wait v2 @jif-oai - 16318 nit: update aborted line @jif-oai - 15771 feat: fork pattern v2 @jif-oai - 16322 fix: update fork boundaries computation @jif-oai - 16325 feat: restrict spawnagent v2 to messages @jif-oai - 16324 chore: drop interrupt from sendmessage @jif-oai - 16345 fix: fix clippy issue caught by cargo but not bazel @bolinfest - 16184 Route TUI /feedback submission through the app server @etraut-openai - 16330 feat: log db better maintenance @jif-oai - 15690 [codex-analytics] thread events @rhan-oai - 16363 Fix PR babysitter review comment monitoring @etraut-openai - 16356 Refactor external auth to use a single trait @etraut-openai - 16366 Fix Windows external bearer refresh test @bolinfest - 16353 ci: verify codex-rs Cargo manifests inherit workspace settings @bolinfest - 16361 Refactor chatwidget tests into topical modules @etraut-openai - 16201 Fix stale /status rate limits in active TUI sessions @etraut-openai - 16351 ci: sync Bazel clippy lints and fix uncovered violations @bolinfest - 16378 fix: suppress status card expectused warnings after 16351 @bolinfest - 16406 Use message string in v2 spawnagent @jif-oai - 16409 Use message string in v2 sendmessage @jif-oai - 16419 Use message string in v2 assigntask @jif-oai - 16424 feat: tasks can't be assigned to root agent @jif-oai - 16425 nit: update wait v2 desc @jif-oai - 16426 chore: interrupted as state @jif-oai - 16427 nit: deny field v2 @jif-oai - 16433 chore: drop log DB @jif-oai - 16434 feat: auto vaccum state DB @jif-oai - 16422 fix(core) rm executeexecrequest sandboxpolicy @dylan-hurd-oai - 16375 docs: update argumentcommentlint instructions in AGENTS.md @bolinfest - 16449 fix: remove unused import @bolinfest - 15772 Make fuzzy file search case insensitive @meyers-oai - 16455 ci: block new workspace crate features @bolinfest - 16456 cloud-tasks: split the mock client out of cloud-tasks-client @bolinfest - 16457 tui: remove debug/test-only crate features @bolinfest - 16467 tui: remove the voice-input crate feature @bolinfest - 16379 Extract tool config into codex-tools @bolinfest - 16469 otel: remove the last workspace crate feature @bolinfest - 16471 Extract tool spec helpers into codex-tools @bolinfest - 16473 ci: stop running rust CI with --all-features @bolinfest - 16477 Extract tool discovery helpers into codex-tools @bolinfest - 16480 login: treat provider auth refreshintervalms=0 as no auto-refresh @bolinfest - 16448 fix(guardian): make GuardianAssessmentEvent.action strongly typed @owenlin0 - 16481 Extract updateplan tool spec into codex-tools @bolinfest - 15919 Extract MCP into codex-mcp crate @aibrahim-oai - 16482 Remove clientcommon tool re-exports @bolinfest - 16495 fix: remove unused import @bolinfest - 16493 Extract built-in tool spec constructors into codex-tools @bolinfest - 16273 Fix regression: "not available in TUI" error message @etraut-openai - 16497 Extract tool-search output helpers into codex-tools @bolinfest - 16498 fix: guard guardiancommandsourcetoolname with cfg(unix) @bolinfest - 16499 Extract tool-suggest wire helpers into codex-tools @bolinfest - 16284 Fix TUI app-server permission profile conversions @etraut-openai - 16202 Fix paste-driven bottom pane completion teardown @etraut-openai - 16504 core: use codex-tools config types directly @bolinfest - 16503 Extract requestuserinput normalization into codex-tools @bolinfest - 16510 core: use codex-mcp APIs directly @bolinfest - 16509 Extract code-mode nested tool collection into codex-tools @bolinfest - 16512 core: remove cross-crate re-exports from lib.rs @bolinfest - 16516 fix: add update to Cargo.lock that was missed in 16512 @bolinfest - 16513 Extract tool registry planning into codex-tools @bolinfest - 16521 Move tool registry plan tests into codex-tools @bolinfest - 16523 [codex] Move config types into codex-config @bolinfest - 16524 fix: move some test utilities out of codex-rs/core/src/tools/spec.rs @bolinfest - 16529 [codex] Remove codex-core config type shim @bolinfest - 16559 chore: memories mini model @jif-oai - 16561 fix: race pending @jif-oai - 16564 nit: lint @jif-oai - 16566 fix: races in end of turn @jif-oai - 16567 chore: rework state machine further @jif-oai - 16569 nit: state machine desc @jif-oai - 16571 chore: rename assigntask for followuptask @jif-oai - 16577 ci: upload compact Bazel execution logs for bazel.yml @bolinfest - 16581 chore: move codex-exec unit tests into sibling files @bolinfest - 16590 Fix non-determinism in rulesrs/crategitrepository.bzl @tyler-french - 16604 test: deflake external bearer auth token tests on Windows @bolinfest - 16606 fix: add more detail to test assertion @bolinfest - 16608 fix: increase timeout to account for slow PowerShell startup @bolinfest - 16591 Fix resume picker initial loading state @etraut-openai - 16613 fix: increase another startup timeout for PowerShell @bolinfest - 16601 Fix resume picker stale thread names @etraut-openai - 16616 Fixed some existing labels and added a few new ones @etraut-openai - 16588 Fix stale turn steering during TUI review follow-ups @etraut-openai - 16617 fix: add shell fallback paths for pwsh/powershell that work on GitHub Actions Windows runners @bolinfest - 16596 Fix fork source display in /status (expose forkedfromid in app server) @etraut-openai - 16578 fix(tui): handle zellij redraw and composer rendering @fcoury-oai - 16630 core: cut codex-core compile time 63% with native async ToolHandler @bolinfest - 16631 core: cut codex-core compile time 48% with native async SessionTask @bolinfest - 16492 Auto-trust cwd on thread start @aibrahim-oai - 16633 fix: address unused variable on windows @bolinfest - 16635 app-server: make thread/shellCommand tests shell-aware @bolinfest - 16629 test: use cmd.exe for ProviderAuthScript on Windows @bolinfest - 16634 build: fix Bazel lzma-sys wiring @starr-openai - 16658 Fix deprecated login --api-key parsing @etraut-openai - 16508 extract models manager and related ownership from core @aibrahim-oai - 16662 fix: changes to test that should help them pass on Windows under Bazel @bolinfest - 16665 fix: use COMSPEC in Windows unicode shell test @bolinfest - 16668 fix: use cmd.exe in Windows unicode shell test @bolinfest - 16626 remove temporary ownership re-exports @aibrahim-oai - 16648 Fix stale /copy output after commentary-only turns @etraut-openai - 16674 Fix MCP tool listing for hyphenated server names @etraut-openai - 16667 Suppress bwrap warning when sandboxing is bypassed @etraut-openai - 16670 Fix macOS sandbox panic in Codex HTTP client @etraut-openai - 16699 Fix macOS malloc diagnostics leaking into TUI composer @etraut-openai - 16700 Add remote --cd forwarding for app-server sessions @etraut-openai - 16707 fix: preserve platform-specific core shell env vars @bolinfest - 16715 fix: address clippy violations that sneaked in @bolinfest - 16722 fix windows-only clippy lint violation @bolinfest - 16710 fix(tui): sort skill mentions by display name first @fcoury-oai - 16709 Sanitize forked child history @aibrahim-oai - 16711 Fix Windows Bazel app-server trust tests @bolinfest - 16720 Remove OPENAIBASEURL config fallback @etraut-openai - 16528 Codex/windows bazel rust test coverage no rs @bolinfest - 16450 bazel: lint rusttest targets in clippy workflow @bolinfest - 16735 [codex] allow disabling prompt instruction blocks @tibo-openai - 16745 [codex] allow disabling environment context injection @tibo-openai - 16725 Preempt mailbox mail after reasoning/commentary items @aibrahim-oai - 16755 Use Node 24 for npm publish @aibrahim-oai - 16753 [codex] add responses proxy JSON dumps @tibo-openai - 16746 Add spawn context for MultiAgentV2 children @aibrahim-oai - 16757 Back out "bazel: lint rusttest targets in clippy workflow (16450)" @bolinfest - 16737 test: avoid PowerShell startup in Windows auth fixture @bolinfest - 16740 ci: align Bazel repo cache and Windows clippy target handling @bolinfest - 16758 [codex] add context-window lineage headers @tibo-openai - 16763 Add CODEXSKIPVENDOREDBWRAP @andmis - 15915 [codex-analytics] subagent analytics @rhan-oai - 16823 Fix flaky test relating to metadata remote URL @etraut-openai - 16825 Fix flaky permissions escalation test on Windows @etraut-openai - 16881 Fix misleading codex exec help usage @etraut-openai - 16888 Clarify codex exec approval help @etraut-openai - 16876 [codex] add response proxy subagent header test @tibo-openai - 16829 Fix CJK word navigation in the TUI composer @etraut-openai - 16833 Fix TUI fast mode toggle regression @etraut-openai - 16795 [regression] Fix ephemeral turn backfill in exec @etraut-openai - 16822 Fix resume picker timestamp labels and stability @etraut-openai - 16813 Annotate skill doc reads with skill names @etraut-openai - 16810 (tui): Decode percent-escaped bare local file links @etraut-openai - 16877 [codex-backend] Make thread metadata updates tolerate pending backfill @joeytrasatti-openai - 16701 feat(requirements): support allowedapprovalreviewers @owenlin0 - 16925 fix(bazel): fix simdutf @owenlin0 - 16926 bazel: Always save bazel repository cache @euroelessar - 16928 bazel: Enable --experimentalremotedownloader @euroelessar - 16462 fix(guardian): fix ordering of guardian events @owenlin0 - 16924 fix(sqlite): don't hard fail migrator if DB is newer @owenlin0 - 16744 build: restore lzma-sys Bazel wiring for devbox codex run @starr-openai - 16764 app-server: centralize AuthManager initialization @euroelessar - 16939 Fix clippy warning @mzeng-openai - 16923 Revert "[codex-backend] Make thread metadata updates tolerate pending backfill" @joeytrasatti-openai - 15951 app-server: Add egress websocket transport @euroelessar - 16945 [codex] Allow PyTorch libomp shm in Seatbelt @viyatb-oai - 16947 feat: fallback curated plugin download from backend endpint. @xl-openai - 16191 feat: refresh non-curated cache from plugin list. @xl-openai - 16952 Respect residency requirements in mcp-server @etraut-openai - 16827 tui: route device-code auth through app server @etraut-openai - 16638 [codex-analytics] add protocol-native turn timestamps @rhan-oai - 16831 Speed up /mcp inventory listing @etraut-openai - 16349 Disable env-bound tools when exec server is none @starr-openai - 16957 Promote imagedetailoriginal to experimental @fjord-oai - 16962 Refactor config types into a separate crate @pakrym-oai - 16153 Add setTimeout support to code mode @pakrym-oai - 16961 app-server: Unify config changes handling a bit @euroelessar - 16890 Validate exec input before starting app-server @etraut-openai - 16082 [mcp] Support MCP Apps part 1. @mzeng-openai - 15893 fix: warn when bwrap cannot create user namespaces @viyatb-oai - 16946 [codex] Add danger-full-access denylist-only network mode @viyatb-oai - 16972 app-server: Fix compilation of a test in mcpresource @euroelessar - 15826 Make AGENTS.md discovery FS-aware @pakrym-oai - 16964 Honor null thread instructions @aibrahim-oai - 16988 collapse dev message into one @won-openai - 16724 [codex] ez - rename env=>request in codex-rs/core/src/unifiedexec/processmanager.rs @starr-openai - 16999 feat: empty role ok @jif-oai - 17002 chore: debug flag to hide some parameters @jif-oai - 17005 feat: drop agent ID from v2 @jif-oai - 17008 chore: sendmessage and followuptask do not return anything @jif-oai - 17007 chore: hide nickname for debug flag @jif-oai - 16442 feat: /feedback cascade @jif-oai - 16978 [codex] reduce module visibility @pakrym-oai - 17009 chore: keep requestuserinput tool to persist cache on multi-agents @jif-oai - 16739 Stabilize flaky multi-agent followup interrupt test @etraut-openai - 16885 Fix read-only applypatch rejection message @etraut-openai - 16882 Fix nested exec thread ID restore @etraut-openai - 16976 Preserve null developer instructions @aibrahim-oai - 16987 Fix missing resume hint on zero-token exits @etraut-openai - 16912 feat(analytics): generate an installationid and pass it in responsesapi clientmetadata @owenlin0 - 16956 fix(guardian): don't throw away transcript when over budget @owenlin0 - 16981 [codex] Make AbsolutePathBuf joins infallible @pakrym-oai - 16348 Update README @romainhuet - 16977 [codex] Make unified exec tests remote aware @pakrym-oai - 16465 [mcp] Support MCP Apps part 2 - Add meta to mcp tool call result. @mzeng-openai - 17026 app-server: Move watchid to request of fs/watch @euroelessar - 16980 Add full-ci branch trigger @pakrym-oai - 16973 app-server: Allow enabling remote control in runtime @euroelessar - 17032 [codex] Fix unified exec test build @pakrym-oai - 17031 fix(core) revert Command line in unified exec output @dylan-hurd-oai - 17027 [codex] Migrate applypatch to executor filesystem @pakrym-oai - 17044 [app-server-protocol] introduce generic ServerResponse for app-server-protocol @rhan-oai - 17047 fix(app-server) revert null instructions changes @dylan-hurd-oai - 16960 Add WebRTC transport to realtime start @aibrahim-oai - 17053 Fix remote address format to work with Windows Firewall rules. @iceweasel-oai - 17048 [codex] Apply patches through executor filesystem @pakrym-oai - 16949 Use model metadata for Fast Mode status @pash-openai - 17039 fix(tui): reduce startup and new-session latency @fcoury-oai - 17052 Add regression tests for JsonSchema @vivi - 17059 Add remote exec start script @pakrym-oai - 17064 Add project-local codex bug triage skill @etraut-openai - 17040 fix: refresh network proxy settings when sandbox mode changes @viyatb-oai - 16698 Remove expired April 2nd tooltip copy @etraut-openai - 17096 Remove obsolete codex-cli README @etraut-openai - 16875 Support anyOf and enum in JsonSchema @vivi - 16880 Render function attribute descriptions @vivi - 16879 Render namespace description for tools @vivi - 16582 feat: single app-server bootstrap in TUI @jif-oai - 17117 codex debug 1 (guardian approved) @jif-oai - 17119 codex debug 3 (guardian approved) @jif-oai - 17121 codex debug 5 (guardian approved) @jif-oai - 17123 codex debug 7 (guardian approved) @jif-oai - 17125 codex debug 9 (guardian approved) @jif-oai - 17127 codex debug 11 (guardian approved) @jif-oai - 17129 codex debug 13 (guardian approved) @jif-oai - 17131 codex debug 15 (guardian approved) @jif-oai - 17118 codex debug 2 (guardian approved) @jif-oai - 17120 codex debug 4 (guardian approved) @jif-oai - 17122 codex debug 6 (guardian approved) @jif-oai - 17124 codex debug 8 (guardian approved) @jif-oai - 17126 codex debug 10 (guardian approved) @jif-oai - 17128 codex debug 12 (guardian approved) @jif-oai - 17130 codex debug 14 (guardian approved) @jif-oai - 17071 Configure multiagentv2 spawn agent hints @pakrym-oai - 17091 Show global AGENTS.md in /status @etraut-openai - 17086 Fix TUI crash when resuming the current thread @etraut-openai - 17098 Skip MCP auth probing for disabled servers @etraut-openai - 17097 Add realtime transport config @aibrahim-oai - 17043 [mcp] Support server-driven elicitations @mzeng-openai - 17058 Add WebRTC media transport to realtime TUI @aibrahim-oai - 17063 Use AbsolutePathBuf for exec cwd plumbing @pakrym-oai - 17138 fix(debug-config, guardian): fix /debug-config rendering and guardian… @owenlin0 - 17046 release ready, enabling only for siwc users @won-openai - 16751 Add sandbox support to filesystem APIs @starr-openai - 17142 [codex] Support remote exec cwd in TUI startup @pakrym-oai - 17149 Fix missing fields @canvrno-oai - 17154 Fix ToolsConfigParams initializer in tool registry test @won-openai - 17145 Wire realtime WebRTC native media into Bazel @aibrahim-oai - 17057 Attach WebRTC realtime starts to sideband websocket @aibrahim-oai - 17162 Add top-level exec-server subcommand @starr-openai - 17061 Update guardian output schema @maja-openai - 17164 Auto-approve MCP server elicitations in Full Access mode @leoshimo-oai - 17093 Add WebRTC realtime app-server e2e tests @aibrahim-oai - 17174 Support Warp for OSC 9 notifications @etraut-openai - 16646 Fix stale thread-name resume lookups @etraut-openai - 17165 Move default realtime prompt into core @aibrahim-oai - 17176 Add realtime voice selection @aibrahim-oai - 17175 Add TUI notification condition config @etraut-openai - 17183 Default realtime startup to v2 model @aibrahim-oai - 17186 Skip update prompts for source builds @etraut-openai - 17188 make webrtc the default experience @aibrahim-oai - 17163 [codex] Defer steering until after sampling the model post-compaction @jgershen-oai - 17222 feat: /resume per ID/name @jif-oai - 17226 feat: advanced announcements per OS and plans @jif-oai - 17170 Render statusline context as a meter @etraut-openai - 17217 Skip local shell snapshots for remote unified exec @jif-oai - 17116 chore: merge name and title @jif-oai - 16276 [codex] add memory extensions @kliu128 - 17168 refactor(proxy): clarify sandbox block messages @viyatb-oai - 17076 [codex] Show ctrl + t hint on truncated exec output in TUI @mom-oai - 15197 Add Codex Apps sediment file remapping @caseychow-oai - 16009 Forward app-server turn clientMetadata to Responses @neil-oai - 17256 app-server: Use shared receivers for app-server message processors @euroelessar - 16944 [mcp] Expand tool search to custom MCPs. @mzeng-openai - 16966 feat(tui): Ctrl+O copy hotkey and harden copy-as-markdown behavior @fcoury-oai - 17262 app-server: Fix clippy by removing extra mut @euroelessar - 17258 Omit empty app-server instruction overrides @aibrahim-oai