New Features
- Supported models can now request full-resolution image inspection through both
view_imageandcodex.emitImage(..., detail: "original"), which helps with precision visual tasks. (#14175) js_replnow exposescodex.cwdandcodex.homeDir, and savedcodex.tool(...)/codex.emitImage(...)references keep working across cells. (#14385, #14503)- Realtime websocket sessions gained a dedicated transcription mode, plus v2 handoff support through the
codextool, 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_replno 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 --profileonce 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_paramsin 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 withspawn_agentandsend_input. (#14631)
Changelog
Full Changelog: 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 --profilehandling @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
exposeToContextto 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