OpenAI Codex CLI rust-v0.115.0

New Features - Supported models can now request full-resolution image inspection through both viewimage and codex.emitImage(..., detail: "original"), which helps with precision visual tasks. (14175...

New Features - Supported models can now request full-resolution image inspection through both viewimage and codex.emitImage(..., detail: "original"), which helps with precision visual tasks. (14175) - jsrepl 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) - jsrepl 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 toolparams 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 waitagent, aligning it with spawnagent and sendinput. (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 jsrepl 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: searchtool 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 ONINSTALL as default plugin install and auth policies @sayan-oai - 14287 [apps] Add toolsuggest tool. @mzeng-openai - 14432 Clarify spawn agent authorization @aibrahim-oai - 14295 Support waiting for codemode 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 applypatch @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 uselinuxsandboxbwrap flag @viyatb-oai - 13882 Fix stdio-to-uds peer-close flake @aibrahim-oai - 14476 Move code mode tool files under tools/codemode and split functionality @pakrym-oai - 14475 rename spawncsv feature flag to enablefanout @daveaitel-openai - 14173 fix: preserve split filesystem semantics in linux sandbox @viyatb-oai - 14480 Cleanup codemode tool descriptions @pakrym-oai - 14488 Handle malformed agent role definitions nonfatally @gabec-openai - 14398 Do not allow unifiedexec for sandboxed scenarios on Windows @iceweasel-oai - 14419 use scopessupported 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 turnstartjsonrpcspanparentscoreturnspans flakiness @owenlin0 - 14496 Reuse tool runtime for code mode worker @pakrym-oai - 14421 Fix jsrepl 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 jsrepl codex helpers across cells @fjord-oai - 14517 Expose code-mode tools through globals @pakrym-oai - 14502 feat(searchtool): gate searchtool on model supportssearchtool 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 [jsrepl] Hard-stop active jsrepl 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 codemode: 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 readonlyunlesstrusted 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 codemodeonly feature @pakrym-oai - 13201 Slash copy osc52 wsl support @won-openai - 14631 Rename multi-agent wait tool to waitagent @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 waitagent expectations in core tests @charley-oai - 13860 Add Smart Approvals guardian review across core, app-server, and TUI @charley-oai - 14639 Fix stale createwaittool reference @charley-oai - 14532 [hooks] stop continuation & stophookactive 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 openaibaseurl 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 toolparams 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