Files
codex/codex-rs
Ahmed Ibrahim 8272f9a71e ## New Features
- Added an experimental, feature-gated JavaScript REPL runtime (`js_repl`) that can persist state across tool calls, with optional runtime path overrides. (#10674)
- Added support for multiple simultaneous rate limits across the protocol, backend client, and TUI status surfaces. (#11260)
- Reintroduced app-server websocket transport with a split inbound/outbound architecture, plus connection-aware thread resume subscriptions. (#11370, #11474)
- Added memory management slash commands in the TUI (`/m_update`, `/m_drop`) and expanded memory-read/metrics plumbing. (#11569, #11459, #11593)
- Enabled Apps SDK apps in ChatGPT connector handling. (#11486)
- Promoted sandbox capabilities on both Linux and Windows, and introduced a new `ReadOnlyAccess` policy shape for configurable read access. (#11381, #11341, #11387)

## Bug Fixes
- Fixed websocket incremental output duplication, prevented appends after `response.completed`, and treated `response.incomplete` as an error path. (#11383, #11402, #11558)
- Improved websocket session stability by continuing ping handling when idle and suppressing noisy first-retry errors during quick reconnects. (#11413, #11548)
- Fixed stale thread entries by dropping missing rollout files and cleaning stale DB metadata during thread listing. (#11572)
- Fixed Windows multi-line paste reliability in terminals (especially VS Code integrated terminal) by increasing paste burst timing tolerance. (#9348)
- Fixed incorrect inheritance of `limit_name` when merging partial rate-limit updates. (#11557)
- Reduced repeated skill parse-error spam during active edits by increasing file-watcher debounce from 1s to 10s. (#11494)

## Documentation
- Added JS REPL documentation and config/schema guidance for enabling and configuring the feature. (#10674)
- Updated app-server websocket transport documentation in the app-server README. (#11370)

## Chores
- Split `codex-common` into focused `codex-utils-*` crates to simplify dependency boundaries across Rust workspace components. (#11422)
- Improved Rust release pipeline throughput and reliability for Windows and musl targets, including parallel Windows builds and musl link fixes. (#11488, #11500, #11556)
- Prevented GitHub release asset upload collisions by excluding duplicate `cargo-timing.html` artifacts. (#11564)

## Changelog

Full Changelog: https://github.com/openai/codex/compare/rust-v0.99.0...rust-v0.100.0

- #11383 Do not resend output items in incremental websockets connections @pakrym-oai
- #11246 chore: persist turn_id in rollout session and make turn_id uuid based @celia-oai
- #11260 feat: support multiple rate limits @xl-openai
- #11412 tui: show non-file layer content in /debug-config @bolinfest
- #11405 Remove `test-support` feature from `codex-core` and replace it with explicit test toggles @bolinfest
- #11428 fix: flaky test @jif-oai
- #11429 feat: improve thread listing @jif-oai
- #11422 feat: split codex-common into smaller utils crates @bolinfest
- #11439 feat: new memory prompts @jif-oai
- #11305 Cache cloud requirements @gt-oai
- #11452 nit: increase max raw memories @jif-oai
- #11455 feat: close mem agent after consolidation @jif-oai
- #11454 fix: optional schema of memories @jif-oai
- #11449 feat: set policy for phase 2 memory @jif-oai
- #11420 chore: rename disable_websockets -> websockets_disabled @sayan-oai
- #11402 Do not attempt to append after response.completed @pakrym-oai
- #11462 clean: memory rollout recorder @jif-oai
- #11381 feat(core): promote Linux bubblewrap sandbox to Experimental @viyatb-oai
- #11389 Extract `codex-config` from `codex-core` @bolinfest
- #11370 Reapply "Add app-server transport layer with websocket support" @maxj-oai
- #11470 feat: panic if Constrained<WebSearchMode> does not support Disabled @bolinfest
- #11475 feat: remove "cargo check individual crates" from CI @bolinfest
- #11459 feat: memory read path @jif-oai
- #11471 chore: clean rollout extraction in memories @jif-oai
- #9348 fix(tui): increase paste burst char interval on Windows to 30ms @yuvrajangadsingh
- #11464 chore: sub-agent never ask for approval @jif-oai
- #11414 Linkify feedback link @pakrym-oai
- #11480 chore: update mem prompt @jif-oai
- #11485 fix: Constrained import @owenlin0
- #11341 Promote Windows Sandbox @iceweasel-oai
- #10674 Add feature-gated freeform js_repl core runtime @fjord-oai
- #11419 refactor: codex app-server ThreadState @maxj-oai
- #11413 Pump pings @pakrym-oai
- #11488 feat: use more powerful machines for building Windows releases @bolinfest
- #11479 nit: memory truncation @jif-oai
- #11494 Increased file watcher debounce duration from 1s to 10s @etraut-openai
- #11335 Add AfterToolUse hook @gt-oai
- #11500 feat: build windows support binaries in parallel @bolinfest
- #11290 chore(tui) Simplify /status Permissions @dylan-hurd-oai
- #11503 Make codex-sdk depend on openai/codex @pakrym-oai
- #11474 app-server: thread resume subscriptions @maxj-oai
- #11277 Added seatbelt policy rule to allow os.cpus @etraut-openai
- #11506 chore: inject originator/residency headers to ws client @apanasenko-oai
- #11497 Hydrate previous model across resume/fork/rollback/task start @aibrahim-oai
- #11513 feat: try to fix bugs I saw in the wild in the resource parsing logic @bolinfest
- #11509 Consolidate search_tool feature into apps @apanasenko-oai
- #11388 change model cap to server overload @willwang-openai
- #11504 Pre-sampling compact with previous model context @aibrahim-oai
- #11516 Clamp auto-compact limit to context window @aibrahim-oai
- #11520 Update context window after model switch @aibrahim-oai
- #11519 Use slug in tui @pakrym-oai
- #11522 fix: add --test_verbose_timeout_warnings to bazel.yml @bolinfest
- #11526 fix: remove errant Cargo.lock files @bolinfest
- #11521 test(app-server): stabilize app/list thread feature-flag test by using file-backed MCP OAuth creds @bolinfest
- #11387 feat: make sandbox read access configurable with `ReadOnlyAccess` @bolinfest
- #11486 [apps] Allow Apps SDK apps. @mzeng-openai
- #11532 fix compilation @sayan-oai
- #11531 Teach codex to test itself @pakrym-oai
- #11540 ci: remove actions/cache from rust release workflows @bolinfest
- #11542 ci(windows): use DotSlash for zstd in rust-release-windows @bolinfest
- #11498 build(linux-sandbox): always compile vendored bubblewrap on Linux; remove CODEX_BWRAP_ENABLE_FFI @viyatb-oai
- #11545 fix: make project_doc skill-render tests deterministic @bolinfest
- #11543 ci: capture cargo timings in Rust CI and release workflows @bolinfest
- #11539 Bump rmcp to 0.15 @gpeal
- #11548 Hide the first websocket retry @pakrym-oai
- #11551 Add logs to model cache @aibrahim-oai
- #11556 Fix rust-release failures in musl linking and release asset upload @bolinfest
- #11558 Handle response.incomplete @pakrym-oai
- #11557 fix: stop inheriting rate-limit limit_name @xl-openai
- #11564 rust-release: exclude cargo-timing.html from release assets @bolinfest
- #11546 fix: update memory writing prompt @zuxin-oai
- #11448 Fix test flake @gt-oai
- #11569 feat: mem slash commands @jif-oai
- #11573 Fix flaky pre_sampling_compact switch test @jif-oai
- #11571 feat: mem drop cot @jif-oai
- #11572 Ensure list_threads drops stale rollout files @jif-oai
- #11575 fix: db stuff mem @jif-oai
- #11581 nit: upgrade DB version @jif-oai
- #11577 feat: truncate with model infos @jif-oai
- #11590 chore: clean consts @jif-oai
- #11593 feat: metrics to memories @jif-oai
- #11579 Fix config test on macOS @gt-oai
- #11600 feat: add sanitizer to redact secrets @jif-oai
- #11609 chore: drop mcp validation of dynamic tools @jif-oai
2026-02-12 09:50:36 -08:00
..
2026-02-12 15:56:48 +00:00
2026-02-11 22:04:17 -08:00
2026-02-11 22:25:04 +00:00
2026-02-11 22:04:17 -08:00
2026-02-11 22:04:17 -08:00
2026-01-28 17:46:18 +00:00
2026-02-12 13:16:28 +00:00
2026-02-12 10:39:43 +00:00
2026-02-12 09:50:36 -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. Use codex exec --ephemeral ... to run without persisting session rollout files to disk.

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.

If you want to contribute or inspect behavior in detail, start by reading the module-level README.md files under each crate and run the project workspace from the top-level codex-rs directory so shared config, features, and build scripts stay aligned.