- Headless runs now switch to device-code login automatically so sign-in works without a browser. (#8756) - TUI lets you queue messages with Tab during active turns (including /review), shows queue hints, and streams exec output inline for smoother updates. (#9077, #9122, #9138, #9194) - WebSocket transport reuses connections and supports incremental append requests to reduce streaming overhead. (#9127, #9128) - Linux sandbox can mount paths read-only to better protect files from writes. (#9112) - Default API model moved to gpt-5.2-codex. (#9188) ## Bug Fixes - Alternate-screen handling now avoids breaking Zellij scrollback and adds a config/flag to control it. (#8555) - Windows correctly prompts before unsafe commands when running with a read-only sandbox policy. (#9117) - Config.toml and rules parsing errors are reported to app-server clients/TUI instead of failing silently. (#9182, #9011) - Worked around a macOS system-configuration crash in proxy discovery. (#8954) - Invalid user image uploads now surface an error instead of being silently replaced. (#9146) ## Documentation - Published a generated JSON Schema for `config.toml` in `docs/` to validate configs. (#8956) - Documented the TUI paste-burst state machine for terminals without reliable bracketed paste. (#9020) ## Chores - Added Bazel build support plus a `just bazel-codex` helper for contributors. (#8875, #9177) ## Changelog Full Changelog: https://github.com/openai/codex/compare/rust-v0.80.0...rust-v0.81.0 - #8756 [device-auth] When headless environment is detected, show device login flow instead. @mzeng-openai - #8930 feat: first pass on clb tool @jif-oai - #8966 nit: rename session metric @jif-oai - #8969 chore: non mutable btree when building specs @jif-oai - #8968 chore: move otel provider outside of trace module @jif-oai - #8973 chore: add mcp call metric @jif-oai - #8970 chore: add approval metric @jif-oai - #8975 chore: metrics tool call @jif-oai - #8901 chore: update metrics temporality @jif-oai - #8954 Work around crash in system-configuration library @etraut-openai - #8873 fix(app-server): set originator header from initialize JSON-RPC request @owenlin0 - #8909 Add config to disable /feedback @gt-oai - #8985 chore: nuke telemetry file @jif-oai - #8986 Revert "fix(app-server): set originator header from initialize JSON-RPC request" @jif-oai - #8978 nit: rename to analytics_enabled @jif-oai - #8963 renaming: task to turn @jif-oai - #8555 fix: add tui.alternate_screen config and --no-alt-screen CLI flag for Zellij scrollback @hjanuschka - #8875 feat: add support for building with Bazel @zbarsky-openai - #8988 fix(app-server): set originator header from initialize (re-revert) @owenlin0 - #8766 fix: harden arg0 helper PATH handling @viyatb-oai - #8949 Log unhandled sse events @pakrym-oai - #8996 Add hierarchical agent prompt @pakrym-oai - #9003 Delete announcement_tip.toml @pakrym-oai - #8940 Refactor remote models tests to use TestCodex builder @aibrahim-oai - #8981 Add model provider info to /status if non-default @gt-oai - #8984 Add URL to responses error messages @gt-oai - #9008 fix: add .git to .bazelignore @bolinfest - #9010 fix: include AGENTS.md as repo root marker for integration tests @bolinfest - #8950 Label attached images so agent can understand in-message labels @charley-oai - #9032 Revert "Delete announcement_tip.toml" @jif-oai - #9018 fix: support remote arm64 builds, as well @zbarsky-openai - #8983 feat: testing harness for collab 1 @jif-oai - #9088 feat: add wait tool implementation for collab @jif-oai - #9090 feat: add close tool implementation for collab @jif-oai - #8971 add static mcp callback uri support @WhammyLeaf - #9099 nit: add docstring @jif-oai - #8994 feat: wire fork to codex cli @apanasenko-oai - #9071 chore(deps): bump tui-scrollbar from 0.2.1 to 0.2.2 in /codex-rs @dependabot - #9072 chore(deps): bump ts-rs from 11.0.1 to 11.1.0 in /codex-rs @dependabot - #9074 chore(deps): bump which from 6.0.3 to 8.0.0 in /codex-rs @dependabot - #9075 chore(deps): bump clap from 4.5.53 to 4.5.54 in /codex-rs @dependabot - #9076 chore(deps): bump tokio-util from 0.7.16 to 0.7.18 in /codex-rs @dependabot - #8957 feat: hot reload mcp servers @shijie-oai - #9107 Remove unused conversation_id header @pakrym-oai - #9080 Add some tests for image attachments @charley-oai - #9114 Extract single responses SSE event parsing @pakrym-oai - #8961 Assemble sandbox/approval/network prompts dynamically @aibrahim-oai - #9102 Add model client sessions @pakrym-oai - #8246 fix(tui): show in-flight coalesced tool calls in transcript overlay @Chriss4123 - #9127 Reuse websocket connection @pakrym-oai - #9117 fix: prompt for unsafe commands on Windows @bolinfest - #9128 Websocket append support @pakrym-oai - #9077 Send message by default mid turn. queue messages by tab @aibrahim-oai - #9049 Handle image paste from empty paste events @aibrahim-oai - #8952 Use markdown for migration screen @aibrahim-oai - #9109 Updated heuristic for tool call summary to detect file modifications @etraut-openai - #9138 Show tab queue hint in footer @aibrahim-oai - #9140 Use thread rollback for Esc backtrack @aibrahim-oai - #9143 chore: better error handling on collab tools @jif-oai - #9147 nit: collab send input cleaning @jif-oai - #9129 Support response.done and add integration tests @pakrym-oai - #8798 ollama: default to Responses API for built-ins @drifkin - #8956 add generated jsonschema for config.toml @sayan-oai - #9122 Fix queued messages during /review @charley-oai - #9126 fix: drop session span at end of the session @apanasenko-oai - #9101 Restrict MCP servers from `requirements.toml` @gt-oai - #9020 fix(tui): document paste-burst state machine @joshka-oai - #9118 feat(app-server): add an --analytics-default-enabled flag @owenlin0 - #9130 Fresh tooltips @mzeng-openai - #9134 fix(windows-sandbox-rs) bump SETUP_VERSION @dylan-hurd-oai - #9121 test(tui): add deterministic paste-burst tests @joshka-oai - #8661 Fix spinner/Esc interrupt when MCP startup completes mid-turn @2mawi2 - #9165 Allow close skill popup with esc. @xl-openai - #9169 Fix flakiness in WebSocket tests @pakrym-oai - #9011 fix: report an appropriate error in the TUI for malformed rules @bolinfest - #9166 fix: integration test for #9011 @bolinfest - #9177 feat: add bazel-codex entry to justfile @bolinfest - #9175 WebSocket test server script @pakrym-oai - #9136 Update models.json @github-actions - #9168 clean models manager @aibrahim-oai - #8933 [CODEX-4427] improve parsed commands @aibrahim-oai - #9174 Renew cache ttl on etag match @aibrahim-oai - #9124 fix(tui): harden paste-burst state transitions @joshka-oai - #9186 Use offline cache for tui migrations @aibrahim-oai - #9182 Improve handling of config and rules errors for app server clients @etraut-openai - #8997 chore: clarify default shell for unified_exec @sayan-oai - #9192 feat: add threadId to MCP server messages @bolinfest - #9188 change api default model @aibrahim-oai - #9150 feat: add sourcing of rc files to shell snapshot @jif-oai - #9155 fix: shell snapshot clean-up @jif-oai - #9146 feat: return an error if the image sent by the user is a bad image @jif-oai - #9197 feat: only source shell snapshot if the file exists @jif-oai - #9145 fix: drop double waiting header in TUI @jif-oai - #9194 Render exec output deltas inline @aibrahim-oai - #9156 chore: clamp min yield time for empty write_stdin @jif-oai - #9105 feat: add auto refresh on thread listeners @jif-oai - #9112 feat: add support for read-only bind mounts in the linux sandbox @viyatb-oai - #9179 Use current model for review @pakrym-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.
