OpenAI Codex CLI rust-v0.99.0

New Features - Running direct shell commands no longer interrupts an in-flight turn; commands can execute concurrently when a turn is active. (10513) - Added /statusline to configure which metadata...

New Features - Running direct shell commands no longer interrupts an in-flight turn; commands can execute concurrently when a turn is active. (10513) - Added /statusline to configure which metadata appears in the TUI footer interactively. (10546) - The TUI resume picker can now toggle sort order between creation time and last-updated time with an in-picker mode indicator. (10752) - App-server clients now get dedicated APIs for steering active turns, listing experimental features, resuming agents, and opting out of specific notifications. (10721, 10821, 10903, 11319) - Enterprise/admin requirements can now restrict web search modes and define network constraints through requirements.toml. (10964, 10958) - Image attachments now accept GIF and WebP inputs in addition to existing formats. (11237) - Enable snapshotting of the shell environment and rc files (11172) Bug Fixes - Fixed a Windows startup issue where buffered keypresses could cause the TUI sign-in flow to exit immediately. (10729) - Required MCP servers now fail fast during start/resume flows instead of continuing in a broken state. (10902) - Fixed a file-watcher bug that emitted spurious skills reload events and could generate very large log files. (11217) - Improved TUI input reliability: long option labels wrap correctly, Tab submits in steer mode when idle, history recall keeps cursor placement consistent, and stashed drafts restore image placeholders correctly. (11123, 10035, 11295, 9040) - Fixed model-modality edge cases by surfacing clearer viewimage errors on text-only models and stripping unsupported image history during model switches. (11336, 11349) - Reduced false approval mismatches for wrapped/heredoc shell commands and guarded against empty command lists in exec policy evaluation. (10941, 11397) Documentation - Expanded app-server docs and protocol references for turn/steer, experimental-feature discovery, resumeagent, notification opt-outs, and null developerinstructions normalization. (10721, 10821, 10903, 10983, 11319) - Updated TUI composer docs to reflect draft/image restoration, steer-mode Tab submit behavior, and history-navigation cursor semantics. (9040, 10035, 11295) Chores - Reworked npm release packaging so platform-specific binaries are distributed via @openai/codex dist-tags, reducing package-size pressure while preserving platform-specific installs (including @alpha). (11318, 11339) - Pulled in a security-driven dependency update for time (RUSTSEC-2026-0009). (10876) Changelog Full Changelog: https://github.com/openai/codex/compare/rust-v0.98.0...rust-v0.99.0 - 10729 fix(tui): flush input buffer on init to prevent early exit on Windows @Ashutosh0x - 10689 fix: flaky landlock @jif-oai - 10513 Allow user shell commands to run alongside active turns @jif-oai - 10738 nit: backfill stronger @jif-oai - 10246 adding fork information (UI) when forking @pap-openai - 10748 Update explorer role default model @jif-oai - 10425 Include real OS info in metrics. @iceweasel-oai - 10745 feat: resumable backfill @jif-oai - 10758 feat: wire ephemeral in codex exec @jif-oai - 10756 chore: handle shutdown correctly in tui @jif-oai - 10637 feat: add memory tool @jif-oai - 10751 feat: repair DB in case of missing lines @jif-oai - 10762 nit: add DB version in discrepancy recording @jif-oai - 10621 Leverage state DB metadata for thread summaries @jif-oai - 9691 Add hooks implementation and wire up to notify @gt-oai - 10546 feat(tui): add /statusline command for interactive status line configuration @fcoury - 10752 feat(tui): add sortable resume picker with created/updated timestamp toggle @fcoury - 10769 fix(tui): fix resumepickerordersbyupdatedat test @owenlin0 - 10423 fix(auth): isolate chatgptAuthTokens concept to auth manager and app-server @owenlin0 - 10775 nit: gpt-5.3-codex announcement @jif-oai - 10782 nit: gpt-5.3-codex announcement 2 @jif-oai - 10711 add sandbox policy and sandbox name to codex.tool.call metrics @iceweasel-oai - 10660 chore: rm web-search-eligible header @sayan-oai - 10783 fix: announcement in prio @jif-oai - 10721 [app-server] Add a method to list experimental features. @mzeng-openai - 10787 chore: limit update to 0.98.0 NUX to < 0.98.0 ver @sayan-oai - 10655 Add analytics for /rename and /fork @pap-openai - 10790 feat: wait for backfill to be ready @jif-oai - 10693 Add app-server transport layer with websocket support @maxj-oai - 10818 other announcement @jif-oai - 10815 Sync app-server requirements API with refreshed cloud loader @xl-openai - 10820 go back to auto-enabling websearch for azure @sayan-oai - 10727 Send beta header with websocket connects @pakrym-oai - 10809 updates: use brew api for version check @magus - 10793 Add stage field for experimental flags. @mzeng-openai - 10821 feat(app-server): turn/steer API @owenlin0 - 10792 Print warning when config does not meet requirements @gt-oai - 10699 feat: expose detailed metrics to runtime metrics @apanasenko-oai - 10784 Gate app tooltips to macOS @aibrahim-oai - 10843 Log an event (info only) when we receive a file watcher event @etraut-openai - 10852 Personality setting is no longer available in experimental menu @etraut-openai - 10840 Removed the "remotecompaction" feature flag @etraut-openai - 10876 sec: fix version of time to prevent vulnerability @jif-oai - 10892 nit: test an @jif-oai - 10894 feat: backfill async again @jif-oai - 10902 Handle required MCP startup failures across components @jif-oai - 10851 Removed "execpolicy" feature flag @etraut-openai - 10457 Queue nudges while plan generating @charley-oai - 10822 Add app configs to config.toml @canvrno-oai - 10420 feat(network-proxy): add structured policy decision to blocked errors @viyatb-oai - 10814 fix(linux-sandbox): block iouring syscalls in no-network seccomp policy @viyatb-oai - 10698 core: preconnect Responses websocket for first turn @joshka-oai - 10574 core: refresh developer instructions after compaction replacement history @charley-oai - 10914 chore(app-server): update AGENTS.md for config + optional collection guidance @owenlin0 - 10928 chore(app-server): add experimental annotation to relevant fields @owenlin0 - 10927 Treat compaction failure as failure state @aibrahim-oai - 10861 Support alternative websocket API @by-openai - 10826 add originator to otel @alexsong-oai - 10855 TUI/Core: preserve duplicate skill/app mention selection across submit + resume @daniel-oai - 10943 app-server: print help message to console when starting websockets server @JaviSoto - 10938 Mark Config.apps as experimental, correct schema generation issue @canvrno-oai - 10947 fix(tui): conditionally restore status indicator using message phase @sayan-oai - 10965 refactor(network-proxy): flatten network config under [network] @viyatb-oai - 10970 Fixed a flaky test @etraut-openai - 10710 Process-group cleanup for stdio MCP servers to prevent orphan process storms @etraut-openai - 10964 feat: add support for allowedwebsearchmodes in requirements.toml @bolinfest - 10977 fix: use expected line ending in codex-rs/core/config.schema.json @bolinfest - 10973 Do not poll for usage when using API Key auth @etraut-openai - 10921 Show left/right arrows to navigate in tui requestuserinput @charley-oai - 10988 fix: normalize line endings when reading file on Windows @bolinfest - 10903 Add resumeagent collab tool @jif-oai - 10909 Bootstrap shell commands via user shell snapshot @jif-oai - 10993 Fix flaky windows CI test @etraut-openai - 10987 Fixed a flaky Windows test that is consistently causing a CI failure @etraut-openai - 10958 feat(core): add network constraints schema to requirements.toml @viyatb-oai - 10983 app-server: treat null mode developer instructions as built-in defaults @charley-oai - 11039 feat: include state of [experimentalnetwork] in /debug-config output @bolinfest - 11040 Simplify pre-connect @pakrym-oai - 10966 feat: enable premessage-deflate for websockets @apanasenko-oai - 9040 fix(tui): rehydrate drafts and restore image placeholders @Chriss4123 - 10824 Fallback to HTTP on UPGRADEREQUIRED @pakrym-oai - 11028 Defer persistence of rollout file @etraut-openai - 10980 fix: remove config.schema.json from tag check @bolinfest - 11051 Gate viewimage tool by model inputmodalities @wiltzius-openai - 11109 [bazel] Upgrade some rulesets in preparation for enabling windows @zbarsky-openai - 11114 chore: refactor network-proxy so that ConfigReloader is injectable behavior @bolinfest - 10718 Upgrade rmcp to 0.14 @mzeng-openai - 11044 feat: include [experimentalnetwork] in @bolinfest - 10994 [apps] Improve app loading. @mzeng-openai - 11121 chore: reverse the codex-network-proxy -> codex-core dependency @bolinfest - 11105 feat: include NetworkConfig through ExecParams @bolinfest - 11155 tui: avoid no-op status-line redraws @rakan-oai - 10799 feat: do not close unified exec processes across turns @jif-oai - 11172 chore: enable shell snapshot @jif-oai - 11175 fix: do not show closed agents in /agent @jif-oai - 11173 chore: enable sub agents @jif-oai - 11193 Deflake mixed parallel tools timing test @gt-oai - 10770 Load requirements on windows @gt-oai - 11132 core: account for all post-response items in auto-compact token checks @charley-oai - 11198 tools: remove getmemory tool and tests @jif-oai - 10937 Translate websocket errors @rasmusrygaard - 11217 Fixed bug in file watcher that results in spurious skills update events and large log files @etraut-openai - 11216 Move warmup to the task level @pakrym-oai - 11203 Try to stop small helper methods @pakrym-oai - 11197 [bazel] Upgrade some rulesets in preparation for enabling windows, part 2 @zbarsky-openai - 11158 chore: remove network-proxy-cli crate @viyatb-oai - 11230 Revert "chore: enable sub agents" @jif-oai - 11123 TUI: fix requestuserinput wrapping for long option labels @charley-oai - 11133 core: add focused diagnostics for remote compaction overflows @charley-oai - 10657 feat: searchtool @apanasenko-oai - 11199 state: add memory consolidation lock primitives @jif-oai - 10835 feat: extend skills/list to support additional roots. @xl-openai - 10960 skill-creator: Remove invalid reference. @xl-openai - 11219 feat: use a notify instead of grace to close ue process @jif-oai - 11231 feat: tie shell snapshot to cwd @jif-oai - 10962 fix(tui): keep unified exec summary on working line @joshka-oai - 11232 Add originator to otel metadata tags @alexsong-oai - 11237 adding image support for gif and webp @natea-oai - 10924 [apps] Add gated instructions for Apps. @mzeng-openai - 11228 Use longest remote model prefix matching @aibrahim-oai - 11242 fix(feature) UnderDevelopment feature must be off @dylan-hurd-oai - 11185 fix: nix build by adding missing dependencies and fix outputHashes @Philipp-M - 10035 fix(tui): tab submits when no task running in steer mode @joshka-oai - 11238 Remove offline fallback for models @aibrahim-oai - 9739 Update models.json @github-actions - 11255 Revert "Update models.json" @aibrahim-oai - 11245 deflake linux-sandbox NoNewPrivs timeout @joshka-oai - 11256 Revert "Revert "Update models.json"" @aibrahim-oai - 11262 chore: change ConfigState so it no longer depends on a single config.toml file for reloading @bolinfest - 11263 test: deflake nextest child-process leak in MCP harnesses @joshka-oai - 11247 Adjust shell command timeouts for Windows @dylan-hurd-oai - 11240 fix(app-server): for external auth, replace idtoken with chatgptacc… @owenlin0 - 11140 chore(deps): bump insta from 1.46.2 to 1.46.3 in /codex-rs @dependabot - 11139 chore(deps): bump anyhow from 1.0.100 to 1.0.101 in /codex-rs @dependabot - 11138 chore(deps): bump regex from 1.12.2 to 1.12.3 in /codex-rs @dependabot - 11239 Disable dynamic model refresh for custom model providers @etraut-openai - 11269 feat: reserve loopback ephemeral listeners for managed proxy @bolinfest - 11279 [apps] Add threadid param to optionally load thread config for apps feature check. @mzeng-openai - 11244 feat: add SkillPolicy to skill metadata and support allowimplicitinvocation @alexsong-oai - 10215 chore(tui) cleanup /approvals @dylan-hurd-oai - 11113 feat(sandbox): enforce proxy-aware network routing in sandbox @viyatb-oai - 10940 feat: support configurable metricexporter @alexsong-oai - 11294 chore: put crypto provider logic in a shared crate @bolinfest - 11207 feat: retain NetworkProxy, when appropriate @bolinfest - 11200 memories: add extraction and prompt module foundation @jif-oai - 11191 feat: add connector capabilities to sub-agents @jif-oai - 11304 Fix spawnagent input type @jif-oai - 11300 feat: align memory phase 1 and make it stronger @jif-oai - 11311 Extract hooks into dedicated crate @jif-oai - 11306 feat: phase 2 consolidation @jif-oai - 11318 chore: split NPM packages @jif-oai - 11322 Fix pending input test waiting logic @jif-oai - 11265 Remove ApiPrompt @pakrym-oai - 11295 tui: keep history recall cursor at line end @joshka-oai - 11288 fix(protocol): approval policy never prompt @fouad-openai - 11323 Revert "Add app-server transport layer with websocket support (10693)" @maxj-oai - 11162 Fix: update parallel tool call exec approval to approve on request id @shijie-oai - 11249 [apps] Improve app installation flow. @mzeng-openai - 11319 feat: opt-out of events in the app-server @jif-oai - 11241 Treat first rollout sessionmeta as canonical thread identity @guinness-oai - 11339 Use @openai/codex dist-tags for platform binaries instead of separate package names @bolinfest - 11330 test(core): stabilize ARM bazel remote-model and parallelism tests @dylan-hurd-oai - 11345 core: remove stale applypatch SandboxPolicy TODO in seatbelt @bolinfest - 11343 Compare full request for websockets incrementality @pakrym-oai - 11344 fix: reduce usage of openifpresent @jif-oai - 11336 Always expose viewimage and return unsupported image-input error @aibrahim-oai - 11346 Sanitize MCP image output for text-only models @aibrahim-oai - 11337 Extract tool building @pakrym-oai - 10941 fix(core): canonicalize wrapper approvals and support heredoc prefix … @viyatb-oai - 10946 include sandbox (seatbelt, elevated, etc.) as in turn metadata header @iceweasel-oai - 11349 Strip unsupported images from prompt history to guard against model switch @aibrahim-oai - 11348 Use thin LTO for alpha Rust release builds @bolinfest - 11334 chore: unify memory job flow @jif-oai - 11364 feat: mem v2 - PR1 @jif-oai - 11365 feat: mem v2 - PR2 @jif-oai - 11366 feat: mem v2 - PR3 @jif-oai - 11274 Update models.json @github-actions - 11361 Split command parsing/safety out of codex-core into new codex-command @bolinfest - 11369 feat: mem v2 - PR4 @jif-oai - 11362 Enable SOCKS defaults for common local network proxy use cases @viyatb-oai - 11359 ci: fall back to local Bazel on forks without BuildBuddy key @joshka-oai - 11372 feat: mem v2 - PR5 @jif-oai - 11374 feat: mem v2 - PR6 (consolidation) @jif-oai - 11377 feat: prevent double backfill @jif-oai - 11378 chore: rename codex-command to codex-shell-command @bolinfest - 11376 Update models.json @github-actions - 11394 Disable very flaky tests @pakrym-oai - 11386 Prefer websocket transport when model opts in @pakrym-oai - 11373 tui: queue non-pending rollback trims in app-event order @charley-oai - 11393 Remove deterministicprocessids feature to avoid duplicate codex-core builds @bolinfest - 11397 fix(exec-policy) No empty command lists @dylan-hurd-oai