- Added collaboration modes and presets to streamline multi-agent workflows. (#9340, #9421) - Added device-code auth as a standalone fallback in headless environments. (#9333) - Introduced a request-user-input tool for explicit agent prompts. (#9472) - Enabled remote models and auto-enable WebSockets transport for smoother connectivity. (#9554, #9578) ## Bug Fixes - Load configs from trusted folders only and fix symlinked `config.toml` resolution. (#9533, #9445) - Fixed Azure endpoint invalid input errors. (#9387) - Resolved a memory leak in core runtime. (#9543) - Prevented interrupted turns from repeating. (#9043) - Fixed WSL TUI image paste regression. (#9473) ## Documentation - Updated MCP documentation link to the current destination. (#9490) - Corrected a “Multi-agents” naming typo in docs. (#9542) - Added developer instructions for collaboration modes. (#9424) ## Chores - Upgraded to Rust 1.92 and refreshed core Rust dependencies. (#8860, #9465, #9466, #9467, #9468, #9469) ## Changelog Full Changelog: https://github.com/openai/codex/compare/rust-v0.87.0...rust-v0.88.0 - #9373 fix: flaky tests @jif-oai - #9333 [device-auth] Add device code auth as a standalone option when headless environment is detected. @mzeng-openai - #9352 Made `codex exec resume --last` consistent with `codex resume --last` @etraut-openai - #9324 add codex cloud list @nornagon-openai - #9332 Turn-state sticky routing per turn @aibrahim-oai - #9364 feat: tool call duration metric @jif-oai - #8860 chore: upgrade to Rust 1.92.0 @viyatb-oai - #9385 feat: /fork the current session instead of opening session picker @apanasenko-oai - #9247 feat(app-server, core): return threads by created_at or updated_at @owenlin0 - #9330 feat: show forked from session id in /status @apanasenko-oai - #9340 Introduce collaboration modes @aibrahim-oai - #9328 Support enable/disable skill via config/api. @xl-openai - #9408 Add collaboration_mode override to turns @aibrahim-oai - #9400 fix(codex-api): treat invalid_prompt as non-retryable @fouad-openai - #9401 Defer backtrack trim until rollback confirms @aibrahim-oai - #9414 fix unified_exec::tests::unified_exec_timeouts to use a more unique match value @ahornby - #9421 Expose collaboration presets @aibrahim-oai - #9422 chore(core) Create instructions module @dylan-hurd-oai - #9423 chore(instructions) Remove unread SessionMeta.instructions field @dylan-hurd-oai - #9424 Add collaboration developer instructions @aibrahim-oai - #9425 Preserve slash command order in search @aibrahim-oai - #9059 tui: allow forward navigation in backtrack preview @slkzgm - #9443 Add collaboration modes test prompts @aibrahim-oai - #9457 fix(tui2): running /mcp was not printing any output until another event triggered a flush @bolinfest - #9445 Fixed symlink support for config.toml @etraut-openai - #9466 chore(deps): bump log from 0.4.28 to 0.4.29 in /codex-rs @dependabot - #9467 chore(deps): bump tokio from 1.48.0 to 1.49.0 in /codex-rs @dependabot - #9468 chore(deps): bump arc-swap from 1.7.1 to 1.8.0 in /codex-rs @dependabot - #9469 chore(deps): bump ctor from 0.5.0 to 0.6.3 in /codex-rs @dependabot - #9465 chore(deps): bump chrono from 0.4.42 to 0.4.43 in /codex-rs @dependabot - #9473 Fixed TUI regression related to image paste in WSL @etraut-openai - #9382 feat: timer total turn metrics @jif-oai - #9478 feat: close all threads in `/new` @jif-oai - #9477 feat: detach non-tty childs @jif-oai - #9479 prompt 3 @jif-oai - #9387 Fix invalid input error on Azure endpoint @etraut-openai - #9463 Remove unused protocol collaboration mode prompts @aibrahim-oai - #9487 chore: warning metric @jif-oai - #9490 Fixed stale link to MCP documentation @etraut-openai - #9461 TUI: collaboration mode UX + always submit `UserTurn` when enabled @aibrahim-oai - #9472 Feat: request user input tool @shijie-oai - #9402 Act on reasoning-included per turn @aibrahim-oai - #9496 chore: fix beta VS experimental @jif-oai - #9495 Feat: plan mode prompt update @shijie-oai - #9451 tui: avoid Esc interrupt when skill popup active @prateek-oai - #9497 Migrate tui to use UserTurn @aibrahim-oai - #9427 fix(core) Preserve base_instructions in SessionMeta @dylan-hurd-oai - #9393 Persist text elements through TUI input and history @charley-oai - #9407 fix(tui) fix user message light mode background @dylan-hurd-oai - #9525 chore: collab in experimental @jif-oai - #9374 nit: do not render terminal interactions if no task running @jif-oai - #9529 feat: record timer with additional tags @jif-oai - #9528 feat: metrics on remote models @jif-oai - #9527 feat: metrics on shell snapshot @jif-oai - #9533 Only load config from trusted folders @gt-oai - #9409 feat: support proxy for ws connection @apanasenko-oai - #9507 Tui: use collaboration mode instead of model and effort @aibrahim-oai - #9193 fix: `writable_roots` doesn't recognize home directory symbol in non-windows OS @tiffanycitra - #9542 Fix typo in feature name from 'Mult-agents' to 'Multi-agents' @simonw - #9459 feat(personality) introduce model_personality config @dylan-hurd-oai - #9543 fix: memory leak issue @jif-oai - #9509 Fixed config merging issue with profiles @etraut-openai - #9043 fix: prevent repeating interrupted turns @swordfish444 - #9553 fix(core): don't update the file's mtime on resume @owenlin0 - #9552 lookup system SIDs instead of hardcoding English strings. @iceweasel-oai - #9314 fix(windows-sandbox): deny .git file entries under writable roots @MaxMiksa - #9319 fix(windows-sandbox): parse PATH list entries for audit roots @MaxMiksa - #9547 merge remote models @aibrahim-oai - #9545 Add total (non-partial) TextElement placeholder accessors @charley-oai - #9532 fix(cli): add execute permission to bin/codex.js @zerone0x - #9162 Improve UI spacing for queued messages @charley-oai - #9554 Enable remote models @aibrahim-oai - #9558 queue only when task is working @aibrahim-oai - #8590 fix(core): require approval for force delete on Windows @hdcodedev - #9293 [codex-tui] exit when terminal is dumb @jmickey-oai - #9562 feat(tui2): add /experimental menu @joshka-oai - #9563 fix: bminor/bash is no longer on GitHub so use bolinfest/bash instead @bolinfest - #9568 Show session header before configuration @aibrahim-oai - #9555 feat: rename experimental_instructions_file to model_instructions_file @bolinfest - #9518 Prompt Expansion: Preserve Text Elements @charley-oai - #9560 Reject ask user question tool in Execute and Custom @charley-oai - #9575 feat: add skill injected counter metric @alexsong-oai - #9578 Feature to auto-enable websockets transport @pakrym-oai - #9587 fix CI by running pnpm @aibrahim-oai - #9586 don't ask for approval for `just fix` @aibrahim-oai - #9585 Add request-user-input overlay @aibrahim-oai - #9596 fix going up and down on questions after writing notes @aibrahim-oai - #9483 feat: max threads config @jif-oai - #9598 feat: display raw command on user shell @jif-oai - #9594 Added "codex." prefix to "conversation.turn.count" metric name @etraut-openai - #9600 feat: async shell snapshot @jif-oai - #9602 fix: nit tui on terminal interactions @jif-oai - #9551 nit: better collab tui @jif-oai
npm i -g @openai/codex
or brew install --cask codex
Codex CLI is a coding agent from OpenAI that runs locally on your computer.
If you want Codex in your code editor (VS Code, Cursor, Windsurf), install in your IDE.
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
- Apple Silicon/arm64:
- Linux
- x86_64:
codex-x86_64-unknown-linux-musl.tar.gz - arm64:
codex-aarch64-unknown-linux-musl.tar.gz
- x86_64:
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.
