Files
codex/codex-rs
pakrym-oai 12dbb76c81 ## New Features
- Added `codex app <path>` on macOS to launch Codex Desktop from the CLI, with automatic DMG download if it is missing. (#10418)
- Added personal skill loading from `~/.agents/skills` (with `~/.codex/skills` compatibility), plus app-server APIs/events to list and download public remote skills. (#10437, #10448)
- `/plan` now accepts inline prompt arguments and pasted images, and slash-command editing/highlighting in the TUI is more polished. (#10269)
- Shell-related tools can now run in parallel, improving multi-command execution throughput. (#10505)
- Shell executions now receive `CODEX_THREAD_ID`, so scripts and skills can detect the active thread/session. (#10096)
- Added vendored Bubblewrap + FFI wiring in the Linux sandbox as groundwork for upcoming runtime integration. (#10413)

## Bug Fixes
- Hardened Git command safety so destructive or write-capable invocations no longer bypass approval checks. (#10258)
- Improved resume/thread browsing reliability by correctly showing saved thread names and fixing thread listing behavior. (#10340, #10383)
- Fixed first-run trust-mode handling so sandbox mode is reported consistently, and made `$PWD/.agents` read-only like `$PWD/.codex`. (#10415, #10524)
- Fixed `codex exec` hanging after interrupt in websocket/streaming flows; interrupted turns now shut down cleanly. (#10519)
- Fixed review-mode approval event wiring so `requestApproval` IDs align with the corresponding command execution items. (#10416)
- Improved 401 error diagnostics by including server message/body details plus `cf-ray` and `requestId`. (#10508)

## Documentation
- Expanded TUI chat composer docs to cover slash-command arguments and attachment handling in plan/review flows. (#10269)
- Refreshed issue templates and labeler prompts to better separate CLI/app bug reporting and feature requests. (#10411, #10453, #10548, #10552)

## Chores
- Completed migration off the deprecated `mcp-types` crate to `rmcp`-based protocol types/adapters, then removed the legacy crate. (#10356, #10349, #10357)
- Updated the `bytes` dependency for a security advisory and cleaned up resolved advisory configuration. (#10525)

## Changelog

Full Changelog: https://github.com/openai/codex/compare/rust-v0.94.0...rust-v0.95.0

- #10340 Session picker shows thread_name if set @pap-openai
- #10381 chore: collab experimental @jif-oai
- #10231 feat: experimental flags @jif-oai
- #10382 nit: shell snapshot retention to 3 days @jif-oai
- #10383 fix: thread listing @jif-oai
- #10386 fix: Rfc3339 casting @jif-oai
- #10356 feat: add MCP protocol types and rmcp adapters @bolinfest
- #10269 Nicer highlighting of slash commands, /plan accepts prompt args and pasted images @charley-oai
- #10274 Add credits tooltip @pakrym-oai
- #10394 chore: ignore synthetic messages @jif-oai
- #10398 feat: drop sqlx logging @jif-oai
- #10281 Select experimental features with space @pakrym-oai
- #10402 feat: add `--experimental` to `generate-ts` @jif-oai
- #10258 fix: unsafe auto-approval of git commands @viyatb-oai
- #10411 Updated labeler workflow prompt to include "app" label @etraut-openai
- #10399 emit a separate metric when the user cancels UAT during elevated setup @iceweasel-oai
- #10377 chore(tui) /personalities tip @dylan-hurd-oai
- #10252 [feat] persist thread_dynamic_tools in db @celia-oai
- #10437 feat: Read personal skills from .agents/skills @gverma-openai
- #10145 make codex better at git @pash-openai
- #10418 Add `codex app` macOS launcher @aibrahim-oai
- #10447 Fix plan implementation prompt reappearing after /agent thread switch @charley-oai
- #10064 TUI: Render request_user_input results in history and simplify interrupt handling @charley-oai
- #10349 feat: replace custom mcp-types crate with equivalents from rmcp @bolinfest
- #10415 Fixed sandbox mode inconsistency if untrusted is selected @etraut-openai
- #10452 Hide short worked-for label in final separator @aibrahim-oai
- #10357 chore: remove deprecated mcp-types crate @bolinfest
- #10454 app tool tip @aibrahim-oai
- #10455 chore: add phase to message responseitem @sayan-oai
- #10414 Require models refresh on cli version mismatch @aibrahim-oai
- #10271 [Codex][CLI] Gate image inputs by model modalities @ccy-oai
- #10374 Trim compaction input @pakrym-oai
- #10453 Updated bug and feature templates @etraut-openai
- #10465 Restore status after preamble @pakrym-oai
- #10406 fix: clarify deprecation message for features.web_search @sayan-oai
- #10474 Ignore remote_compact_trims_function_call_history_to_fit_context_window on windows @pakrym-oai
- #10413 feat(linux-sandbox): vendor bubblewrap and wire it with FFI @viyatb-oai
- #10142 feat(secrets): add codex-secrets crate @viyatb-oai
- #10157 chore: nuke chat/completions API @jif-oai
- #10498 feat: drop wire_api from clients @jif-oai
- #10501 feat: clean codex-api part 1 @jif-oai
- #10508 Add more detail to 401 error @gt-oai
- #10521 Avoid redundant transactional check before inserting dynamic tools @jif-oai
- #10525 chore: update bytes crate in response to security advisory @bolinfest
- #10408 fix WebSearchAction type clash between v1 and v2 @sayan-oai
- #10404 Cleanup collaboration mode variants @charley-oai
- #10505 Enable parallel shell tools @jif-oai
- #10532 feat: `find_thread_path_by_id_str_in_subdir` from DB @jif-oai
- #10524 fix: make $PWD/.agents read-only like $PWD/.codex @bolinfest
- #10096 Inject CODEX_THREAD_ID into the terminal environment @maxj-oai
- #10536 Revert "Load untrusted rules" @viyatb-oai
- #10412 fix(app-server): fix TS annotations for optional fields on requests @owenlin0
- #10416 fix(app-server): fix approval events in review mode @owenlin0
- #10545 Improve Default mode prompt (less confusion with Plan mode) @charley-oai
- #10289 [apps] Gateway MCP should be blocking. @mzeng-openai
- #10189 implement per-workspace capability SIDs for workspace specific ACLs @iceweasel-oai
- #10548 Updated bug templates and added a new one for app @etraut-openai
- #10531 [codex] Default values from requirements if unset @gt-oai
- #10552 Fixed icon for CLI bug template @etraut-openai
- #10039 chore(arg0): advisory-lock janitor for codex tmp paths @viyatb-oai
- #10448 feat: add APIs to list and download public remote skills @xl-openai
- #10519 Handle exec shutdown on Interrupt (fixes immortal `codex exec` with websockets) @rasmusrygaard
- #10556 Feat: add upgrade to app server modelList @shijie-oai
- #10461 feat(tui): pace catch-up stream chunking with hysteresis @joshka-oai
- #10367 chore: add `codex debug app-server` tooling @celia-oai
2026-02-03 20:07:30 -08:00
..
2026-01-16 08:56:38 -08:00
2026-01-28 17:46:18 +00:00
2026-02-02 11:06:50 +00:00
2026-02-03 20:07:30 -08:00
2026-01-03 02:19:52 -08:00

Codex CLI (Rust Implementation)

We provide Codex CLI as a standalone, native executable to ensure a zero-dependency install.

Installing Codex

Today, the easiest way to install Codex is via npm:

npm i -g @openai/codex
codex

You can also install via Homebrew (brew install --cask codex) or download a platform-specific release directly from our GitHub Releases.

Documentation quickstart

What's new in the Rust CLI

The Rust implementation is now the maintained Codex CLI and serves as the default experience. It includes a number of features that the legacy TypeScript CLI never supported.

Config

Codex supports a rich set of configuration options. Note that the Rust CLI uses config.toml instead of config.json. See docs/config.md for details.

Model Context Protocol Support

MCP client

Codex CLI functions as an MCP client that allows the Codex CLI and IDE extension to connect to MCP servers on startup. See the configuration documentation for details.

MCP server (experimental)

Codex can be launched as an MCP server by running codex mcp-server. This allows other MCP clients to use Codex as a tool for another agent.

Use the @modelcontextprotocol/inspector to try it out:

npx @modelcontextprotocol/inspector codex mcp-server

Use codex mcp to add/list/get/remove MCP server launchers defined in config.toml, and codex mcp-server to run the MCP server directly.

Notifications

You can enable notifications by configuring a script that is run whenever the agent finishes a turn. The notify documentation includes a detailed example that explains how to get desktop notifications via terminal-notifier on macOS. When Codex detects that it is running under WSL 2 inside Windows Terminal (WT_SESSION is set), the TUI automatically falls back to native Windows toast notifications so approval prompts and completed turns surface even though Windows Terminal does not implement OSC 9.

codex exec to run Codex programmatically/non-interactively

To run Codex non-interactively, run codex exec PROMPT (you can also pass the prompt via stdin) and Codex will work on your task until it decides that it is done and exits. Output is printed to the terminal directly. You can set the RUST_LOG environment variable to see more about what's going on.

Experimenting with the Codex Sandbox

To test to see what happens when a command is run under the sandbox provided by Codex, we provide the following subcommands in Codex CLI:

# macOS
codex sandbox macos [--full-auto] [--log-denials] [COMMAND]...

# Linux
codex sandbox linux [--full-auto] [COMMAND]...

# Windows
codex sandbox windows [--full-auto] [COMMAND]...

# Legacy aliases
codex debug seatbelt [--full-auto] [--log-denials] [COMMAND]...
codex debug landlock [--full-auto] [COMMAND]...

Selecting a sandbox policy via --sandbox

The Rust CLI exposes a dedicated --sandbox (-s) flag that lets you pick the sandbox policy without having to reach for the generic -c/--config option:

# Run Codex with the default, read-only sandbox
codex --sandbox read-only

# Allow the agent to write within the current workspace while still blocking network access
codex --sandbox workspace-write

# Danger! Disable sandboxing entirely (only do this if you are already running in a container or other isolated env)
codex --sandbox danger-full-access

The same setting can be persisted in ~/.codex/config.toml via the top-level sandbox_mode = "MODE" key, e.g. sandbox_mode = "workspace-write".

Code Organization

This folder is the root of a Cargo workspace. It contains quite a bit of experimental code, but here are the key crates:

  • core/ contains the business logic for Codex. Ultimately, we hope this to be a library crate that is generally useful for building other Rust/native applications that use Codex.
  • exec/ "headless" CLI for use in automation.
  • tui/ CLI that launches a fullscreen TUI built with Ratatui.
  • cli/ CLI multitool that provides the aforementioned CLIs via subcommands.