Shijie Rao 4c70bff480 ## 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/agent_a`, 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: `view_image` 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
- `tui_app_server` 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 `tui_app_server` 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 `read_file` and `grep_files` 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 view_image 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 update_plan code mode result @pakrym-oai
- #15100 Add apply_patch 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] turn_id 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 turn_id @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 needs_auth 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 codex_home @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 + tui_app_server @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 prefix_rule guidance @dylan-hurd-oai
- #15036 fix(core) disable command_might_be_dangerous 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 tui_app_server @etraut-openai
- #15409 Add JIT entitlement for macosx @cconger
- #15414 Remove legacy auth and notification handling from tui_app_server @etraut-openai
- #15376 [apps] Improve app tools loading for TUI. @mzeng-openai
- #15415 chore(exec_policy) ExecPolicyRequirementScenario tests @dylan-hurd-oai
- #15464 Remove smart_approvals 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 tui_app_server: 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 tui_app_server: open ChatGPT login in the local browser @etraut-openai
- #15673 tui_app_server: 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 sandbox_permissions 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 tui_app_server @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 tui_app_server @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 grep_files 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 read_file 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 codex_home base for MDM path resolution @evawong-oai
- #15513 fix(tui_app_server): fix remote subagent switching and agent names @fcoury
- #14856 [apps][tool_suggest] Remove tool_suggest's dependency on tool search. @mzeng-openai
- #14847 feat: add websocket auth for app-server @viyatb-oai
- #15759 fix(tui_app_server): 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 tui_app_server @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 tui_app_server @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 `tui_app_server` feature by default @etraut-openai
- #15835 fix: box apply_patch 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 legacy_tools @mzeng-openai
2026-03-26 14:22:09 -07:00
2026-03-26 14:22:09 -07:00
2026-01-08 07:50:58 -08:00
2025-04-16 12:56:08 -04:00
2026-02-06 14:41:53 +01:00
2025-04-16 12:56:08 -04:00
2026-03-10 04:11:31 +00:00

npm i -g @openai/codex
or brew install --cask codex

Codex CLI is a coding agent from OpenAI that runs locally on your computer.

Codex CLI splash


If you want Codex in your code editor (VS Code, Cursor, Windsurf), install in your IDE.
If you want the desktop app experience, run codex app or visit the Codex App page.
If you are looking for the cloud-based agent from OpenAI, Codex Web, go to chatgpt.com/codex.


Quickstart

Installing and running Codex CLI

Install globally with your preferred package manager:

# Install using npm
npm install -g @openai/codex
# Install using Homebrew
brew install --cask codex

Then simply run codex to get started.

You can also go to the latest GitHub Release and download the appropriate binary for your platform.

Each GitHub Release contains many executables, but in practice, you likely want one of these:

  • macOS
    • Apple Silicon/arm64: codex-aarch64-apple-darwin.tar.gz
    • x86_64 (older Mac hardware): codex-x86_64-apple-darwin.tar.gz
  • Linux
    • x86_64: codex-x86_64-unknown-linux-musl.tar.gz
    • arm64: codex-aarch64-unknown-linux-musl.tar.gz

Each archive contains a single entry with the platform baked into the name (e.g., codex-x86_64-unknown-linux-musl), so you likely want to rename it to codex after extracting it.

Using Codex with your ChatGPT plan

Run codex and select Sign in with ChatGPT. We recommend signing into your ChatGPT account to use Codex as part of your Plus, Pro, Team, Edu, or Enterprise plan. Learn more about what's included in your ChatGPT plan.

You can also use Codex with an API key, but this requires additional setup.

Docs

This repository is licensed under the Apache-2.0 License.

S
Description
pinned at tag rust-v0.124.0 by vibe-kanban crates/executors
Readme Apache-2.0
1.6 GiB
Languages
Rust 96.8%
Python 2.4%
Starlark 0.2%
Shell 0.2%
TypeScript 0.1%
Other 0.1%