Codex: rust-v0.121.0 Release

Release date:
April 15, 2026
Previous version:
rust-v0.121.0-alpha.14 (released April 15, 2026)
Magnitude:
3,363 Diff Delta
Contributors:
9 total committers
Data confidence:
Commits:

Top Contributors in rust-v0.121.0

adrian-openai
pakrym-oai
wiltzius-openai
jif-oai
bolinfest
euroelessar
shijie-oai
dylan-hurd-oai
willwang-openai

Directory Browser for rust-v0.121.0

We haven't yet finished calculating and confirming the files and directories changed in this release. Please check back soon.

Release Notes Published

New Features

  • Added codex marketplace add and app-server support for installing plugin marketplaces from GitHub, git URLs, local directories, and direct marketplace.json URLs (#17087, #17717, #17756).
  • Added TUI prompt history improvements, including Ctrl+R reverse search and local recall for accepted slash commands (#17550, #17336).
  • Added TUI and app-server controls for memory mode, memory reset/deletion, and memory-extension cleanup (#17632, #17626, #17913, #17937, #17844).
  • Expanded MCP/plugin support with MCP Apps tool calls, namespaced MCP registration, parallel-call opt-in, and sandbox-state metadata for MCP servers (#17364, #17404, #17667, #17763).
  • Added realtime and app-server APIs for output modality, transcript completion events, raw turn item injection, and symlink-aware filesystem metadata (#17701, #17703, #17719).
  • Added a secure devcontainer profile with bubblewrap support, plus macOS sandbox allowlists for Unix sockets (#10431, #17547, #17654).

Bug Fixes

  • Fixed macOS sandbox/proxy handling for private DNS and removed the danger-full-access denylist-only network mode (#17370, #17732).
  • Fixed Windows cwd/session matching so resume --last and thread/list work when paths use verbatim prefixes (#17414).
  • Fixed rate-limit/account handling for prolite plans and made unknown WHAM plan values decodable (#17419).
  • Made Guardian timeouts distinct from policy denials, with timeout-specific guidance and visible TUI history entries (#17381, #17486, #17521, #17557).
  • Stabilized app-server behavior by avoiding premature thread unloads, tolerating failed trust persistence on startup, and skipping broken symlinks in fs/readDirectory (#17398, #17595, #17907).
  • Fixed MCP/tool-call edge cases including flattened deferred tool names, elicitation timeout accounting, and empty namespace descriptions (#17556, #17566, #17946).

Documentation

  • Documented the secure devcontainer profile and its bubblewrap requirements (#10431, #17547).
  • Added TUI composer documentation for history search behavior (#17550).
  • Updated app-server docs for new MCP, marketplace, turn injection, memory reset, filesystem metadata, external-agent migration, and websocket token-hash APIs (#17364, #17717, #17703, #17913, #17719, #17855, #17871).
  • Documented WSL1 bubblewrap limitations and WSL2 behavior (#17559).
  • Added memory pipeline documentation for extension cleanup (#17844).

Chores

  • Hardened supply-chain and CI inputs by pinning GitHub Actions, cargo installs, git dependencies, V8 checksums, and cargo-deny source allowlists (#17471).
  • Added Bazel release-build verification so release-only Rust code is compiled in PR CI (#17704, #17705).
  • Introduced the codex-thread-store crate/interface and moved local thread listing behind it (#17659, #17824).
  • Required reviewed pnpm dependency build scripts for workspace installs (#17558).
  • Reduced Rust maintenance surface with broader absolute-path types and removal of unused helper APIs (#17407, #17792, #17146).

Changelog

Full Changelog: https://github.com/openai/codex/compare/rust-v0.120.0...rust-v0.121.0

  • #17087 Add marketplace command @xli-oai
  • #17409 Fix Windows exec-server output test flake @etraut-openai
  • #17381 representing guardian review timeouts in protocol types @won-openai
  • #17399 TUI: enforce core boundary @etraut-openai
  • #17370 fix: unblock private DNS in macOS sandbox @viyatb-oai
  • #17396 update cloud requirements parse failure msg @alexsong-oai
  • #17364 [mcp] Support MCP Apps part 3 - Add mcp tool call support. @mzeng-openai
  • #17424 Stabilize marketplace add local source test @ningyi-oai
  • #17414 Fix thread/list cwd filtering for Windows verbatim paths @etraut-openai
  • #10431 feat(devcontainer): add separate secure customer profile @viyatb-oai
  • #17314 Pass turn id with feedback uploads @ningyi-oai
  • #17336 fix(tui): recall accepted slash commands locally @fcoury-oai
  • #17430 Handle closed TUI input stream as shutdown @etraut-openai
  • #17385 Add use_agent_identity feature flag @adrian-openai
  • #17483 Update issue labeler agent labels @etraut-openai
  • #17493 fix @aibrahim-oai
  • #17419 Support prolite plan type @etraut-openai
  • #17416 Clear /ps after /stop @etraut-openai
  • #17415 Restore codex-tui resume hint on exit @etraut-openai
  • #17402 chore: refactor name and namespace to single type @sayan-oai
  • #17486 changing decision semantics after guardian timeout @won-openai
  • #17521 Clarify guardian timeout guidance @won-openai
  • #17547 [codex] Support bubblewrap in secure Docker devcontainer @viyatb-oai
  • #17519 Budget realtime current thread context @aibrahim-oai
  • #17556 [codex] Support flattened deferred MCP tool calls @fc-oai
  • #17558 build(pnpm): require reviewed dependency build scripts @mcgrew-oai
  • #17559 fix(sandboxing): reject WSL1 bubblewrap sandboxing @viyatb-oai
  • #17520 Mirror user text into realtime @aibrahim-oai
  • #17550 feat(tui): add reverse history search to composer @fcoury-oai
  • #17420 Remove context status-line meter @etraut-openai
  • #17506 Expose instruction sources (AGENTS.md) via app server @etraut-openai
  • #17566 fix(mcp) pause timer for elicitations @dylan-hurd-oai
  • #17406 Add MCP tool wall time to model output @pakrym-oai
  • #17294 Run exec-server fs operations through sandbox helper @starr-openai
  • #17605 Stabilize exec-server process tests @etraut-openai
  • #17221 feat: ignore keyring on 0.0.0 @jif-oai
  • #17216 Build remote exec env from exec-server policy @jif-oai
  • #17633 nit: change consolidation model @jif-oai
  • #17640 fix: stability exec server @jif-oai
  • #17643 fix: dedup compact @jif-oai
  • #17247 Make forked agent spawns keep parent model config @friel-openai
  • #17470 Fix custom tool output cleanup on stream failure @etraut-openai
  • #17417 Emit plan-mode prompt notifications for questionnaires @etraut-openai
  • #17481 Wrap status reset timestamps in narrow layouts @etraut-openai
  • #17601 Suppress duplicate compaction and terminal wait events @etraut-openai
  • #17657 Fix TUI compaction item replay @etraut-openai
  • #17595 Do not fail thread start when trust persistence fails @etraut-openai
  • #17407 Use AbsolutePathBuf in skill loading and codex_home @pakrym-oai
  • #17626 feat: disable memory endpoint @jif-oai
  • #17365 Include legacy deny paths in elevated Windows sandbox setup @iceweasel-oai
  • #17638 feat: Avoid reloading curated marketplaces for tool-suggest discoveraโ€ฆ @jif-oai
  • #17398 app-server: Only unload threads which were unused for some time @euroelessar
  • #17669 only specify remote ports when the rule needs them @iceweasel-oai
  • #17691 Fix tui compilation @davidhao3300
  • #17384 Update phase 2 memory model to gpt-5.4 @kliu128
  • #17395 Remove unnecessary tests @kliu128
  • #17685 Cap realtime mirrored user turns @aibrahim-oai
  • #17699 change realtime tool description @aibrahim-oai
  • #17667 Add supports_parallel_tool_calls flag to included mcps @josiah-openai
  • #17703 Add turn item injection API @pakrym-oai
  • #17671 Stabilize exec-server filesystem tests in CI @starr-openai
  • #17557 guardian timeout fix pr 3 - ux touch for timeouts @won-openai
  • #17719 [codex] Add symlink flag to fs metadata @pakrym-oai
  • #17146 [codex] Remove unused Rust helpers @pakrym-oai
  • #17471 fix: pin inputs @viyatb-oai
  • #17717 [codex] Refactor marketplace add into shared core flow @xli-oai
  • #17747 Refactor plugin loading to async @pakrym-oai
  • #17709 [codex] Initialize ICU data for code mode V8 @pakrym-oai
  • #17749 [codex] drain mailbox only at request boundaries @tibo-openai
  • #16640 [codex-analytics] feature plumbing and emittance @rhan-oai
  • #17761 Tighten realtime handoff finalization @aibrahim-oai
  • #17701 Add realtime output modality and transcript events @aibrahim-oai
  • #17777 nit: feature flag @jif-oai
  • #17637 feat: add context percent to status line @jif-oai
  • #17665 Always enable original image detail on supported models @fjord-oai
  • #17374 [codex-analytics] add session source to client metadata @marksteinbrick-oai
  • #17489 Moving updated-at timestamps to unique millisecond times @ddr-oai
  • #17784 feat: codex sampler @jif-oai
  • #17732 fix: Revert danger-full-access denylist-only mode @viyatb-oai
  • #17234 Redirect debug client output to a file @rasmusrygaard
  • #17803 Keep image_detail_original as a removed feature flag @fjord-oai
  • #17372 app-server: prepare to run initialized rpcs concurrently @euroelessar
  • #17704 Refactor Bazel CI job setup @bolinfest
  • #17674 Route apply_patch through the environment filesystem @starr-openai
  • #17702 Fix remote skill popup loading @starr-openai
  • #17830 [codex] Fix app-server initialized request analytics build @etraut-openai
  • #17389 [codex-analytics] enable general analytics by default @rhan-oai
  • #17659 thread store interface @wiltzius-openai
  • #17792 Spread AbsolutePathBuf @pakrym-oai
  • #17808 fix: apply patch bin refresh @jif-oai
  • #17838 Add realtime wire trace logs @aibrahim-oai
  • #17684 Adjust default tool search result caps @malone-oai
  • #17705 Add Bazel verify-release-build job @bolinfest
  • #17720 Make skill loading filesystem-aware @pakrym-oai
  • #17756 [codex] Support local marketplace sources @xli-oai
  • #17846 Fix for Guardian CI Tests stack overflow, applying Box to reduce stack pressure @won-openai
  • #17855 support plugins in external agent config migration @alexsong-oai
  • #17872 Disable hooks in guardian review sessions @abhinav-oai
  • #17868 Wrap delegated input text @guinness-oai
  • #17884 Fix clippy warnings in external agent config migration @canvrno-oai
  • #17837 Reuse remote exec-server in core tests @starr-openai
  • #17859 sandbox: remove dead seatbelt helper and update tests @bolinfest
  • #17870 fix: cleanup the contract of the general-purpose exec() function @bolinfest
  • #17871 fix: add websocket capability token hash support @viyatb-oai
  • #17763 Send sandbox state through MCP tool metadata @aaronl-openai
  • #17654 Support Unix socket allowlists in macOS sandbox @aaronl-openai
  • #17915 fix: cargo deny @jif-oai
  • #17913 feat: add endpoint to delete memories @jif-oai
  • #17844 feat: cleaning of memories extension @jif-oai
  • #17921 chore: exp flag @jif-oai
  • #17917 [codex] Fix current main CI blockers @sayan-oai
  • #17919 chore: do not disable memories for past rollouts on reset @jif-oai
  • #17924 nit: stable test @jif-oai
  • #17632 feat: memories menu @jif-oai
  • #17404 register all mcp tools with namespace @sayan-oai
  • #17941 nit: doc @jif-oai
  • #17938 feat: sanitize rollouts before phase 1 @jif-oai
  • #17937 feat: reset memories button @jif-oai
  • #17883 Remove exec-server fs sandbox request preflight @pakrym-oai
  • #17386 Register agent identities behind use_agent_identity @adrian-openai
  • #17907 Fix fs/readDirectory to skip broken symlinks @willwang-openai
  • #17960 chore(features) codex dependencies feat @dylan-hurd-oai
  • #17965 fix: rename is_azure_responses_wire_base_url to is_azure_responses_provider @bolinfest
  • #17946 Fix empty tool descriptions @shijie-oai
  • #17824 [codex] Add local thread store listing @wiltzius-openai
  • #17942 Add CLI update announcement @shijie-oai
  • #17866 Refactor auth providers to mutate request headers @pakrym-oai
  • #17902 app-server: track remote-control seq IDs per stream @euroelessar
  • #17957 mcp: remove codex/sandbox-state custom request support @bolinfest
  • #17953 fix: propagate log db @jif-oai
  • #17920 chore(tui) cleanup @dylan-hurd-oai
  • #17981 chore: tmp disable @jif-oai