OpenAI Codex CLI rust-v0.117.0

New Features - Plugins are now a first-class workflow: Codex can sync product-scoped plugins at startup, browse them in /plugins, and install or remove them with clearer auth/setup handling. (15041...

New Features - Plugins are now a first-class workflow: Codex can sync product-scoped plugins at startup, browse them in /plugins, and install or remove them with clearer auth/setup handling. (15041, 15042, 15195, 15215, 15217, 15264, 15275, 15342, 15580, 15606, 15802) - Sub-agents now use readable path-based addresses like /root/agenta, with structured inter-agent messaging and agent listing for multi-agent v2 workflows. (15313, 15515, 15556, 15570, 15621, 15647) - The /title terminal-title picker now works in both the classic TUI and the app-server TUI, making parallel sessions easier to tell apart. (12334, 15860) - App-server clients can now send ! shell commands, watch filesystem changes, and connect to remote websocket servers with bearer-token auth. (14988, 14533, 14847, 14853) - Image workflows got smoother: viewimage now returns image URLs for code mode, generated images are reopenable from the TUI, and image-generation history survives resume. (15072, 15154, 15223) - Prompt history recall now works in the app-server TUI, including across sessions. (14945) Bug Fixes - tuiappserver no longer duplicates live reasoning summaries or /review output, and it preserves transcript text instead of dropping it under backpressure. (15758, 15839, 15759) - ChatGPT login in tuiappserver now opens the local browser again, cancels cleanly on Ctrl+C, and no longer fails startup when you're logged out. (15672, 15673, 15670) - Early exits now restore terminal state reliably, avoiding broken shell state after quitting; tmux users also get a working queued-message edit shortcut on Shift+Left. (15671, 15480) - Linux sandboxed tool calls are more reliable on older distributions with older bubblewrap, and Windows restricted-token sandboxing now supports more split-policy carveout layouts. (15693, 14172) - Remote multi-agent sessions now show agent names instead of raw IDs and recover more gracefully from stale turn-steering races. (15513, 15714, 15163) - Plugin-backed mentions and product gating now behave more predictably, fixing cases where explicit mentions lost context or plugins were filtered incorrectly. (15372, 15263, 15279) Documentation - Expanded the app-server and exec-server docs/schema fixtures to cover exec-server setup, filesystem watch RPCs, realtime transcript notifications, and the new Python thread.run(...) quickstart flow. (15089, 14533, 15344, 15088) Chores - The app-server-backed TUI is now enabled by default, and the plugin/app rollout flags have been flipped on in normal builds. (15661, 15713, 15719, 15820) - Removed the legacy artifact tool and retired the old readfile and grepfiles handlers as part of ongoing tool-surface cleanup. (15851, 15864, 15773, 15775) Changelog Full Changelog: https://github.com/openai/codex/compare/rust-v0.116.0...rust-v0.117.0 - 14945 feat(tui): restore composer history in app-server tui @fcoury - 15092 fix: try to fix "Stage npm package" step in ci.yml @bolinfest - 15075 Propagate tool errors to code mode @pakrym-oai - 15072 Return image URL from viewimage tool @pakrym-oai - 15076 Add a startup deprecation warning for custom prompts @etraut-openai - 15102 Revert "fix: harden plugin feature gating" @xl-openai - 15077 Add final message prefix to realtime handoff output @aibrahim-oai - 13494 Align SQLite feedback logs with feedback formatter @charley-oai - 14888 Feat: reuse persisted model and reasoning effort on thread resume @shijie-oai - 15111 don't add transcript for v2 realtime @aibrahim-oai - 15103 Add updateplan code mode result @pakrym-oai - 15100 Add applypatch code mode result @pakrym-oai - 15104 fix: harden plugin feature gating @xl-openai - 15089 Add exec-server stub server and protocol docs @starr-openai - 15042 Support featured plugins @alexsong-oai - 15088 Add Python SDK thread.run convenience methods @shaqayeq-oai - 15119 Remove stdio transport from exec server @pakrym-oai - 14632 feat(core, tracing): create turn spans over websockets @owenlin0 - 15011 Forward session and turn headers to MCP HTTP requests @nicholasclark-openai - 15118 [hooks] turnid extension for Stop & UserPromptSubmit @eternal-openai - 14970 Simple directory mentions @canvrno-oai - 14988 Add thread/shellCommand to app server API surface @etraut-openai - 15041 feat: support product-scoped plugins. @xl-openai - 15056 feat: add graph representation of agent network @jif-oai - 15163 fix: case where agent is already closed @jif-oai - 15125 Move environment abstraction into exec server @pakrym-oai - 15180 chore: add metrics for profile @jif-oai - 15175 chore: morpheus does not generate memories @jif-oai - 15185 Revert "Forward session and turn headers to MCP HTTP requests" @nicholasclark-openai - 14867 [hooks] use a user message > developer message for prompt continuation @eternal-openai - 15196 Add experimental exec server URL handling @pakrym-oai - 15198 Publish runnable DotSlash package for argument-comment lint @bolinfest - 15090 Add exec-server process and filesystem RPCs @starr-openai - 15201 Log automated reviewer approval sources distinctly @gabec-openai - 12334 feat(tui): add /title terminal title configuration @yvolovich-cyber - 15206 feat(tracing): tag app-server turn spans with turnid @owenlin0 - 15216 Move terminal module to terminal-detection crate @aibrahim-oai - 15207 add specific tool guidance for Windows destructive commands @iceweasel-oai - 15154 adding full imagepath to tui @won-openai - 15217 feat: expose needsauth for plugin/read. @xl-openai - 15190 Plumb MCP turn metadata through meta @nicholasclark-openai - 15220 feat(app-server): add mcpServer/startupStatus/updated notification @owenlin0 - 15222 changed save directory to codexhome @won-openai - 15232 Refactor ExecServer filesystem split between local and remote @pakrym-oai - 15021 V8 Bazel Build @cconger - 15150 Move auth code into login crate @aibrahim-oai - 15195 [plugins] Install MCPs when calling plugin/install @mzeng-openai - 15254 core: add a full-buffer exec capture policy @bolinfest - 15263 fix: Distinguish missing and empty plugin products @xl-openai - 15253 Split features into codex-features crate @aibrahim-oai - 15233 Split exec process into local and remote implementations @starr-openai - 15199 Use released DotSlash package for argument-comment lint @bolinfest - 15215 Initial plugins TUI menu - list and read only. tui + tuiappserver @canvrno-oai - 15252 Disable hooks on windows for now @eternal-openai - 15264 feat: Add One-Time Startup Remote Plugin Sync @xl-openai - 15262 Add guardian follow-up reminder @charley-oai - 15223 Feat/restore image generation history @won-openai - 15275 feat: prefer git for curated plugin sync @xl-openai - 14869 Add remote env CI matrix and integration test @pakrym-oai - 15218 Add temporary app-server originator fallback for codex-tui @etraut-openai - 15328 try to fix bazel @jif-oai - 15324 Add remote test skill @pakrym-oai - 15313 feat: change multi-agent to use path-like system instead of uuids @jif-oai - 15244 Pin Python SDK app-server stdio to UTF-8 on Windows @shaqayeq-oai - 15337 Bump aws-lc-rs @cconger - 15203 Add v8-poc consumer of our new built v8 @cconger - 15273 [apps] Use ARC for yolo mode. @mzeng-openai - 15128 chore(core) Remove Feature::PowershellUtf8 @dylan-hurd-oai - 15344 Add realtime transcript notification in v2 @aibrahim-oai - 15285 Gate tui /plugins menu behind flag @canvrno-oai - 15114 fix: allow restricted filesystem profiles to read helper executables @celia-oai - 15231 chore(core) update prefixrule guidance @dylan-hurd-oai - 15036 fix(core) disable commandmightbedangerous when unsandboxed @dylan-hurd-oai - 15348 Pass platform param to featured plugins @alexsong-oai - 15276 Code mode on v8 @cconger - 15372 [plugins] Fix plugin explicit mention context management. @mzeng-openai - 15366 chore(context) Include guardian approval context @dylan-hurd-oai - 15390 Remove legacy app-server notification handling from tuiappserver @etraut-openai - 15409 Add JIT entitlement for macosx @cconger - 15414 Remove legacy auth and notification handling from tuiappserver @etraut-openai - 15376 [apps] Improve app tools loading for TUI. @mzeng-openai - 15415 chore(execpolicy) ExecPolicyRequirementScenario tests @dylan-hurd-oai - 15464 Remove smartapprovals alias migration @charley-oai - 15443 core: snapshot fork startup context injection @charley-oai - 15480 Use Shift+Left to edit queued messages in tmux @charley-oai - 15317 nit: guard -> registry @jif-oai - 15338 fix: fall back to vendored bubblewrap when system bwrap lacks --argv0 @bolinfest - 15520 fix: cargo deny @jif-oai - 15279 Label plugins as plugins, and hide skills/apps for given plugin @canvrno-oai - 15259 tui: queue follow-ups during manual /compact @charley-oai - 15515 feat: structured multi-agent output @jif-oai - 15357 Fix: proactive auth refresh to reload guarded disk state first @celia-oai - 15342 Plugins TUI install/uninstall @canvrno-oai - 15540 chore: split sub-agent v2 implementation @jif-oai - 15516 Thread guardian Responses API errors into denial rationale @charley-oai - 15378 feat: support disable skills by name. @xl-openai - 15529 Unify realtime stop handling in TUI @aibrahim-oai - 15557 fix: main tui @jif-oai - 15556 feat: new op type for sub-agents communication @jif-oai - 15211 [hooks] add non-streaming (non-stdin style) shell-only PreToolUse support @eternal-openai - 15560 feat: use serde to differenciate inter agent communication @jif-oai - 15426 chore(core) Add approvals reviewer to UserTurn @dylan-hurd-oai - 15562 [codex] Add rollback context duplication snapshot @charley-oai - 15570 feat: custom watcher for multi-agent v2 @jif-oai - 15575 feat: custom watcher for multi-agent v2 @jif-oai - 15576 feat: custom watcher for multi-agent v2 @jif-oai - 15360 fix: build PATH env var using OsString instead of String @bolinfest - 15239 Add fork snapshot modes @charley-oai - 15554 Add plugin-creator as system skill @alexsong-oai - 15592 Extract landlock helpers into codex-sandboxing @pakrym-oai - 15593 Move macOS sandbox builders into codex-sandboxing @pakrym-oai - 15478 [codex-cli][app-server] Update self-serve business usage limit copy in error returned @dhruvgupta-oai - 15600 move imagegen skill into system skills @dkundel-openai - 15599 Move sandbox policy transforms into codex-sandboxing @pakrym-oai - 15580 Remove filter from plugins/list result @canvrno-oai - 15581 Stabilize macOS CI test timeouts @dylan-hurd-oai - 15613 nit: split v2 wait @jif-oai - 15614 fix: flaky test @jif-oai - 15621 feat: list agents for sub-agent v2 @jif-oai - 15623 nit: optim on list agents @jif-oai - 15549 Allow global network allowlist wildcard @rreichel3-oai - 15424 Finish moving codex exec to app-server @etraut-openai - 15603 Extract sandbox manager and transforms into codex-sandboxing @pakrym-oai - 15484 chore(deps): bump pnpm/action-setup from 4 to 5 @dependabot - 14777 Bump vedantmgoyal9/winget-releaser from 19e706d4c9121098010096f9c495a70a7518b30f to 7bd472be23763def6e16bd06cc8b1cdfab0e2fd5 @dependabot - 15558 [Codex TUI] - Sort /plugins TUI menu by installed status first, alpha second @canvrno-oai - 15598 Refresh mentions list after plugin install/uninstall @canvrno-oai - 15624 feat: disable notifier v2 and start turn on agent interaction @jif-oai - 15605 [codex] Stabilize compact resume and fork snapshot flaky tests @charley-oai - 15658 try to fix git glitch @jif-oai - 15657 try to fix git glitch @jif-oai - 15656 try to fix git glitch @jif-oai - 15655 try to fix git glitch @jif-oai - 15654 try to fix git glitch @jif-oai - 15653 try to fix git glitch @jif-oai - 15652 try to fix git glitch @jif-oai - 15651 try to fix git glitch @jif-oai - 15650 try to fix git glitch @jif-oai - 15606 Pretty plugin labels, preserve plugin app provenance during MCP tool refresh @canvrno-oai - 15579 Increase voice space hold timeout to 1s @aibrahim-oai - 15093 core: Make FileWatcher reusable @euroelessar - 15547 app-server: Add back pressure and batching to command/exec @euroelessar - 15647 feat: communication pattern v2 @jif-oai - 15438 feat: include marketplace loading error in plugin/list @xl-openai - 15545 chore: use access token expiration for proactive auth refresh @celia-oai - 15530 chore: stop app-server auth refresh storms after permanent token failure @celia-oai - 15577 Trim pre-turn context updates during rollback @charley-oai - 15660 Hide numeric prefixes on disabled TUI list rows @canvrno-oai - 15644 fix: keep zsh-fork release assets after removing shell-tool-mcp @bolinfest - 15670 tuiappserver: tolerate missing rate limits while logged out @etraut-openai - 15564 Move git utilities into a dedicated crate @aibrahim-oai - 15669 Clean up TUI /plugins row allignment @canvrno-oai - 15671 tui: always restore the terminal on early exit @etraut-openai - 15672 tuiappserver: open ChatGPT login in the local browser @etraut-openai - 15673 tuiappserver: cancel active login before Ctrl+C exit @etraut-openai - 15676 Tweak /plugin menu wording @canvrno-oai - 15666 Suppress plugin-install MCP OAuth URL console spam @canvrno-oai - 15573 [plugins] Additional gating for tool suggest and apps. @mzeng-openai - 15665 Drop sandboxpermissions from sandbox exec requests @pakrym-oai - 15572 Move string truncation helpers into codex-utils-string @aibrahim-oai - 14533 app-server: add filesystem watch support @euroelessar - 15674 Use delayed shimmer for plugin loading headers in tui and tuiappserver @canvrno-oai - 15689 app-server: Return codex home in initialize response @euroelessar - 15363 fix: keep rmcp-client env vars as OsString @bolinfest - 15700 Remove provenance filtering in $mentions for apps and skills from plugins @canvrno-oai - 15692 Add legal link to TUI /plugin details @canvrno-oai - 15351 Expand ~ in MDM workspace write roots @evawong-oai - 15548 Extract rollout into its own crate @aibrahim-oai - 15699 [codex] Defer fork context injection until first turn @charley-oai - 15601 [app-server] Add a method to override feature flags. @mzeng-openai - 15708 TUI plugin menu cleanup - hide app ID @canvrno-oai - 15677 Fix stale quickstart integration assertion @shaqayeq-oai - 15713 [plugins] Flip the flags. @mzeng-openai - 15719 [plugins] Flip on additional flags. @mzeng-openai - 14172 fix: support split carveouts in windows restricted-token sandbox @viyatb-oai - 15714 Fix stale turn steering fallback in tuiappserver @etraut-openai - 15722 [plugins] Add a flag for tool search. @mzeng-openai - 15734 Update plugin creator skill. @xl-openai - 15766 chore: tty metric @jif-oai - 15519 fix(core): default approval behavior for mcp missing annotations @fouad-openai - 15775 chore: remove grepfiles handler @jif-oai - 15710 Use AbsolutePathBuf for cwd state @pakrym-oai - 15778 feat: rendering library v1 @jif-oai - 15758 fix(tui): avoid duplicate live reasoning summaries @fcoury - 15773 chore: remove readfile handler @jif-oai - 15776 feat: add multi-thread log query @jif-oai - 15744 Extract codex-instructions crate @aibrahim-oai - 15339 Add non-interactive resume filter option @nornagon-openai - 15746 Extract codex-utils-plugins crate @aibrahim-oai - 15747 Extract codex-plugin crate @aibrahim-oai - 15748 Extract codex-analytics crate @aibrahim-oai - 15707 Clarify codexhome base for MDM path resolution @evawong-oai - 15513 fix(tuiappserver): fix remote subagent switching and agent names @fcoury - 14856 [apps][toolsuggest] Remove toolsuggest's dependency on tool search. @mzeng-openai - 14847 feat: add websocket auth for app-server @viyatb-oai - 15759 fix(tuiappserver): preserve transcript events under backpressure @fcoury - 15749 Extract codex-core-skills crate @aibrahim-oai - 15798 Avoid duplicate auth refreshes in getAuthStatus @etraut-openai - 15659 Add MCP tool call spans @nicholasclark-openai - 15789 Treat ChatGPT hc plan as Enterprise @arnavdugar-openai - 15802 TUI plugin menu polish @canvrno-oai - 15785 Add cached environment manager for exec server URL @pakrym-oai - 15806 Add ReloadUserConfig to tuiappserver @canvrno-oai - 15810 app-server: Organize app-server to allow more transports @euroelessar - 15800 [mcp] Improve custom MCP elicitation @mzeng-openai - 15531 [hooks] add non-streaming (non-stdin style) shell-only PostToolUse support @eternal-openai - 15820 [plugins] Flip flags on. @mzeng-openai - 15825 Fix quoted command rendering in tuiappserver @etraut-openai - 14853 Wire remote app-server auth through the client @etraut-openai - 15817 Expand home-relative paths on Windows @tiffanycitra - 15693 fix: fix old system bubblewrap compatibility without falling back to vendored bwrap @viyatb-oai - 15784 feat: replace askama by custom lib @jif-oai - 15851 feat: drop artifact tool and feature @jif-oai - 15861 feat: clean spawn v1 @jif-oai - 15691 feat: exec-server prep for unified exec @jif-oai - 15864 chore: drop artifacts lib @jif-oai - 15812 core: remove special execve handling for skill scripts @bolinfest - 15869 fix: flaky @jif-oai - 15877 chore: ask agents md not to play with PIDs @jif-oai - 15866 feat: use ProcessId in exec-server @jif-oai - 15829 [plugins] Update the suggestable plugins list. @mzeng-openai - 15880 fix: max depth agent still has v2 tools @jif-oai - 15839 Fix duplicate /review messages in app-server TUI @etraut-openai - 15805 Add MCP connector metrics @nicholasclark-openai - 15661 Enable tuiappserver feature by default @etraut-openai - 15835 fix: box applypatch test harness futures @bolinfest - 15796 [codex] Block unsafe git global options from safe allowlist @adrian-openai - 15813 Add wildcard in the middle test coverage @evawong-oai - 15881 fix: root as std agent @jif-oai - 15860 feat(tui): add terminal title support to tui app server @fcoury - 15885 [mcp] Fix legacytools @mzeng-openai