- App-server TUI now supports device-code ChatGPT sign-in during onboarding and can refresh existing ChatGPT tokens. (#14952) - Plugin setup is smoother: Codex can prompt to install missing plugins or connectors, honor a configured suggestion allowlist, and sync install/uninstall state remotely. (#14896, #15022, #14878) - Added a `userpromptsubmit` hook so prompts can be blocked or augmented before execution and before they enter history. (#14626) - Realtime sessions now start with recent thread context and are less likely to self-interrupt during audio playback. (#14829, #14827) ## Bug Fixes - Fixed a first-turn stall where websocket prewarm could delay `turn/start`; startup now times out and falls back cleanly. (#14838) - Restored conversation history for remote resume/fork in the app-server TUI and stopped duplicate live transcript output from legacy stream events. (#14930, #14892) - Improved Linux sandbox startup on symlinked checkouts, missing writable roots, and Ubuntu/AppArmor hosts by preferring system `bwrap` when available. (#14849, #14890, #14963) - Fixed an agent job finalization race and reduced status polling churn for worker threads. (#14843) ## Documentation - Refreshed the Python SDK public API docs, examples, and walkthrough around the generated app-server models. (#14446) ## Chores - Pinned the `setup-zig` GitHub Action to an immutable SHA for more reproducible CI. (#14858) ## Changelog Full Changelog: https://github.com/openai/codex/compare/rust-v0.115.0...rust-v0.116.0 - #14717 Move TUI on top of app server (parallel code) @etraut-openai - #14665 Use request permission profile in app server @mousseau-oai - #14826 Fixed build failures related to PR 14717 @etraut-openai - #14833 fix(core): fix sanitize name to use '_' everywhere @apanasenko-oai - #14268 memories: exclude AGENTS and skills from stage1 input @andi-oai - #14139 windows-sandbox: add runner IPC foundation for future unified_exec @iceweasel-oai - #14851 Add exit helper to code mode scripts @pakrym-oai - #14828 [stack 1/4] Split realtime websocket methods by version @aibrahim-oai - #14652 Apply argument comment lint across codex-rs @bolinfest - #14837 skill-creator: default new skills to ~/.codex/skills @xl-openai - #14861 Add marketplace display names to plugin/list @xl-openai - #14878 feat: support remote_sync for plugin install/uninstall. @xl-openai - #14830 [stack 2/4] Align main realtime v2 wire and runtime flow @aibrahim-oai - #14886 fix: align marketplace display name with existing interface conventions @xl-openai - #14881 [codex] add Jason as a predefined subagent name @tibo-openai - #14864 fix: tighten up shell arg quoting in GitHub workflows @bolinfest - #14829 [stack 3/4] Add current thread context to realtime startup @aibrahim-oai - #14827 [stack 4/4] Reduce realtime self-interruptions during playback @aibrahim-oai - #14849 fix: canonicalize symlinked Linux sandbox cwd @viyatb-oai - #14892 Fix tui_app_server: ignore duplicate legacy stream events @etraut-openai - #14899 Revert tui code so it does not rely on in-process app server @etraut-openai - #14890 fix(linux-sandbox): ignore missing writable roots @viyatb-oai - #14920 feat: centralize package manager version @jif-oai - #14935 feat: rename to get more explicit close agent @jif-oai - #14843 Fix agent jobs finalization race and reduce status polling churn @daveaitel-openai - #14944 feat: show effective model in spawn agent event @jif-oai - #14838 fix(core): prevent hanging turn/start due to websocket warming issues @owenlin0 - #14859 Feat: CXA-1831 Persist latest model and reasoning effort in sqlite @shijie-oai - #14930 fix(tui): restore remote resume and fork history @fcoury - #14955 Fix fuzzy search notification buffering in app-server tests @aibrahim-oai - #14938 feat: add suffix to shell snapshot name @jif-oai - #14959 Fix code mode yield startup race @aibrahim-oai - #14434 generate an internal json schema for `RolloutLine` @keyz - #14846 use framed IPC for elevated command runner @iceweasel-oai - #14952 Add device-code onboarding and ChatGPT token refresh to app-server TUI @etraut-openai - #14896 [plugins] Support plugin installation elicitation. @mzeng-openai - #14958 Stabilize Windows cmd-based shell test harnesses @aibrahim-oai - #14966 Stabilize permissions popup selection tests @aibrahim-oai - #14968 Stabilize approval matrix write-file command @aibrahim-oai - #14986 temporarily disable private desktop until it works with elevated IPC path @iceweasel-oai - #14983 Rename exec_wait tool to wait @pakrym-oai - #14905 Add auth env observability @ccy-oai - #14931 fix(tui): implement /mcp inventory for tui_app_server @fcoury - #14977 Cleanup skills/remote/xxx endpoints. @xl-openai - #14984 Gate realtime audio interruption logic to v2 @aibrahim-oai - #14902 Unify realtime shutdown in core @aibrahim-oai - #14963 fix(linux-sandbox): prefer system /usr/bin/bwrap when available @viyatb-oai - #14446 Add Python SDK public API and examples @shaqayeq-oai - #14993 feat: Add product-aware plugin policies and clean up manifest naming @xl-openai - #14995 app-server: reject websocket requests with Origin headers @maxj-oai - #14960 Add FS abstraction and use in view_image @pakrym-oai - #14293 fix: honor active permission profiles in sandbox debug @viyatb-oai - #14610 feat: support restricted ReadOnlyAccess in elevated Windows sandbox @viyatb-oai - #13592 Prefer websockets when providers support them @pakrym-oai - #14903 Handle realtime conversation end in the TUI @aibrahim-oai - #14727 Use workspace requirements for guardian prompt override @charley-oai - #14626 [hooks] userpromptsubmit - hook before user's prompt is executed @eternal-openai - #14858 Pin setup-zig GitHub Action to immutable SHA @viyatb-oai - #13702 fix(subagents) share execpolicy by default @dylan-hurd-oai - #15022 [plugins] Support configuration tool suggest allowlist. @mzeng-openai - #14947 feat: adapt artifacts to new packaging and 2.5.6 @jif-oai - #14821 feat: add memory citation to agent message @jif-oai - #15058 nit: disable live memory edition @jif-oai - #14942 Removed remaining core events from tui_app_server @etraut-openai - #15059 chore: disable memory read path for morpheus @jif-oai - #14842 Add notify to code-mode @pakrym-oai - #15020 fix: harden plugin feature gating @xl-openai
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 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
- 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.
