Ahmed Ibrahim f028679abb ## New Features
- Supported models can now request full-resolution image inspection through both `view_image` and `codex.emitImage(..., detail: "original")`, which helps with precision visual tasks. (#14175)
- `js_repl` now exposes `codex.cwd` and `codex.homeDir`, and saved `codex.tool(...)` / `codex.emitImage(...)` references keep working across cells. (#14385, #14503)
- Realtime websocket sessions gained a dedicated transcription mode, plus v2 handoff support through the `codex` tool, with a unified `[realtime]` session config. (#14554, #14556, #14606)
- The v2 app-server now exposes filesystem RPCs for file reads, writes, copies, directory operations, and path watching, and there is a new Python SDK for integrating with that API. (#14245, #14435)
- Smart Approvals can now route review requests through a guardian subagent in core, app-server, and TUI, reducing repeated setup work on follow-up approvals. (#13860, #14668)
- App integrations now use the Responses API tool-search flow, can suggest missing tools, and fall back cleanly when the active model does not support search-based lookup. (#14274, #14287, #14732)

## Bug Fixes
- Spawned subagents now inherit sandbox and network rules more reliably, including project-profile layering, persisted host approvals, and symlinked writable roots. (#14619, #14650, #14674, #14807)
- `js_repl` no longer hangs when dynamic tool responses contain literal U+2028 or U+2029 characters. (#14421)
- The TUI no longer stalls on exit after creating subagents, and interrupting a turn no longer tears down background terminals by default. (#14816, #14602)
- `codex exec --profile` once again preserves profile-scoped settings when starting or resuming a thread. (#14524)
- MCP and elicitation flows are more robust, with safer tool-name normalization and preserved `tool_params` in approval prompts. (#14491, #14605, #14769)
- The local network proxy now serves CONNECT traffic as explicit HTTP/1, improving compatibility with HTTP proxy clients. (#14395)

## Chores
- The subagent wait tool is now consistently named `wait_agent`, aligning it with `spawn_agent` and `send_input`. (#14631)

## Changelog

Full Changelog: https://github.com/openai/codex/compare/rust-v0.114.0...rust-v0.115.0

- #14395 fix(network-proxy): serve HTTP proxy listener as HTTP/1 @viyatb-oai
- #14385 Add js_repl cwd and homeDir helpers @fjord-oai
- #14376 Keep agent-switch word-motion keys out of draft editing @joshka-oai
- #14175 Let models opt into original image detail @fjord-oai
- #14382 check for large binaries in CI @owenlin0
- #14392 chore(app-server): stop emitting codex/event/ notifications @owenlin0
- #14274 feat: search_tool migrate to bring you own tool of Responses API @apanasenko-oai
- #14174 refactor: centralize filesystem permissions precedence @viyatb-oai
- #14394 chore(app-server): delete unused rpc methods from v1.rs @owenlin0
- #14171 fix: align core approvals with split sandbox policies @viyatb-oai
- #14410 Make collab model metadata accurate on completion @aibrahim-oai
- #14387 feat(app-server): propagate traces across tasks and core ops @owenlin0
- #14407 chore: use AVAILABLE and ON_INSTALL as default plugin install and auth policies @sayan-oai
- #14287 [apps] Add tool_suggest tool. @mzeng-openai
- #14432 Clarify spawn agent authorization @aibrahim-oai
- #14295 Support waiting for code_mode sessions @pakrym-oai
- #14427 feat: refactor on openai-curated plugins. @xl-openai
- #13996 refactor: make bubblewrap the default Linux sandbox @viyatb-oai
- #14440 fix: follow up on linux sandbox review nits @viyatb-oai
- #14431 Handle pre-approved permissions in zsh fork @mousseau-oai
- #14403 [elicitation] User-friendly tool call messages. @mzeng-openai
- #14429 Use granted permissions when invoking apply_patch @mousseau-oai
- #14471 Updated out-of-date tip about availability on free and go plans @etraut-openai
- #14444 fix: move inline codex-rs/core unit tests into sibling files @bolinfest
- #14437 Dispatch tools when code mode is not awaited directly @pakrym-oai
- #14435 Add Python app-server SDK @shaqayeq-oai
- #14473 fix(cli): support legacy use_linux_sandbox_bwrap flag @viyatb-oai
- #13882 Fix stdio-to-uds peer-close flake @aibrahim-oai
- #14476 Move code mode tool files under tools/code_mode and split functionality @pakrym-oai
- #14475 rename spawn_csv feature flag to enable_fanout @daveaitel-openai
- #14173 fix: preserve split filesystem semantics in linux sandbox @viyatb-oai
- #14480 Cleanup code_mode tool descriptions @pakrym-oai
- #14488 Handle malformed agent role definitions nonfatally @gabec-openai
- #14398 Do not allow unified_exec for sandboxed scenarios on Windows @iceweasel-oai
- #14419 use scopes_supported for OAuth when present on MCP servers @jgershen-oai
- #14484 Add default code-mode yield timeout @pakrym-oai
- #14494 Add parallel tool call test @pakrym-oai
- #14478 chore(app-server): stop exporting EventMsg schemas @owenlin0
- #14490 fix turn_start_jsonrpc_span_parents_core_turn_spans flakiness @owenlin0
- #14496 Reuse tool runtime for code mode worker @pakrym-oai
- #14421 Fix js_repl hangs on U+2028/U+2029 dynamic tool responses @aaronl-openai
- #14505 Skip nested tool call parallel test on Windows @pakrym-oai
- #14491 Fix MCP tool calling @pakrym-oai
- #14493 memories: focus write prompts on user preferences @andi-oai
- #14510 Rename exec session IDs to cell IDs @pakrym-oai
- #14500 Update tool search prompts @mzeng-openai
- #14426 Decouple request permissions feature and tool @mousseau-oai
- #14503 Persist js_repl codex helpers across cells @fjord-oai
- #14517 Expose code-mode tools through globals @pakrym-oai
- #14502 feat(search_tool): gate search_tool on model supports_search_tool field @apanasenko-oai
- #14521 Reapply "Pass more params to compaction" (#14298) @rasmusrygaard
- #14524 Fix `codex exec --profile` handling @etraut-openai
- #14516 Rename reject approval policy to granular @mousseau-oai
- #14445 feat: add plugin/read. @xl-openai
- #14178 login: add custom CA support for login flows @joshka-oai
- #14535 Split multi-agent handlers per tool @pakrym-oai
- #13329 [js_repl] Hard-stop active js_repl execs on explicit user interrupts @aaronl-openai
- #14239 client: extend custom CA handling across HTTPS and websocket clients @joshka-oai
- #14536 Add typed multi-agent tool outputs @pakrym-oai
- #14514 fix: reopen writable linux carveouts under denied parents @viyatb-oai
- #14531 Add plugin usage telemetry @alexsong-oai
- #14511 code_mode: Move exec params from runtime declarations to @pragma @cconger
- #14504 Refactor cloud requirements error and surface in JSON-RPC error @alexsong-oai
- #14537 Add realtime v2 event parser behind feature flag @aibrahim-oai
- #14529 Simplify permissions available in request permissions tool @mousseau-oai
- #14522 feat: support skill-scoped managed network domain overrides in skill config @celia-oai
- #14554 Add codex tool support for realtime v2 handoff @aibrahim-oai
- #14556 Add realtime transcription mode for websocket sessions @aibrahim-oai
- #14518 Add diagnostics for read_only_unless_trusted timeout flake @aibrahim-oai
- #14603 Split multi-agent handler into dedicated files @pakrym-oai
- #14526 code mode: single line tool declarations @pakrym-oai
- #14400 Use a private desktop for Windows sandbox instead of Winsta0\Default @iceweasel-oai
- #14558 sending back imagaegencall response back to responseapi @won-openai
- #14553 Improve granular approval policy prompt @mousseau-oai
- #14541 chore: clarify plugin + app copy in model instructions @sayan-oai
- #14542 [bazel] Bump up cc and rust toolchains @zbarsky-openai
- #14512 Start TUI on embedded app server @etraut-openai
- #14606 Unify realtime v1/v2 session config @aibrahim-oai
- #14527 app-server: Add platform os and family to init response @euroelessar
- #14618 Use subagents naming in the TUI @aibrahim-oai
- #14304 Override local apps settings with requirements.toml settings @canvrno-oai
- #14479 feat(app-server, core): add more spans @owenlin0
- #13644 fix: preserve zsh-fork escalation fds across unified-exec spawn paths @bolinfest
- #14617 Add code_mode_only feature @pakrym-oai
- #13201 Slash copy osc52 wsl support @won-openai
- #14631 Rename multi-agent wait tool to wait_agent @aibrahim-oai
- #14622 Stabilize multi-agent feature flag @aibrahim-oai
- #14245 app-server: add v2 filesystem APIs @euroelessar
- #14605 Normalize MCP tool names to code-mode safe form @pakrym-oai
- #14637 Fix wait_agent expectations in core tests @charley-oai
- #13860 Add Smart Approvals guardian review across core, app-server, and TUI @charley-oai
- #14639 Fix stale create_wait_tool reference @charley-oai
- #14532 [hooks] stop continuation & stop_hook_active mechanics @eternal-openai
- #14635 Fix realtime transcription session.update tools payload @aibrahim-oai
- #14636 Use parser-specific realtime voice enum @aibrahim-oai
- #14633 refactor: make unified-exec zsh-fork state explicit @bolinfest
- #12031 Add openai_base_url config override for built-in provider @etraut-openai
- #14645 Fix Windows CI assertions for guardian and Smart Approvals @aibrahim-oai
- #14616 Fix turn context reconstruction after backtracking @charley-oai
- #14619 fix: persist future network host approvals across sessions @viyatb-oai
- #14650 fix: sync split sandbox policies for spawned subagents @viyatb-oai
- #14609 move plugin/skill instructions into dev msg and reorder @sayan-oai
- #12024 Enforce errors on overriding built-in model providers @etraut-openai
- #14646 Refresh Python SDK generated types @sayan-oai
- #14649 make defaultPrompt an array, keep backcompat @sayan-oai
- #14501 dynamic tool calls: add param `exposeToContext` to optionally hide tool @cconger
- #14651 Add argument-comment Dylint runner @bolinfest
- #14674 fix: fix symlinked writable roots in sandbox policies @viyatb-oai
- #14611 Add auth 401 recovery observability to client bug reports @ccy-oai
- #14647 [apps] Add tool call meta. @mzeng-openai
- #14732 [apps] Improve search tool fallback. @mzeng-openai
- #14602 Preserve background terminals on interrupt and rename cleanup command to /stop @friel-openai
- #14668 Reuse guardian session across approvals @charley-oai
- #14769 fix(core): preserve tool_params for elicitations @mzeng-openai
- #14807 fix: sub-agent role when using profiles @jif-oai
- #14806 feat: improve skills cache key to take into account config layering @jif-oai
- #13850 feat: make interrupt state not final for multi-agents @jif-oai
- #14816 fix: tui freeze when sub-agents are present @jif-oai
2026-03-16 11:43:12 -07:00
2026-03-16 11:43:12 -07:00
2026-01-08 07:50:58 -08:00
2025-04-16 12:56:08 -04:00
2026-02-06 14:41:53 +01:00
2025-04-16 12:56:08 -04:00
2026-03-10 04:11:31 +00:00

npm i -g @openai/codex
or brew install --cask codex

Codex CLI is a coding agent from OpenAI that runs locally on your computer.

Codex CLI splash


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
  • Linux
    • x86_64: codex-x86_64-unknown-linux-musl.tar.gz
    • arm64: codex-aarch64-unknown-linux-musl.tar.gz

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.

Description
pinned at tag rust-v0.124.0 by vibe-kanban crates/executors
Readme Apache-2.0 1.5 GiB
Languages
Rust 96.6%
Python 2.6%
Starlark 0.2%
TypeScript 0.2%