Codex: rust-v0.115.0 Release

Release date:
March 16, 2026
Previous version:
rust-v0.115.0-alpha.28 (released March 16, 2026)
Magnitude:
0 Diff Delta
Contributors:
0 total committers
Data confidence:
Commits:

Top Contributors in rust-v0.115.0

Could not determine top contributors for this release.

Directory Browser for rust-v0.115.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

  • Supported models can now request full-resolution image inspection through both view_image and codex.emitImage(..., detail: "original"), which helps with precision visual tasks. (#14175)
  • js_repl now exposes codex.cwd and codex.homeDir, and saved codex.tool(...) / codex.emitImage(...) references keep working across cells. (#14385, #14503)
  • Realtime websocket sessions gained a dedicated transcription mode, plus v2 handoff support through the codex tool, with a unified [realtime] session config. (#14554, #14556, #14606)
  • The v2 app-server now exposes filesystem RPCs for file reads, writes, copies, directory operations, and path watching, and there is a new Python SDK for integrating with that API. (#14245, #14435)
  • Smart Approvals can now route review requests through a guardian subagent in core, app-server, and TUI, reducing repeated setup work on follow-up approvals. (#13860, #14668)
  • App integrations now use the Responses API tool-search flow, can suggest missing tools, and fall back cleanly when the active model does not support search-based lookup. (#14274, #14287, #14732)

Bug Fixes

  • Spawned subagents now inherit sandbox and network rules more reliably, including project-profile layering, persisted host approvals, and symlinked writable roots. (#14619, #14650, #14674, #14807)
  • js_repl no longer hangs when dynamic tool responses contain literal U+2028 or U+2029 characters. (#14421)
  • The TUI no longer stalls on exit after creating subagents, and interrupting a turn no longer tears down background terminals by default. (#14816, #14602)
  • codex exec --profile once again preserves profile-scoped settings when starting or resuming a thread. (#14524)
  • MCP and elicitation flows are more robust, with safer tool-name normalization and preserved tool_params in approval prompts. (#14491, #14605, #14769)
  • The local network proxy now serves CONNECT traffic as explicit HTTP/1, improving compatibility with HTTP proxy clients. (#14395)

Chores

  • The subagent wait tool is now consistently named wait_agent, aligning it with spawn_agent and send_input. (#14631)

Changelog

Full Changelog: https://github.com/openai/codex/compare/rust-v0.114.0...rust-v0.115.0

  • #14395 fix(network-proxy): serve HTTP proxy listener as HTTP/1 @viyatb-oai
  • #14385 Add js_repl cwd and homeDir helpers @fjord-oai
  • #14376 Keep agent-switch word-motion keys out of draft editing @joshka-oai
  • #14175 Let models opt into original image detail @fjord-oai
  • #14382 check for large binaries in CI @owenlin0
  • #14392 chore(app-server): stop emitting codex/event/ notifications @owenlin0
  • #14274 feat: search_tool migrate to bring you own tool of Responses API @apanasenko-oai
  • #14174 refactor: centralize filesystem permissions precedence @viyatb-oai
  • #14394 chore(app-server): delete unused rpc methods from v1.rs @owenlin0
  • #14171 fix: align core approvals with split sandbox policies @viyatb-oai
  • #14410 Make collab model metadata accurate on completion @aibrahim-oai
  • #14387 feat(app-server): propagate traces across tasks and core ops @owenlin0
  • #14407 chore: use AVAILABLE and ON_INSTALL as default plugin install and auth policies @sayan-oai
  • #14287 [apps] Add tool_suggest tool. @mzeng-openai
  • #14432 Clarify spawn agent authorization @aibrahim-oai
  • #14295 Support waiting for code_mode sessions @pakrym-oai
  • #14427 feat: refactor on openai-curated plugins. @xl-openai
  • #13996 refactor: make bubblewrap the default Linux sandbox @viyatb-oai
  • #14440 fix: follow up on linux sandbox review nits @viyatb-oai
  • #14431 Handle pre-approved permissions in zsh fork @mousseau-oai
  • #14403 [elicitation] User-friendly tool call messages. @mzeng-openai
  • #14429 Use granted permissions when invoking apply_patch @mousseau-oai
  • #14471 Updated out-of-date tip about availability on free and go plans @etraut-openai
  • #14444 fix: move inline codex-rs/core unit tests into sibling files @bolinfest
  • #14437 Dispatch tools when code mode is not awaited directly @pakrym-oai
  • #14435 Add Python app-server SDK @shaqayeq-oai
  • #14473 fix(cli): support legacy use_linux_sandbox_bwrap flag @viyatb-oai
  • #13882 Fix stdio-to-uds peer-close flake @aibrahim-oai
  • #14476 Move code mode tool files under tools/code_mode and split functionality @pakrym-oai
  • #14475 rename spawn_csv feature flag to enable_fanout @daveaitel-openai
  • #14173 fix: preserve split filesystem semantics in linux sandbox @viyatb-oai
  • #14480 Cleanup code_mode tool descriptions @pakrym-oai
  • #14488 Handle malformed agent role definitions nonfatally @gabec-openai
  • #14398 Do not allow unified_exec for sandboxed scenarios on Windows @iceweasel-oai
  • #14419 use scopes_supported for OAuth when present on MCP servers @jgershen-oai
  • #14484 Add default code-mode yield timeout @pakrym-oai
  • #14494 Add parallel tool call test @pakrym-oai
  • #14478 chore(app-server): stop exporting EventMsg schemas @owenlin0
  • #14490 fix turn_start_jsonrpc_span_parents_core_turn_spans flakiness @owenlin0
  • #14496 Reuse tool runtime for code mode worker @pakrym-oai
  • #14421 Fix js_repl hangs on U+2028/U+2029 dynamic tool responses @aaronl-openai
  • #14505 Skip nested tool call parallel test on Windows @pakrym-oai
  • #14491 Fix MCP tool calling @pakrym-oai
  • #14493 memories: focus write prompts on user preferences @andi-oai
  • #14510 Rename exec session IDs to cell IDs @pakrym-oai
  • #14500 Update tool search prompts @mzeng-openai
  • #14426 Decouple request permissions feature and tool @mousseau-oai
  • #14503 Persist js_repl codex helpers across cells @fjord-oai
  • #14517 Expose code-mode tools through globals @pakrym-oai
  • #14502 feat(search_tool): gate search_tool on model supports_search_tool field @apanasenko-oai
  • #14521 Reapply "Pass more params to compaction" (#14298) @rasmusrygaard
  • #14524 Fix codex exec --profile handling @etraut-openai
  • #14516 Rename reject approval policy to granular @mousseau-oai
  • #14445 feat: add plugin/read. @xl-openai
  • #14178 login: add custom CA support for login flows @joshka-oai
  • #14535 Split multi-agent handlers per tool @pakrym-oai
  • #13329 [js_repl] Hard-stop active js_repl execs on explicit user interrupts @aaronl-openai
  • #14239 client: extend custom CA handling across HTTPS and websocket clients @joshka-oai
  • #14536 Add typed multi-agent tool outputs @pakrym-oai
  • #14514 fix: reopen writable linux carveouts under denied parents @viyatb-oai
  • #14531 Add plugin usage telemetry @alexsong-oai
  • #14511 code_mode: Move exec params from runtime declarations to @pragma @cconger
  • #14504 Refactor cloud requirements error and surface in JSON-RPC error @alexsong-oai
  • #14537 Add realtime v2 event parser behind feature flag @aibrahim-oai
  • #14529 Simplify permissions available in request permissions tool @mousseau-oai
  • #14522 feat: support skill-scoped managed network domain overrides in skill config @celia-oai
  • #14554 Add codex tool support for realtime v2 handoff @aibrahim-oai
  • #14556 Add realtime transcription mode for websocket sessions @aibrahim-oai
  • #14518 Add diagnostics for read_only_unless_trusted timeout flake @aibrahim-oai
  • #14603 Split multi-agent handler into dedicated files @pakrym-oai
  • #14526 code mode: single line tool declarations @pakrym-oai
  • #14400 Use a private desktop for Windows sandbox instead of Winsta0\Default @iceweasel-oai
  • #14558 sending back imagaegencall response back to responseapi @won-openai
  • #14553 Improve granular approval policy prompt @mousseau-oai
  • #14541 chore: clarify plugin + app copy in model instructions @sayan-oai
  • #14542 [bazel] Bump up cc and rust toolchains @zbarsky-openai
  • #14512 Start TUI on embedded app server @etraut-openai
  • #14606 Unify realtime v1/v2 session config @aibrahim-oai
  • #14527 app-server: Add platform os and family to init response @euroelessar
  • #14618 Use subagents naming in the TUI @aibrahim-oai
  • #14304 Override local apps settings with requirements.toml settings @canvrno-oai
  • #14479 feat(app-server, core): add more spans @owenlin0
  • #13644 fix: preserve zsh-fork escalation fds across unified-exec spawn paths @bolinfest
  • #14617 Add code_mode_only feature @pakrym-oai
  • #13201 Slash copy osc52 wsl support @won-openai
  • #14631 Rename multi-agent wait tool to wait_agent @aibrahim-oai
  • #14622 Stabilize multi-agent feature flag @aibrahim-oai
  • #14245 app-server: add v2 filesystem APIs @euroelessar
  • #14605 Normalize MCP tool names to code-mode safe form @pakrym-oai
  • #14637 Fix wait_agent expectations in core tests @charley-oai
  • #13860 Add Smart Approvals guardian review across core, app-server, and TUI @charley-oai
  • #14639 Fix stale create_wait_tool reference @charley-oai
  • #14532 [hooks] stop continuation & stop_hook_active mechanics @eternal-openai
  • #14635 Fix realtime transcription session.update tools payload @aibrahim-oai
  • #14636 Use parser-specific realtime voice enum @aibrahim-oai
  • #14633 refactor: make unified-exec zsh-fork state explicit @bolinfest
  • #12031 Add openai_base_url config override for built-in provider @etraut-openai
  • #14645 Fix Windows CI assertions for guardian and Smart Approvals @aibrahim-oai
  • #14616 Fix turn context reconstruction after backtracking @charley-oai
  • #14619 fix: persist future network host approvals across sessions @viyatb-oai
  • #14650 fix: sync split sandbox policies for spawned subagents @viyatb-oai
  • #14609 move plugin/skill instructions into dev msg and reorder @sayan-oai
  • #12024 Enforce errors on overriding built-in model providers @etraut-openai
  • #14646 Refresh Python SDK generated types @sayan-oai
  • #14649 make defaultPrompt an array, keep backcompat @sayan-oai
  • #14501 dynamic tool calls: add param exposeToContext to optionally hide tool @cconger
  • #14651 Add argument-comment Dylint runner @bolinfest
  • #14674 fix: fix symlinked writable roots in sandbox policies @viyatb-oai
  • #14611 Add auth 401 recovery observability to client bug reports @ccy-oai
  • #14647 [apps] Add tool call meta. @mzeng-openai
  • #14732 [apps] Improve search tool fallback. @mzeng-openai
  • #14602 Preserve background terminals on interrupt and rename cleanup command to /stop @friel-openai
  • #14668 Reuse guardian session across approvals @charley-oai
  • #14769 fix(core): preserve tool_params for elicitations @mzeng-openai
  • #14807 fix: sub-agent role when using profiles @jif-oai
  • #14806 feat: improve skills cache key to take into account config layering @jif-oai
  • #13850 feat: make interrupt state not final for multi-agents @jif-oai
  • #14816 fix: tui freeze when sub-agents are present @jif-oai