{"id":"src_5o4Llv42g_j-oLZvOjA9p","slug":"openai-codex-changelog","name":"Codex Changelog","type":"feed","url":"https://developers.openai.com/codex/changelog","orgId":"org_XCtsUSrelarAybkAnBD3g","org":{"slug":"openai","name":"OpenAI"},"isPrimary":false,"metadata":"{\"feedUrl\":\"https://developers.openai.com/codex/changelog/rss.xml\",\"feedType\":\"unknown\",\"feedDiscoveredAt\":\"2026-04-07T17:24:33.749Z\",\"noFeedFound\":false,\"feedEtag\":\"W/\\\"67aadc62c7e11f595d5c430726954feb\\\"\",\"feedLastModified\":\"Sun, 19 Apr 2026 06:54:09 GMT\"}","releaseCount":59,"releasesLast30Days":9,"avgReleasesPerWeek":3,"latestVersion":null,"latestDate":"2026-04-16T00:00:00.000Z","changelogUrl":null,"hasChangelogFile":false,"lastFetchedAt":"2026-04-16T20:05:16.692Z","trackingSince":"2025-05-19T00:00:00.000Z","releases":[{"id":"rel_IZuHN6MwigDafBk0kyNrB","version":null,"title":"Codex can now help with more of your work","summary":"# Codex can now help with more of your work\n\nCodex is becoming a broader workspace for getting work done with AI. This\nupdate makes it easier to start...","content":"# Codex can now help with more of your work\n\nCodex is becoming a broader workspace for getting work done with AI. This\nupdate makes it easier to start work with less setup, verify what Codex is\nbuilding, create richer outputs, and keep momentum across longer-running tasks.\n\n#### Verify more of your work\n\nThe Codex app now includes an early [**in-app browser**](/codex/app/browser). You\ncan open local or public pages that don't require sign-in, comment directly on\nthe rendered page, and ask Codex to address page-level feedback.\n\n[**Computer use**](/codex/app/computer-use) lets Codex operate macOS apps by seeing,\nclicking, and typing, which helps with native app testing, simulator flows,\nlow-risk app settings, and GUI-only bugs.\n\nThe feature isn't available in the European Economic Area, the United Kingdom, or\nSwitzerland at launch.\n\n#### Start, follow, and steer work\n\n[**Chats**](/codex/app/features#projectless-threads) are threads you can start\nwithout choosing a project folder first. They're useful for research, writing,\nplanning, analysis, source gathering, and tool-driven work that doesn't begin in\na codebase.\n\nFor work that needs a later check-in,\n[**thread automations**](/codex/app/automations#thread-automations) can wake up\nthe same thread on a schedule while preserving the conversation context. Use\nthem to check a long-running process, watch for updates, or continue a\nfollow-up loop without starting from scratch.\n\n[**The task sidebar**](/codex/app/features#task-sidebar) makes plans, sources,\ngenerated artifacts, and summaries easier to follow while Codex works.\n[**Context-aware suggestions**](/codex/app/settings#context-aware-suggestions)\ncan also help you pick up relevant follow-ups when you start or return to Codex.\n\n#### Stronger for software development\n\nCodex now brings more of the **pull request workflow** into the app. You can\ninspect [**GitHub pull requests**](/codex/app/review#pull-request-reviews) in the\nsidebar, review comments in the diff, review changed files, then ask Codex to\nexplain feedback, make changes, check them, and keep the review moving.\n\n#### Review richer outputs\n\nThe [**artifact viewer**](/codex/app/features#artifact-viewer) can preview\ngenerated files such as PDF files, spreadsheets, documents, and presentations in\nthe sidebar before you commit or share them. [**Memories**](/codex/memories),\nwhere available, can also carry useful context from past tasks into future\nthreads, including stable preferences, project conventions, and recurring work\npatterns.\n\n#### Other features\n\n- [Remote connections](/codex/remote-connections) - We are gradually rolling out SSH remote connections in alpha\n- Support for [multiple terminals](/codex/app/features#integrated-terminal)\n- macOS menu bar and [Windows system tray](/codex/app/windows) support\n- [Multi-window support](/codex/app/features#floating-pop-out-window)\n- [Intel Mac support](/codex/app)\n- [New plugins](/codex/plugins)\n- Improved thread and tool rendering","publishedAt":"2026-04-16T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#codex-2026-04-16-app","media":[]},{"id":"rel_x1PVjYZuAAZQ9Fou83NkJ","version":"0.121.0","title":"Codex CLI Release: 0.121.0","summary":"## New Features\n\n- Added `codex marketplace add` and app-server support for installing plugin marketplaces from GitHub, git URLs, local directories, a...","content":"## New Features\n\n- Added `codex marketplace add` and app-server support for installing plugin marketplaces from GitHub, git URLs, local directories, and direct `marketplace.json` URLs ([#17087](https://github.com/openai/codex/pull/17087), [#17717](https://github.com/openai/codex/pull/17717), [#17756](https://github.com/openai/codex/pull/17756)).\n\n- Added TUI prompt history improvements, including `Ctrl+R` reverse search and local recall for accepted slash commands ([#17550](https://github.com/openai/codex/pull/17550), [#17336](https://github.com/openai/codex/pull/17336)).\n\n- Added TUI and app-server controls for memory mode, memory reset/deletion, and memory-extension cleanup ([#17632](https://github.com/openai/codex/pull/17632), [#17626](https://github.com/openai/codex/pull/17626), [#17913](https://github.com/openai/codex/pull/17913), [#17937](https://github.com/openai/codex/pull/17937), [#17844](https://github.com/openai/codex/pull/17844)).\n\n- Expanded MCP/plugin support with MCP Apps tool calls, namespaced MCP registration, parallel-call opt-in, and sandbox-state metadata for MCP servers ([#17364](https://github.com/openai/codex/pull/17364), [#17404](https://github.com/openai/codex/pull/17404), [#17667](https://github.com/openai/codex/pull/17667), [#17763](https://github.com/openai/codex/pull/17763)).\n\n- Added realtime and app-server APIs for output modality, transcript completion events, raw turn item injection, and symlink-aware filesystem metadata ([#17701](https://github.com/openai/codex/pull/17701), [#17703](https://github.com/openai/codex/pull/17703), [#17719](https://github.com/openai/codex/pull/17719)).\n\n- Added a secure devcontainer profile with bubblewrap support, plus macOS sandbox allowlists for Unix sockets ([#10431](https://github.com/openai/codex/pull/10431), [#17547](https://github.com/openai/codex/pull/17547), [#17654](https://github.com/openai/codex/pull/17654)).\n\n## Bug Fixes\n\n- Fixed macOS sandbox/proxy handling for private DNS and removed the `danger-full-access` denylist-only network mode ([#17370](https://github.com/openai/codex/pull/17370), [#17732](https://github.com/openai/codex/pull/17732)).\n\n- Fixed Windows cwd/session matching so `resume --last` and `thread/list` work when paths use verbatim prefixes ([#17414](https://github.com/openai/codex/pull/17414)).\n\n- Fixed rate-limit/account handling for `prolite` plans and made unknown WHAM plan values decodable ([#17419](https://github.com/openai/codex/pull/17419)).\n\n- Made Guardian timeouts distinct from policy denials, with timeout-specific guidance and visible TUI history entries ([#17381](https://github.com/openai/codex/pull/17381), [#17486](https://github.com/openai/codex/pull/17486), [#17521](https://github.com/openai/codex/pull/17521), [#17557](https://github.com/openai/codex/pull/17557)).\n\n- Stabilized app-server behavior by avoiding premature thread unloads, tolerating failed trust persistence on startup, and skipping broken symlinks in `fs/readDirectory` ([#17398](https://github.com/openai/codex/pull/17398), [#17595](https://github.com/openai/codex/pull/17595), [#17907](https://github.com/openai/codex/pull/17907)).\n\n- Fixed MCP/tool-call edge cases including flattened deferred tool names, elicitation timeout accounting, and empty namespace descriptions ([#17556](https://github.com/openai/codex/pull/17556), [#17566](https://github.com/openai/codex/pull/17566), [#17946](https://github.com/openai/codex/pull/17946)).\n\n## Documentation\n\n- Documented the secure devcontainer profile and its bubblewrap requirements ([#10431](https://github.com/openai/codex/pull/10431), [#17547](https://github.com/openai/codex/pull/17547)).\n\n- Added TUI composer documentation for history search behavior ([#17550](https://github.com/openai/codex/pull/17550)).\n\n- Updated app-server docs for new MCP, marketplace, turn injection, memory reset, filesystem metadata, external-agent migration, and websocket token-hash APIs ([#17364](https://github.com/openai/codex/pull/17364), [#17717](https://github.com/openai/codex/pull/17717), [#17703](https://github.com/openai/codex/pull/17703), [#17913](https://github.com/openai/codex/pull/17913), [#17719](https://github.com/openai/codex/pull/17719), [#17855](https://github.com/openai/codex/pull/17855), [#17871](https://github.com/openai/codex/pull/17871)).\n\n- Documented WSL1 bubblewrap limitations and WSL2 behavior ([#17559](https://github.com/openai/codex/pull/17559)).\n\n- Added memory pipeline documentation for extension cleanup ([#17844](https://github.com/openai/codex/pull/17844)).\n\n## Chores\n\n- Hardened supply-chain and CI inputs by pinning GitHub Actions, cargo installs, git dependencies, V8 checksums, and cargo-deny source allowlists ([#17471](https://github.com/openai/codex/pull/17471)).\n\n- Added Bazel release-build verification so release-only Rust code is compiled in PR CI ([#17704](https://github.com/openai/codex/pull/17704), [#17705](https://github.com/openai/codex/pull/17705)).\n\n- Introduced the `codex-thread-store` crate/interface and moved local thread listing behind it ([#17659](https://github.com/openai/codex/pull/17659), [#17824](https://github.com/openai/codex/pull/17824)).\n\n- Required reviewed pnpm dependency build scripts for workspace installs ([#17558](https://github.com/openai/codex/pull/17558)).\n\n- Reduced Rust maintenance surface with broader absolute-path types and removal of unused helper APIs ([#17407](https://github.com/openai/codex/pull/17407), [#17792](https://github.com/openai/codex/pull/17792), [#17146](https://github.com/openai/codex/pull/17146)).\n\n## Changelog\n\nFull Changelog: [rust-v0.120.0...rust-v0.121.0](https://github.com/openai/codex/compare/rust-v0.120.0...rust-v0.121.0)\n\n- [#17087](https://github.com/openai/codex/pull/17087) Add marketplace command [@xli-oai](https://github.com/xli-oai)\n\n- [#17409](https://github.com/openai/codex/pull/17409) Fix Windows exec-server output test flake [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17381](https://github.com/openai/codex/pull/17381) representing guardian review timeouts in protocol types [@won-openai](https://github.com/won-openai)\n\n- [#17399](https://github.com/openai/codex/pull/17399) TUI: enforce core boundary [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17370](https://github.com/openai/codex/pull/17370) fix: unblock private DNS in macOS sandbox [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#17396](https://github.com/openai/codex/pull/17396) update cloud requirements parse failure msg [@alexsong-oai](https://github.com/alexsong-oai)\n\n- [#17364](https://github.com/openai/codex/pull/17364) [mcp] Support MCP Apps part 3 - Add mcp tool call support. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#17424](https://github.com/openai/codex/pull/17424) Stabilize marketplace add local source test [@ningyi-oai](https://github.com/ningyi-oai)\n\n- [#17414](https://github.com/openai/codex/pull/17414) Fix thread/list cwd filtering for Windows verbatim paths [@etraut-openai](https://github.com/etraut-openai)\n\n- [#10431](https://github.com/openai/codex/pull/10431) feat(devcontainer): add separate secure customer profile [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#17314](https://github.com/openai/codex/pull/17314) Pass turn id with feedback uploads [@ningyi-oai](https://github.com/ningyi-oai)\n\n- [#17336](https://github.com/openai/codex/pull/17336) fix(tui): recall accepted slash commands locally [@fcoury-oai](https://github.com/fcoury-oai)\n\n- [#17430](https://github.com/openai/codex/pull/17430) Handle closed TUI input stream as shutdown [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17385](https://github.com/openai/codex/pull/17385) Add use_agent_identity feature flag [@adrian-openai](https://github.com/adrian-openai)\n\n- [#17483](https://github.com/openai/codex/pull/17483) Update issue labeler agent labels [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17493](https://github.com/openai/codex/pull/17493) fix [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17419](https://github.com/openai/codex/pull/17419) Support prolite plan type [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17416](https://github.com/openai/codex/pull/17416) Clear /ps after /stop [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17415](https://github.com/openai/codex/pull/17415) Restore codex-tui resume hint on exit [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17402](https://github.com/openai/codex/pull/17402) chore: refactor name and namespace to single type [@sayan-oai](https://github.com/sayan-oai)\n\n- [#17486](https://github.com/openai/codex/pull/17486) changing decision semantics after guardian timeout [@won-openai](https://github.com/won-openai)\n\n- [#17521](https://github.com/openai/codex/pull/17521) Clarify guardian timeout guidance [@won-openai](https://github.com/won-openai)\n\n- [#17547](https://github.com/openai/codex/pull/17547) [codex] Support bubblewrap in secure Docker devcontainer [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#17519](https://github.com/openai/codex/pull/17519) Budget realtime current thread context [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17556](https://github.com/openai/codex/pull/17556) [codex] Support flattened deferred MCP tool calls [@fc-oai](https://github.com/fc-oai)\n\n- [#17558](https://github.com/openai/codex/pull/17558) build(pnpm): require reviewed dependency build scripts [@mcgrew-oai](https://github.com/mcgrew-oai)\n\n- [#17559](https://github.com/openai/codex/pull/17559) fix(sandboxing): reject WSL1 bubblewrap sandboxing [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#17520](https://github.com/openai/codex/pull/17520) Mirror user text into realtime [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17550](https://github.com/openai/codex/pull/17550) feat(tui): add reverse history search to composer [@fcoury-oai](https://github.com/fcoury-oai)\n\n- [#17420](https://github.com/openai/codex/pull/17420) Remove context status-line meter [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17506](https://github.com/openai/codex/pull/17506) Expose instruction sources (AGENTS.md) via app server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17566](https://github.com/openai/codex/pull/17566) fix(mcp) pause timer for elicitations [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#17406](https://github.com/openai/codex/pull/17406) Add MCP tool wall time to model output [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17294](https://github.com/openai/codex/pull/17294) Run exec-server fs operations through sandbox helper [@starr-openai](https://github.com/starr-openai)\n\n- [#17605](https://github.com/openai/codex/pull/17605) Stabilize exec-server process tests [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17221](https://github.com/openai/codex/pull/17221) feat: ignore keyring on 0.0.0 [@jif-oai](https://github.com/jif-oai)\n\n- [#17216](https://github.com/openai/codex/pull/17216) Build remote exec env from exec-server policy [@jif-oai](https://github.com/jif-oai)\n\n- [#17633](https://github.com/openai/codex/pull/17633) nit: change consolidation model [@jif-oai](https://github.com/jif-oai)\n\n- [#17640](https://github.com/openai/codex/pull/17640) fix: stability exec server [@jif-oai](https://github.com/jif-oai)\n\n- [#17643](https://github.com/openai/codex/pull/17643) fix: dedup compact [@jif-oai](https://github.com/jif-oai)\n\n- [#17247](https://github.com/openai/codex/pull/17247) Make forked agent spawns keep parent model config [@friel-openai](https://github.com/friel-openai)\n\n- [#17470](https://github.com/openai/codex/pull/17470) Fix custom tool output cleanup on stream failure [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17417](https://github.com/openai/codex/pull/17417) Emit plan-mode prompt notifications for questionnaires [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17481](https://github.com/openai/codex/pull/17481) Wrap status reset timestamps in narrow layouts [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17601](https://github.com/openai/codex/pull/17601) Suppress duplicate compaction and terminal wait events [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17657](https://github.com/openai/codex/pull/17657) Fix TUI compaction item replay [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17595](https://github.com/openai/codex/pull/17595) Do not fail thread start when trust persistence fails [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17407](https://github.com/openai/codex/pull/17407) Use AbsolutePathBuf in skill loading and codex_home [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17626](https://github.com/openai/codex/pull/17626) feat: disable memory endpoint [@jif-oai](https://github.com/jif-oai)\n\n- [#17365](https://github.com/openai/codex/pull/17365) Include legacy deny paths in elevated Windows sandbox setup [@iceweasel-oai](https://github.com/iceweasel-oai)\n\n- [#17638](https://github.com/openai/codex/pull/17638) feat: Avoid reloading curated marketplaces for tool-suggest discovera… [@jif-oai](https://github.com/jif-oai)\n\n- [#17398](https://github.com/openai/codex/pull/17398) app-server: Only unload threads which were unused for some time [@euroelessar](https://github.com/euroelessar)\n\n- [#17669](https://github.com/openai/codex/pull/17669) only specify remote ports when the rule needs them [@iceweasel-oai](https://github.com/iceweasel-oai)\n\n- [#17691](https://github.com/openai/codex/pull/17691) Fix tui compilation [@davidhao3300](https://github.com/davidhao3300)\n\n- [#17384](https://github.com/openai/codex/pull/17384) Update phase 2 memory model to gpt-5.4 [@kliu128](https://github.com/kliu128)\n\n- [#17395](https://github.com/openai/codex/pull/17395) Remove unnecessary tests [@kliu128](https://github.com/kliu128)\n\n- [#17685](https://github.com/openai/codex/pull/17685) Cap realtime mirrored user turns [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17699](https://github.com/openai/codex/pull/17699) change realtime tool description [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17667](https://github.com/openai/codex/pull/17667) Add `supports_parallel_tool_calls` flag to included mcps [@josiah-openai](https://github.com/josiah-openai)\n\n- [#17703](https://github.com/openai/codex/pull/17703) Add turn item injection API [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17671](https://github.com/openai/codex/pull/17671) Stabilize exec-server filesystem tests in CI [@starr-openai](https://github.com/starr-openai)\n\n- [#17557](https://github.com/openai/codex/pull/17557) guardian timeout fix pr 3 - ux touch for timeouts [@won-openai](https://github.com/won-openai)\n\n- [#17719](https://github.com/openai/codex/pull/17719) [codex] Add symlink flag to fs metadata [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17146](https://github.com/openai/codex/pull/17146) [codex] Remove unused Rust helpers [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17471](https://github.com/openai/codex/pull/17471) fix: pin inputs [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#17717](https://github.com/openai/codex/pull/17717) [codex] Refactor marketplace add into shared core flow [@xli-oai](https://github.com/xli-oai)\n\n- [#17747](https://github.com/openai/codex/pull/17747) Refactor plugin loading to async [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17709](https://github.com/openai/codex/pull/17709) [codex] Initialize ICU data for code mode V8 [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17749](https://github.com/openai/codex/pull/17749) [codex] drain mailbox only at request boundaries [@tibo-openai](https://github.com/tibo-openai)\n\n- [#16640](https://github.com/openai/codex/pull/16640) [codex-analytics] feature plumbing and emittance [@rhan-oai](https://github.com/rhan-oai)\n\n- [#17761](https://github.com/openai/codex/pull/17761) Tighten realtime handoff finalization [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17701](https://github.com/openai/codex/pull/17701) Add realtime output modality and transcript events [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17777](https://github.com/openai/codex/pull/17777) nit: feature flag [@jif-oai](https://github.com/jif-oai)\n\n- [#17637](https://github.com/openai/codex/pull/17637) feat: add context percent to status line [@jif-oai](https://github.com/jif-oai)\n\n- [#17665](https://github.com/openai/codex/pull/17665) Always enable original image detail on supported models [@fjord-oai](https://github.com/fjord-oai)\n\n- [#17374](https://github.com/openai/codex/pull/17374) [codex-analytics] add session source to client metadata [@marksteinbrick-oai](https://github.com/marksteinbrick-oai)\n\n- [#17489](https://github.com/openai/codex/pull/17489) Moving updated-at timestamps to unique millisecond times [@ddr-oai](https://github.com/ddr-oai)\n\n- [#17784](https://github.com/openai/codex/pull/17784) feat: codex sampler [@jif-oai](https://github.com/jif-oai)\n\n- [#17732](https://github.com/openai/codex/pull/17732) fix: Revert danger-full-access denylist-only mode [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#17234](https://github.com/openai/codex/pull/17234) Redirect debug client output to a file [@rasmusrygaard](https://github.com/rasmusrygaard)\n\n- [#17803](https://github.com/openai/codex/pull/17803) Keep image_detail_original as a removed feature flag [@fjord-oai](https://github.com/fjord-oai)\n\n- [#17372](https://github.com/openai/codex/pull/17372) app-server: prepare to run initialized rpcs concurrently [@euroelessar](https://github.com/euroelessar)\n\n- [#17704](https://github.com/openai/codex/pull/17704) Refactor Bazel CI job setup [@bolinfest](https://github.com/bolinfest)\n\n- [#17674](https://github.com/openai/codex/pull/17674) Route apply_patch through the environment filesystem [@starr-openai](https://github.com/starr-openai)\n\n- [#17702](https://github.com/openai/codex/pull/17702) Fix remote skill popup loading [@starr-openai](https://github.com/starr-openai)\n\n- [#17830](https://github.com/openai/codex/pull/17830) [codex] Fix app-server initialized request analytics build [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17389](https://github.com/openai/codex/pull/17389) [codex-analytics] enable general analytics by default [@rhan-oai](https://github.com/rhan-oai)\n\n- [#17659](https://github.com/openai/codex/pull/17659) thread store interface [@wiltzius-openai](https://github.com/wiltzius-openai)\n\n- [#17792](https://github.com/openai/codex/pull/17792) Spread AbsolutePathBuf [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17808](https://github.com/openai/codex/pull/17808) fix: apply patch bin refresh [@jif-oai](https://github.com/jif-oai)\n\n- [#17838](https://github.com/openai/codex/pull/17838) Add realtime wire trace logs [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17684](https://github.com/openai/codex/pull/17684) Adjust default tool search result caps [@malone-oai](https://github.com/malone-oai)\n\n- [#17705](https://github.com/openai/codex/pull/17705) Add Bazel verify-release-build job [@bolinfest](https://github.com/bolinfest)\n\n- [#17720](https://github.com/openai/codex/pull/17720) Make skill loading filesystem-aware [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17756](https://github.com/openai/codex/pull/17756) [codex] Support local marketplace sources [@xli-oai](https://github.com/xli-oai)\n\n- [#17846](https://github.com/openai/codex/pull/17846) Fix for Guardian CI Tests stack overflow, applying Box to reduce stack pressure [@won-openai](https://github.com/won-openai)\n\n- [#17855](https://github.com/openai/codex/pull/17855) support plugins in external agent config migration [@alexsong-oai](https://github.com/alexsong-oai)\n\n- [#17872](https://github.com/openai/codex/pull/17872) Disable hooks in guardian review sessions [@abhinav-oai](https://github.com/abhinav-oai)\n\n- [#17868](https://github.com/openai/codex/pull/17868) Wrap delegated input text [@guinness-oai](https://github.com/guinness-oai)\n\n- [#17884](https://github.com/openai/codex/pull/17884) Fix clippy warnings in external agent config migration [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#17837](https://github.com/openai/codex/pull/17837) Reuse remote exec-server in core tests [@starr-openai](https://github.com/starr-openai)\n\n- [#17859](https://github.com/openai/codex/pull/17859) sandbox: remove dead seatbelt helper and update tests [@bolinfest](https://github.com/bolinfest)\n\n- [#17870](https://github.com/openai/codex/pull/17870) fix: cleanup the contract of the general-purpose exec() function [@bolinfest](https://github.com/bolinfest)\n\n- [#17871](https://github.com/openai/codex/pull/17871) fix: add websocket capability token hash support [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#17763](https://github.com/openai/codex/pull/17763) Send sandbox state through MCP tool metadata [@aaronl-openai](https://github.com/aaronl-openai)\n\n- [#17654](https://github.com/openai/codex/pull/17654) Support Unix socket allowlists in macOS sandbox [@aaronl-openai](https://github.com/aaronl-openai)\n\n- [#17915](https://github.com/openai/codex/pull/17915) fix: cargo deny [@jif-oai](https://github.com/jif-oai)\n\n- [#17913](https://github.com/openai/codex/pull/17913) feat: add endpoint to delete memories [@jif-oai](https://github.com/jif-oai)\n\n- [#17844](https://github.com/openai/codex/pull/17844) feat: cleaning of memories extension [@jif-oai](https://github.com/jif-oai)\n\n- [#17921](https://github.com/openai/codex/pull/17921) chore: exp flag [@jif-oai](https://github.com/jif-oai)\n\n- [#17917](https://github.com/openai/codex/pull/17917) [codex] Fix current main CI blockers [@sayan-oai](https://github.com/sayan-oai)\n\n- [#17919](https://github.com/openai/codex/pull/17919) chore: do not disable memories for past rollouts on reset [@jif-oai](https://github.com/jif-oai)\n\n- [#17924](https://github.com/openai/codex/pull/17924) nit: stable test [@jif-oai](https://github.com/jif-oai)\n\n- [#17632](https://github.com/openai/codex/pull/17632) feat: memories menu [@jif-oai](https://github.com/jif-oai)\n\n- [#17404](https://github.com/openai/codex/pull/17404) register all mcp tools with namespace [@sayan-oai](https://github.com/sayan-oai)\n\n- [#17941](https://github.com/openai/codex/pull/17941) nit: doc [@jif-oai](https://github.com/jif-oai)\n\n- [#17938](https://github.com/openai/codex/pull/17938) feat: sanitize rollouts before phase 1 [@jif-oai](https://github.com/jif-oai)\n\n- [#17937](https://github.com/openai/codex/pull/17937) feat: reset memories button [@jif-oai](https://github.com/jif-oai)\n\n- [#17883](https://github.com/openai/codex/pull/17883) Remove exec-server fs sandbox request preflight [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17386](https://github.com/openai/codex/pull/17386) Register agent identities behind use_agent_identity [@adrian-openai](https://github.com/adrian-openai)\n\n- [#17907](https://github.com/openai/codex/pull/17907) Fix fs/readDirectory to skip broken symlinks [@willwang-openai](https://github.com/willwang-openai)\n\n- [#17960](https://github.com/openai/codex/pull/17960) chore(features) codex dependencies feat [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#17965](https://github.com/openai/codex/pull/17965) fix: rename is_azure_responses_wire_base_url to is_azure_responses_provider [@bolinfest](https://github.com/bolinfest)\n\n- [#17946](https://github.com/openai/codex/pull/17946) Fix empty tool descriptions [@shijie-oai](https://github.com/shijie-oai)\n\n- [#17824](https://github.com/openai/codex/pull/17824) [codex] Add local thread store listing [@wiltzius-openai](https://github.com/wiltzius-openai)\n\n- [#17942](https://github.com/openai/codex/pull/17942) Add CLI update announcement [@shijie-oai](https://github.com/shijie-oai)\n\n- [#17866](https://github.com/openai/codex/pull/17866) Refactor auth providers to mutate request headers [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17902](https://github.com/openai/codex/pull/17902) app-server: track remote-control seq IDs per stream [@euroelessar](https://github.com/euroelessar)\n\n- [#17957](https://github.com/openai/codex/pull/17957) mcp: remove codex/sandbox-state custom request support [@bolinfest](https://github.com/bolinfest)\n\n- [#17953](https://github.com/openai/codex/pull/17953) fix: propagate log db [@jif-oai](https://github.com/jif-oai)\n\n- [#17920](https://github.com/openai/codex/pull/17920) chore(tui) cleanup [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#17981](https://github.com/openai/codex/pull/17981) chore: tmp disable [@jif-oai](https://github.com/jif-oai)","publishedAt":"2026-04-15T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#github-release-309557036","media":[]},{"id":"rel_1v0ijz02dNLz-D_k6kCJv","version":"0.120.0","title":"Codex CLI Release: 0.120.0","summary":"## New Features\n\n- Realtime V2 can now stream background agent progress while work is still running and queue follow-up responses until the active res...","content":"## New Features\n\n- Realtime V2 can now stream background agent progress while work is still running and queue follow-up responses until the active response completes ([#17264](https://github.com/openai/codex/pull/17264), [#17306](https://github.com/openai/codex/pull/17306))\n\n- Hook activity in the TUI is easier to scan, with live running hooks shown separately and completed hook output kept only when useful ([#17266](https://github.com/openai/codex/pull/17266))\n\n- Custom TUI status lines can include the renamed thread title ([#17187](https://github.com/openai/codex/pull/17187))\n\n- Code-mode tool declarations now include MCP `outputSchema` details so structured tool results are typed more precisely ([#17210](https://github.com/openai/codex/pull/17210))\n\n- SessionStart hooks can distinguish sessions created by `/clear` from fresh startup or resume sessions ([#17073](https://github.com/openai/codex/pull/17073))\n\n## Bug Fixes\n\n- Fixed Windows elevated sandbox handling for split filesystem policies, including read-only carveouts under writable roots ([#14568](https://github.com/openai/codex/pull/14568))\n\n- Fixed sandbox permission handling for symlinked writable roots and carveouts, preventing failures in shell and `apply_patch` workflows ([#15981](https://github.com/openai/codex/pull/15981))\n\n- Fixed `codex --remote wss://...` panics by installing the Rustls crypto provider before TLS websocket connections ([#17288](https://github.com/openai/codex/pull/17288))\n\n- Preserved tool search result ordering instead of alphabetically reordering results ([#17263](https://github.com/openai/codex/pull/17263))\n\n- Fixed live Stop-hook prompts so they appear immediately instead of only after thread history reloads ([#17189](https://github.com/openai/codex/pull/17189))\n\n- Fixed app-server MCP cleanup on disconnect so unsubscribed threads and resources are torn down correctly ([#17223](https://github.com/openai/codex/pull/17223))\n\n## Documentation\n\n- Documented the elevated vs restricted-token Windows sandbox support split in the core README ([#14568](https://github.com/openai/codex/pull/14568))\n\n- Updated app-server protocol documentation for the new `/clear` SessionStart source ([#17073](https://github.com/openai/codex/pull/17073))\n\n## Chores\n\n- Made rollout recording more reliable by retrying failed flushes and surfacing durability failures instead of dropping buffered items ([#17214](https://github.com/openai/codex/pull/17214))\n\n- Added analytics schemas and metadata wiring for compaction and Guardian review events ([#17155](https://github.com/openai/codex/pull/17155), [#17055](https://github.com/openai/codex/pull/17055))\n\n- Improved Guardian follow-up efficiency by sending transcript deltas instead of repeatedly resending full history ([#17269](https://github.com/openai/codex/pull/17269))\n\n- Added stable Guardian review IDs across app-server events and internal approval state ([#17298](https://github.com/openai/codex/pull/17298))\n\n## Changelog\n\nFull Changelog: [rust-v0.119.0...rust-v0.120.0](https://github.com/openai/codex/compare/rust-v0.119.0...rust-v0.120.0)\n\n- [#17268](https://github.com/openai/codex/pull/17268) remove windows gate that disables hooks [@iceweasel-oai](https://github.com/iceweasel-oai)\n\n- [#17267](https://github.com/openai/codex/pull/17267) Stop Realtime V2 response.done delegation [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14568](https://github.com/openai/codex/pull/14568) fix: support split carveouts in windows elevated sandbox [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#17263](https://github.com/openai/codex/pull/17263) preserve search results order in tool_search_output [@sayan-oai](https://github.com/sayan-oai)\n\n- [#17189](https://github.com/openai/codex/pull/17189) Emit live hook prompts before raw-event filtering [@abhinav-oai](https://github.com/abhinav-oai)\n\n- [#17288](https://github.com/openai/codex/pull/17288) Install rustls provider for remote websocket client [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16969](https://github.com/openai/codex/pull/16969) Option to Notify Workspace Owner When Usage Limit is Reached [@richardopenai](https://github.com/richardopenai)\n\n- [#17278](https://github.com/openai/codex/pull/17278) Rename Realtime V2 tool to background_agent [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17280](https://github.com/openai/codex/pull/17280) Extract realtime input task handlers [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17249](https://github.com/openai/codex/pull/17249) adding parent_thread_id in guardian [@won-openai](https://github.com/won-openai)\n\n- [#17264](https://github.com/openai/codex/pull/17264) Stream Realtime V2 background agent progress [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17210](https://github.com/openai/codex/pull/17210) Add output_schema to code mode render [@vivi](https://github.com/vivi)\n\n- [#16344](https://github.com/openai/codex/pull/16344) feat: move exec-server ownership [@jif-oai](https://github.com/jif-oai)\n\n- [#17214](https://github.com/openai/codex/pull/17214) feat: make rollout recorder reliable against errors [@jif-oai](https://github.com/jif-oai)\n\n- [#17223](https://github.com/openai/codex/pull/17223) fix: MCP leaks in app-server [@jif-oai](https://github.com/jif-oai)\n\n- [#17338](https://github.com/openai/codex/pull/17338) feat: description multi-agent v2 [@jif-oai](https://github.com/jif-oai)\n\n- [#17269](https://github.com/openai/codex/pull/17269) feat(guardian): send only transcript deltas on guardian followups [@owenlin0](https://github.com/owenlin0)\n\n- [#17306](https://github.com/openai/codex/pull/17306) Queue Realtime V2 response.create while active [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17352](https://github.com/openai/codex/pull/17352) fix: main [@jif-oai](https://github.com/jif-oai)\n\n- [#17363](https://github.com/openai/codex/pull/17363) Strengthen realtime backend delegation prompt [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17155](https://github.com/openai/codex/pull/17155) [codex-analytics] add compaction analytics event [@rhan-oai](https://github.com/rhan-oai)\n\n- [#17187](https://github.com/openai/codex/pull/17187) Add thread title to configurable TUI status line [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#17194](https://github.com/openai/codex/pull/17194) add parent-id to guardian context [@won-openai](https://github.com/won-openai)\n\n- [#17266](https://github.com/openai/codex/pull/17266) [codex] Improve hook status rendering [@abhinav-oai](https://github.com/abhinav-oai)\n\n- [#17073](https://github.com/openai/codex/pull/17073) Support clear SessionStart source [@abhinav-oai](https://github.com/abhinav-oai)\n\n- [#17298](https://github.com/openai/codex/pull/17298) fix(guardian, app-server): introduce guardian review ids [@owenlin0](https://github.com/owenlin0)\n\n- [#17391](https://github.com/openai/codex/pull/17391) Revert \"Option to Notify Workspace Owner When Usage Limit is Reached\" [@shijie-oai](https://github.com/shijie-oai)\n\n- [#17371](https://github.com/openai/codex/pull/17371) app-server: add pipelined config rpc regression test [@euroelessar](https://github.com/euroelessar)\n\n- [#15981](https://github.com/openai/codex/pull/15981) fix(permissions): fix symlinked writable roots in sandbox permissions [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#17055](https://github.com/openai/codex/pull/17055) feat(analytics): add guardian review event schema [@owenlin0](https://github.com/owenlin0)","publishedAt":"2026-04-11T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#github-release-307789275","media":[]},{"id":"rel_DMujNhMFShL1qWYAEl1n3","version":"0.119.0","title":"Codex CLI Release: 0.119.0","summary":"## New Features\n\n- Realtime voice sessions now default to the v2 WebRTC path, with configurable transport, voice selection, native TUI media support, ...","content":"## New Features\n\n- Realtime voice sessions now default to the v2 WebRTC path, with configurable transport, voice selection, native TUI media support, and app-server coverage for the new flow ([#16960](https://github.com/openai/codex/pull/16960), [#17057](https://github.com/openai/codex/pull/17057), [#17058](https://github.com/openai/codex/pull/17058), [#17093](https://github.com/openai/codex/pull/17093), [#17097](https://github.com/openai/codex/pull/17097), [#17145](https://github.com/openai/codex/pull/17145), [#17165](https://github.com/openai/codex/pull/17165), [#17176](https://github.com/openai/codex/pull/17176), [#17183](https://github.com/openai/codex/pull/17183), [#17188](https://github.com/openai/codex/pull/17188)).\n\n- MCP Apps and custom MCP servers gained richer support, including resource reads, tool-call metadata, custom-server tool search, server-driven elicitations, file-parameter uploads, and more reliable plugin cache refreshes ([#16082](https://github.com/openai/codex/pull/16082), [#16465](https://github.com/openai/codex/pull/16465), [#16944](https://github.com/openai/codex/pull/16944), [#17043](https://github.com/openai/codex/pull/17043), [#15197](https://github.com/openai/codex/pull/15197), [#16191](https://github.com/openai/codex/pull/16191), [#16947](https://github.com/openai/codex/pull/16947)).\n\n- Remote/app-server workflows now support egress websocket transport, remote `--cd` forwarding, runtime remote-control enablement, sandbox-aware filesystem APIs, and an experimental `codex exec-server` subcommand ([#15951](https://github.com/openai/codex/pull/15951), [#16700](https://github.com/openai/codex/pull/16700), [#16973](https://github.com/openai/codex/pull/16973), [#16751](https://github.com/openai/codex/pull/16751), [#17059](https://github.com/openai/codex/pull/17059), [#17142](https://github.com/openai/codex/pull/17142), [#17162](https://github.com/openai/codex/pull/17162)).\n\n- The TUI can copy the latest agent response with `Ctrl+O`, including better clipboard behavior over SSH and across platforms ([#16966](https://github.com/openai/codex/pull/16966)).\n\n- `/resume` can now jump directly to a session by ID or name from the TUI ([#17222](https://github.com/openai/codex/pull/17222)).\n\n- TUI notifications are more configurable, including Warp OSC 9 support and an opt-in mode for notifications even while the terminal is focused ([#17174](https://github.com/openai/codex/pull/17174), [#17175](https://github.com/openai/codex/pull/17175)).\n\n## Bug Fixes\n\n- The TUI starts faster by fetching rate limits asynchronously, and `/status` now refreshes stale limits instead of showing frozen or misleading quota information ([#16201](https://github.com/openai/codex/pull/16201), [#17039](https://github.com/openai/codex/pull/17039)).\n\n- Resume flows are more stable: the picker no longer flashes false empty states, uses fresher thread names, stabilizes timestamp labels, preserves resume hints on zero-token exits, and avoids crashing when resuming the current thread ([#16591](https://github.com/openai/codex/pull/16591), [#16601](https://github.com/openai/codex/pull/16601), [#16822](https://github.com/openai/codex/pull/16822), [#16987](https://github.com/openai/codex/pull/16987), [#17086](https://github.com/openai/codex/pull/17086)).\n\n- Composer and chat behavior are smoother, including fixed paste teardown, CJK word navigation, stale `/copy` output, percent-decoded local file links, and clearer truncated exec-output hints ([#16202](https://github.com/openai/codex/pull/16202), [#16829](https://github.com/openai/codex/pull/16829), [#16648](https://github.com/openai/codex/pull/16648), [#16810](https://github.com/openai/codex/pull/16810), [#17076](https://github.com/openai/codex/pull/17076)).\n\n- Fast Mode no longer stays stuck on after `/fast off` in app-server-backed TUI sessions ([#16833](https://github.com/openai/codex/pull/16833)).\n\n- MCP status and startup are less noisy and faster: hyphenated server names list tools correctly, `/mcp` avoids slow full inventory probes, disabled servers skip auth probing, and residency headers are honored by `codex mcp-server` ([#16674](https://github.com/openai/codex/pull/16674), [#16831](https://github.com/openai/codex/pull/16831), [#17098](https://github.com/openai/codex/pull/17098), [#16952](https://github.com/openai/codex/pull/16952)).\n\n- Sandbox, network, and platform edge cases were tightened, including clearer read-only `apply_patch` errors, refreshed network proxy policy after sandbox changes, suppressed irrelevant bubblewrap warnings, a macOS HTTP-client sandbox panic fix, and Windows firewall address handling ([#16885](https://github.com/openai/codex/pull/16885), [#17040](https://github.com/openai/codex/pull/17040), [#16667](https://github.com/openai/codex/pull/16667), [#16670](https://github.com/openai/codex/pull/16670), [#17053](https://github.com/openai/codex/pull/17053)).\n\n## Documentation\n\n- The README now uses the current ChatGPT Business plan name ([#16348](https://github.com/openai/codex/pull/16348)).\n\n- Developer guidance for `argument_comment_lint` was updated to favor getting CI started instead of blocking on slow local lint runs ([#16375](https://github.com/openai/codex/pull/16375)).\n\n- Obsolete `codex-cli` README content was removed to avoid stale setup guidance ([#17096](https://github.com/openai/codex/pull/17096)).\n\n- `codex exec --help` now shows clearer usage and approval-mode wording ([#16881](https://github.com/openai/codex/pull/16881), [#16888](https://github.com/openai/codex/pull/16888)).\n\n## Chores\n\n- `codex-core` was slimmed down through major crate extractions for MCP, tools, config, model management, auth, feedback, protocol, and related ownership boundaries ([#15919](https://github.com/openai/codex/pull/15919), [#16379](https://github.com/openai/codex/pull/16379), [#16508](https://github.com/openai/codex/pull/16508), [#16523](https://github.com/openai/codex/pull/16523), [#16962](https://github.com/openai/codex/pull/16962)).\n\n- Rust CI and workspace guardrails were simplified by blocking new crate features and dropping routine `--all-features` runs ([#16455](https://github.com/openai/codex/pull/16455), [#16473](https://github.com/openai/codex/pull/16473)).\n\n- Core compile times were reduced by removing expensive async-trait expansion from hot tool/task abstractions ([#16630](https://github.com/openai/codex/pull/16630), [#16631](https://github.com/openai/codex/pull/16631)).\n\n- Bazel diagnostics and dependency wiring improved with compact execution logs, repository-cache persistence, remote downloader support, and several platform-specific build fixes ([#16577](https://github.com/openai/codex/pull/16577), [#16926](https://github.com/openai/codex/pull/16926), [#16928](https://github.com/openai/codex/pull/16928), [#16634](https://github.com/openai/codex/pull/16634), [#16744](https://github.com/openai/codex/pull/16744)).\n\n## Changelog\n\nFull Changelog: [rust-v0.118.0...rust-v0.119.0](https://github.com/openai/codex/compare/rust-v0.118.0...rust-v0.119.0)\n\n- [#16308](https://github.com/openai/codex/pull/16308) fix: one shot end of turn [@jif-oai](https://github.com/jif-oai)\n\n- [#16238](https://github.com/openai/codex/pull/16238) fix: ma2 [@jif-oai](https://github.com/jif-oai)\n\n- [#16317](https://github.com/openai/codex/pull/16317) chore: clean wait v2 [@jif-oai](https://github.com/jif-oai)\n\n- [#16318](https://github.com/openai/codex/pull/16318) nit: update aborted line [@jif-oai](https://github.com/jif-oai)\n\n- [#15771](https://github.com/openai/codex/pull/15771) feat: fork pattern v2 [@jif-oai](https://github.com/jif-oai)\n\n- [#16322](https://github.com/openai/codex/pull/16322) fix: update fork boundaries computation [@jif-oai](https://github.com/jif-oai)\n\n- [#16325](https://github.com/openai/codex/pull/16325) feat: restrict spawn_agent v2 to messages [@jif-oai](https://github.com/jif-oai)\n\n- [#16324](https://github.com/openai/codex/pull/16324) chore: drop interrupt from send_message [@jif-oai](https://github.com/jif-oai)\n\n- [#16345](https://github.com/openai/codex/pull/16345) fix: fix clippy issue caught by cargo but not bazel [@bolinfest](https://github.com/bolinfest)\n\n- [#16184](https://github.com/openai/codex/pull/16184) Route TUI `/feedback` submission through the app server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16330](https://github.com/openai/codex/pull/16330) feat: log db better maintenance [@jif-oai](https://github.com/jif-oai)\n\n- [#15690](https://github.com/openai/codex/pull/15690) [codex-analytics] thread events [@rhan-oai](https://github.com/rhan-oai)\n\n- [#16363](https://github.com/openai/codex/pull/16363) Fix PR babysitter review comment monitoring [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16356](https://github.com/openai/codex/pull/16356) Refactor external auth to use a single trait [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16366](https://github.com/openai/codex/pull/16366) Fix Windows external bearer refresh test [@bolinfest](https://github.com/bolinfest)\n\n- [#16353](https://github.com/openai/codex/pull/16353) ci: verify codex-rs Cargo manifests inherit workspace settings [@bolinfest](https://github.com/bolinfest)\n\n- [#16361](https://github.com/openai/codex/pull/16361) Refactor chatwidget tests into topical modules [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16201](https://github.com/openai/codex/pull/16201) Fix stale /status rate limits in active TUI sessions [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16351](https://github.com/openai/codex/pull/16351) ci: sync Bazel clippy lints and fix uncovered violations [@bolinfest](https://github.com/bolinfest)\n\n- [#16378](https://github.com/openai/codex/pull/16378) fix: suppress status card expect_used warnings after [#16351](https://github.com/openai/codex/pull/16351) [@bolinfest](https://github.com/bolinfest)\n\n- [#16406](https://github.com/openai/codex/pull/16406) Use message string in v2 spawn_agent [@jif-oai](https://github.com/jif-oai)\n\n- [#16409](https://github.com/openai/codex/pull/16409) Use message string in v2 send_message [@jif-oai](https://github.com/jif-oai)\n\n- [#16419](https://github.com/openai/codex/pull/16419) Use message string in v2 assign_task [@jif-oai](https://github.com/jif-oai)\n\n- [#16424](https://github.com/openai/codex/pull/16424) feat: tasks can't be assigned to root agent [@jif-oai](https://github.com/jif-oai)\n\n- [#16425](https://github.com/openai/codex/pull/16425) nit: update wait v2 desc [@jif-oai](https://github.com/jif-oai)\n\n- [#16426](https://github.com/openai/codex/pull/16426) chore: interrupted as state [@jif-oai](https://github.com/jif-oai)\n\n- [#16427](https://github.com/openai/codex/pull/16427) nit: deny field v2 [@jif-oai](https://github.com/jif-oai)\n\n- [#16433](https://github.com/openai/codex/pull/16433) chore: drop log DB [@jif-oai](https://github.com/jif-oai)\n\n- [#16434](https://github.com/openai/codex/pull/16434) feat: auto vaccum state DB [@jif-oai](https://github.com/jif-oai)\n\n- [#16422](https://github.com/openai/codex/pull/16422) fix(core) rm execute_exec_request sandbox_policy [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#16375](https://github.com/openai/codex/pull/16375) docs: update argument_comment_lint instructions in AGENTS.md [@bolinfest](https://github.com/bolinfest)\n\n- [#16449](https://github.com/openai/codex/pull/16449) fix: remove unused import [@bolinfest](https://github.com/bolinfest)\n\n- [#15772](https://github.com/openai/codex/pull/15772) Make fuzzy file search case insensitive [@meyers-oai](https://github.com/meyers-oai)\n\n- [#16455](https://github.com/openai/codex/pull/16455) ci: block new workspace crate features [@bolinfest](https://github.com/bolinfest)\n\n- [#16456](https://github.com/openai/codex/pull/16456) cloud-tasks: split the mock client out of cloud-tasks-client [@bolinfest](https://github.com/bolinfest)\n\n- [#16457](https://github.com/openai/codex/pull/16457) tui: remove debug/test-only crate features [@bolinfest](https://github.com/bolinfest)\n\n- [#16467](https://github.com/openai/codex/pull/16467) tui: remove the voice-input crate feature [@bolinfest](https://github.com/bolinfest)\n\n- [#16379](https://github.com/openai/codex/pull/16379) Extract tool config into codex-tools [@bolinfest](https://github.com/bolinfest)\n\n- [#16469](https://github.com/openai/codex/pull/16469) otel: remove the last workspace crate feature [@bolinfest](https://github.com/bolinfest)\n\n- [#16471](https://github.com/openai/codex/pull/16471) Extract tool spec helpers into codex-tools [@bolinfest](https://github.com/bolinfest)\n\n- [#16473](https://github.com/openai/codex/pull/16473) ci: stop running rust CI with --all-features [@bolinfest](https://github.com/bolinfest)\n\n- [#16477](https://github.com/openai/codex/pull/16477) Extract tool discovery helpers into codex-tools [@bolinfest](https://github.com/bolinfest)\n\n- [#16480](https://github.com/openai/codex/pull/16480) login: treat provider auth refresh_interval_ms=0 as no auto-refresh [@bolinfest](https://github.com/bolinfest)\n\n- [#16448](https://github.com/openai/codex/pull/16448) fix(guardian): make GuardianAssessmentEvent.action strongly typed [@owenlin0](https://github.com/owenlin0)\n\n- [#16481](https://github.com/openai/codex/pull/16481) Extract update_plan tool spec into codex-tools [@bolinfest](https://github.com/bolinfest)\n\n- [#15919](https://github.com/openai/codex/pull/15919) Extract MCP into codex-mcp crate [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#16482](https://github.com/openai/codex/pull/16482) Remove client_common tool re-exports [@bolinfest](https://github.com/bolinfest)\n\n- [#16495](https://github.com/openai/codex/pull/16495) fix: remove unused import [@bolinfest](https://github.com/bolinfest)\n\n- [#16493](https://github.com/openai/codex/pull/16493) Extract built-in tool spec constructors into codex-tools [@bolinfest](https://github.com/bolinfest)\n\n- [#16273](https://github.com/openai/codex/pull/16273) Fix regression: \"not available in TUI\" error message [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16497](https://github.com/openai/codex/pull/16497) Extract tool-search output helpers into codex-tools [@bolinfest](https://github.com/bolinfest)\n\n- [#16498](https://github.com/openai/codex/pull/16498) fix: guard guardian_command_source_tool_name with cfg(unix) [@bolinfest](https://github.com/bolinfest)\n\n- [#16499](https://github.com/openai/codex/pull/16499) Extract tool-suggest wire helpers into codex-tools [@bolinfest](https://github.com/bolinfest)\n\n- [#16284](https://github.com/openai/codex/pull/16284) Fix TUI app-server permission profile conversions [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16202](https://github.com/openai/codex/pull/16202) Fix paste-driven bottom pane completion teardown [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16504](https://github.com/openai/codex/pull/16504) core: use codex-tools config types directly [@bolinfest](https://github.com/bolinfest)\n\n- [#16503](https://github.com/openai/codex/pull/16503) Extract request_user_input normalization into codex-tools [@bolinfest](https://github.com/bolinfest)\n\n- [#16510](https://github.com/openai/codex/pull/16510) core: use codex-mcp APIs directly [@bolinfest](https://github.com/bolinfest)\n\n- [#16509](https://github.com/openai/codex/pull/16509) Extract code-mode nested tool collection into codex-tools [@bolinfest](https://github.com/bolinfest)\n\n- [#16512](https://github.com/openai/codex/pull/16512) core: remove cross-crate re-exports from lib.rs [@bolinfest](https://github.com/bolinfest)\n\n- [#16516](https://github.com/openai/codex/pull/16516) fix: add update to Cargo.lock that was missed in [#16512](https://github.com/openai/codex/pull/16512) [@bolinfest](https://github.com/bolinfest)\n\n- [#16513](https://github.com/openai/codex/pull/16513) Extract tool registry planning into codex-tools [@bolinfest](https://github.com/bolinfest)\n\n- [#16521](https://github.com/openai/codex/pull/16521) Move tool registry plan tests into codex-tools [@bolinfest](https://github.com/bolinfest)\n\n- [#16523](https://github.com/openai/codex/pull/16523) [codex] Move config types into codex-config [@bolinfest](https://github.com/bolinfest)\n\n- [#16524](https://github.com/openai/codex/pull/16524) fix: move some test utilities out of codex-rs/core/src/tools/spec.rs [@bolinfest](https://github.com/bolinfest)\n\n- [#16529](https://github.com/openai/codex/pull/16529) [codex] Remove codex-core config type shim [@bolinfest](https://github.com/bolinfest)\n\n- [#16559](https://github.com/openai/codex/pull/16559) chore: memories mini model [@jif-oai](https://github.com/jif-oai)\n\n- [#16561](https://github.com/openai/codex/pull/16561) fix: race pending [@jif-oai](https://github.com/jif-oai)\n\n- [#16564](https://github.com/openai/codex/pull/16564) nit: lint [@jif-oai](https://github.com/jif-oai)\n\n- [#16566](https://github.com/openai/codex/pull/16566) fix: races in end of turn [@jif-oai](https://github.com/jif-oai)\n\n- [#16567](https://github.com/openai/codex/pull/16567) chore: rework state machine further [@jif-oai](https://github.com/jif-oai)\n\n- [#16569](https://github.com/openai/codex/pull/16569) nit: state machine desc [@jif-oai](https://github.com/jif-oai)\n\n- [#16571](https://github.com/openai/codex/pull/16571) chore: rename assign_task for followup_task [@jif-oai](https://github.com/jif-oai)\n\n- [#16577](https://github.com/openai/codex/pull/16577) ci: upload compact Bazel execution logs for bazel.yml [@bolinfest](https://github.com/bolinfest)\n\n- [#16581](https://github.com/openai/codex/pull/16581) chore: move codex-exec unit tests into sibling files [@bolinfest](https://github.com/bolinfest)\n\n- [#16590](https://github.com/openai/codex/pull/16590) Fix non-determinism in rules_rs/crate_git_repository.bzl [@tyler-french](https://github.com/tyler-french)\n\n- [#16604](https://github.com/openai/codex/pull/16604) test: deflake external bearer auth token tests on Windows [@bolinfest](https://github.com/bolinfest)\n\n- [#16606](https://github.com/openai/codex/pull/16606) fix: add more detail to test assertion [@bolinfest](https://github.com/bolinfest)\n\n- [#16608](https://github.com/openai/codex/pull/16608) fix: increase timeout to account for slow PowerShell startup [@bolinfest](https://github.com/bolinfest)\n\n- [#16591](https://github.com/openai/codex/pull/16591) Fix resume picker initial loading state [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16613](https://github.com/openai/codex/pull/16613) fix: increase another startup timeout for PowerShell [@bolinfest](https://github.com/bolinfest)\n\n- [#16601](https://github.com/openai/codex/pull/16601) Fix resume picker stale thread names [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16616](https://github.com/openai/codex/pull/16616) Fixed some existing labels and added a few new ones [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16588](https://github.com/openai/codex/pull/16588) Fix stale turn steering during TUI review follow-ups [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16617](https://github.com/openai/codex/pull/16617) fix: add shell fallback paths for pwsh/powershell that work on GitHub Actions Windows runners [@bolinfest](https://github.com/bolinfest)\n\n- [#16596](https://github.com/openai/codex/pull/16596) Fix fork source display in /status (expose forked_from_id in app server) [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16578](https://github.com/openai/codex/pull/16578) fix(tui): handle zellij redraw and composer rendering [@fcoury-oai](https://github.com/fcoury-oai)\n\n- [#16630](https://github.com/openai/codex/pull/16630) core: cut codex-core compile time 63% with native async ToolHandler [@bolinfest](https://github.com/bolinfest)\n\n- [#16631](https://github.com/openai/codex/pull/16631) core: cut codex-core compile time 48% with native async SessionTask [@bolinfest](https://github.com/bolinfest)\n\n- [#16492](https://github.com/openai/codex/pull/16492) Auto-trust cwd on thread start [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#16633](https://github.com/openai/codex/pull/16633) fix: address unused variable on windows [@bolinfest](https://github.com/bolinfest)\n\n- [#16635](https://github.com/openai/codex/pull/16635) app-server: make thread/shellCommand tests shell-aware [@bolinfest](https://github.com/bolinfest)\n\n- [#16629](https://github.com/openai/codex/pull/16629) test: use cmd.exe for ProviderAuthScript on Windows [@bolinfest](https://github.com/bolinfest)\n\n- [#16634](https://github.com/openai/codex/pull/16634) build: fix Bazel lzma-sys wiring [@starr-openai](https://github.com/starr-openai)\n\n- [#16658](https://github.com/openai/codex/pull/16658) Fix deprecated login --api-key parsing [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16508](https://github.com/openai/codex/pull/16508) extract models manager and related ownership from core [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#16662](https://github.com/openai/codex/pull/16662) fix: changes to test that should help them pass on Windows under Bazel [@bolinfest](https://github.com/bolinfest)\n\n- [#16665](https://github.com/openai/codex/pull/16665) fix: use COMSPEC in Windows unicode shell test [@bolinfest](https://github.com/bolinfest)\n\n- [#16668](https://github.com/openai/codex/pull/16668) fix: use cmd.exe in Windows unicode shell test [@bolinfest](https://github.com/bolinfest)\n\n- [#16626](https://github.com/openai/codex/pull/16626) remove temporary ownership re-exports [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#16648](https://github.com/openai/codex/pull/16648) Fix stale /copy output after commentary-only turns [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16674](https://github.com/openai/codex/pull/16674) Fix MCP tool listing for hyphenated server names [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16667](https://github.com/openai/codex/pull/16667) Suppress bwrap warning when sandboxing is bypassed [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16670](https://github.com/openai/codex/pull/16670) Fix macOS sandbox panic in Codex HTTP client [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16699](https://github.com/openai/codex/pull/16699) Fix macOS malloc diagnostics leaking into TUI composer [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16700](https://github.com/openai/codex/pull/16700) Add remote --cd forwarding for app-server sessions [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16707](https://github.com/openai/codex/pull/16707) fix: preserve platform-specific core shell env vars [@bolinfest](https://github.com/bolinfest)\n\n- [#16715](https://github.com/openai/codex/pull/16715) fix: address clippy violations that sneaked in [@bolinfest](https://github.com/bolinfest)\n\n- [#16722](https://github.com/openai/codex/pull/16722) fix windows-only clippy lint violation [@bolinfest](https://github.com/bolinfest)\n\n- [#16710](https://github.com/openai/codex/pull/16710) fix(tui): sort skill mentions by display name first [@fcoury-oai](https://github.com/fcoury-oai)\n\n- [#16709](https://github.com/openai/codex/pull/16709) Sanitize forked child history [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#16711](https://github.com/openai/codex/pull/16711) Fix Windows Bazel app-server trust tests [@bolinfest](https://github.com/bolinfest)\n\n- [#16720](https://github.com/openai/codex/pull/16720) Remove OPENAI_BASE_URL config fallback [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16528](https://github.com/openai/codex/pull/16528) Codex/windows bazel rust test coverage no rs [@bolinfest](https://github.com/bolinfest)\n\n- [#16450](https://github.com/openai/codex/pull/16450) bazel: lint rust_test targets in clippy workflow [@bolinfest](https://github.com/bolinfest)\n\n- [#16735](https://github.com/openai/codex/pull/16735) [codex] allow disabling prompt instruction blocks [@tibo-openai](https://github.com/tibo-openai)\n\n- [#16745](https://github.com/openai/codex/pull/16745) [codex] allow disabling environment context injection [@tibo-openai](https://github.com/tibo-openai)\n\n- [#16725](https://github.com/openai/codex/pull/16725) Preempt mailbox mail after reasoning/commentary items [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#16755](https://github.com/openai/codex/pull/16755) Use Node 24 for npm publish [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#16753](https://github.com/openai/codex/pull/16753) [codex] add responses proxy JSON dumps [@tibo-openai](https://github.com/tibo-openai)\n\n- [#16746](https://github.com/openai/codex/pull/16746) Add spawn context for MultiAgentV2 children [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#16757](https://github.com/openai/codex/pull/16757) Back out \"bazel: lint rust_test targets in clippy workflow ([#16450](https://github.com/openai/codex/pull/16450))\" [@bolinfest](https://github.com/bolinfest)\n\n- [#16737](https://github.com/openai/codex/pull/16737) test: avoid PowerShell startup in Windows auth fixture [@bolinfest](https://github.com/bolinfest)\n\n- [#16740](https://github.com/openai/codex/pull/16740) ci: align Bazel repo cache and Windows clippy target handling [@bolinfest](https://github.com/bolinfest)\n\n- [#16758](https://github.com/openai/codex/pull/16758) [codex] add context-window lineage headers [@tibo-openai](https://github.com/tibo-openai)\n\n- [#16763](https://github.com/openai/codex/pull/16763) Add CODEX_SKIP_VENDORED_BWRAP [@andmis](https://github.com/andmis)\n\n- [#15915](https://github.com/openai/codex/pull/15915) [codex-analytics] subagent analytics [@rhan-oai](https://github.com/rhan-oai)\n\n- [#16823](https://github.com/openai/codex/pull/16823) Fix flaky test relating to metadata remote URL [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16825](https://github.com/openai/codex/pull/16825) Fix flaky permissions escalation test on Windows [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16881](https://github.com/openai/codex/pull/16881) Fix misleading codex exec help usage [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16888](https://github.com/openai/codex/pull/16888) Clarify `codex exec` approval help [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16876](https://github.com/openai/codex/pull/16876) [codex] add response proxy subagent header test [@tibo-openai](https://github.com/tibo-openai)\n\n- [#16829](https://github.com/openai/codex/pull/16829) Fix CJK word navigation in the TUI composer [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16833](https://github.com/openai/codex/pull/16833) Fix TUI fast mode toggle regression [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16795](https://github.com/openai/codex/pull/16795) [regression] Fix ephemeral turn backfill in exec [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16822](https://github.com/openai/codex/pull/16822) Fix resume picker timestamp labels and stability [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16813](https://github.com/openai/codex/pull/16813) Annotate skill doc reads with skill names [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16810](https://github.com/openai/codex/pull/16810) (tui): Decode percent-escaped bare local file links [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16877](https://github.com/openai/codex/pull/16877) [codex-backend] Make thread metadata updates tolerate pending backfill [@joeytrasatti-openai](https://github.com/joeytrasatti-openai)\n\n- [#16701](https://github.com/openai/codex/pull/16701) feat(requirements): support allowed_approval_reviewers [@owenlin0](https://github.com/owenlin0)\n\n- [#16925](https://github.com/openai/codex/pull/16925) fix(bazel): fix simdutf [@owenlin0](https://github.com/owenlin0)\n\n- [#16926](https://github.com/openai/codex/pull/16926) bazel: Always save bazel repository cache [@euroelessar](https://github.com/euroelessar)\n\n- [#16928](https://github.com/openai/codex/pull/16928) bazel: Enable `--experimental_remote_downloader` [@euroelessar](https://github.com/euroelessar)\n\n- [#16462](https://github.com/openai/codex/pull/16462) fix(guardian): fix ordering of guardian events [@owenlin0](https://github.com/owenlin0)\n\n- [#16924](https://github.com/openai/codex/pull/16924) fix(sqlite): don't hard fail migrator if DB is newer [@owenlin0](https://github.com/owenlin0)\n\n- [#16744](https://github.com/openai/codex/pull/16744) build: restore lzma-sys Bazel wiring for devbox codex run [@starr-openai](https://github.com/starr-openai)\n\n- [#16764](https://github.com/openai/codex/pull/16764) app-server: centralize AuthManager initialization [@euroelessar](https://github.com/euroelessar)\n\n- [#16939](https://github.com/openai/codex/pull/16939) Fix clippy warning [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#16923](https://github.com/openai/codex/pull/16923) Revert \"[codex-backend] Make thread metadata updates tolerate pending backfill\" [@joeytrasatti-openai](https://github.com/joeytrasatti-openai)\n\n- [#15951](https://github.com/openai/codex/pull/15951) app-server: Add egress websocket transport [@euroelessar](https://github.com/euroelessar)\n\n- [#16945](https://github.com/openai/codex/pull/16945) [codex] Allow PyTorch libomp shm in Seatbelt [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#16947](https://github.com/openai/codex/pull/16947) feat: fallback curated plugin download from backend endpint. [@xl-openai](https://github.com/xl-openai)\n\n- [#16191](https://github.com/openai/codex/pull/16191) feat: refresh non-curated cache from plugin list. [@xl-openai](https://github.com/xl-openai)\n\n- [#16952](https://github.com/openai/codex/pull/16952) Respect residency requirements in mcp-server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16827](https://github.com/openai/codex/pull/16827) tui: route device-code auth through app server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16638](https://github.com/openai/codex/pull/16638) [codex-analytics] add protocol-native turn timestamps [@rhan-oai](https://github.com/rhan-oai)\n\n- [#16831](https://github.com/openai/codex/pull/16831) Speed up /mcp inventory listing [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16349](https://github.com/openai/codex/pull/16349) Disable env-bound tools when exec server is none [@starr-openai](https://github.com/starr-openai)\n\n- [#16957](https://github.com/openai/codex/pull/16957) Promote image_detail_original to experimental [@fjord-oai](https://github.com/fjord-oai)\n\n- [#16962](https://github.com/openai/codex/pull/16962) Refactor config types into a separate crate [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#16153](https://github.com/openai/codex/pull/16153) Add setTimeout support to code mode [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#16961](https://github.com/openai/codex/pull/16961) app-server: Unify config changes handling a bit [@euroelessar](https://github.com/euroelessar)\n\n- [#16890](https://github.com/openai/codex/pull/16890) Validate exec input before starting app-server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16082](https://github.com/openai/codex/pull/16082) [mcp] Support MCP Apps part 1. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#15893](https://github.com/openai/codex/pull/15893) fix: warn when bwrap cannot create user namespaces [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#16946](https://github.com/openai/codex/pull/16946) [codex] Add danger-full-access denylist-only network mode [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#16972](https://github.com/openai/codex/pull/16972) app-server: Fix compilation of a test in mcp_resource [@euroelessar](https://github.com/euroelessar)\n\n- [#15826](https://github.com/openai/codex/pull/15826) Make AGENTS.md discovery FS-aware [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#16964](https://github.com/openai/codex/pull/16964) Honor null thread instructions [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#16988](https://github.com/openai/codex/pull/16988) collapse dev message into one [@won-openai](https://github.com/won-openai)\n\n- [#16724](https://github.com/openai/codex/pull/16724) [codex] ez - rename env=>request in codex-rs/core/src/unified_exec/process_manager.rs [@starr-openai](https://github.com/starr-openai)\n\n- [#16999](https://github.com/openai/codex/pull/16999) feat: empty role ok [@jif-oai](https://github.com/jif-oai)\n\n- [#17002](https://github.com/openai/codex/pull/17002) chore: debug flag to hide some parameters [@jif-oai](https://github.com/jif-oai)\n\n- [#17005](https://github.com/openai/codex/pull/17005) feat: drop agent ID from v2 [@jif-oai](https://github.com/jif-oai)\n\n- [#17008](https://github.com/openai/codex/pull/17008) chore: send_message and followup_task do not return anything [@jif-oai](https://github.com/jif-oai)\n\n- [#17007](https://github.com/openai/codex/pull/17007) chore: hide nickname for debug flag [@jif-oai](https://github.com/jif-oai)\n\n- [#16442](https://github.com/openai/codex/pull/16442) feat: /feedback cascade [@jif-oai](https://github.com/jif-oai)\n\n- [#16978](https://github.com/openai/codex/pull/16978) [codex] reduce module visibility [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17009](https://github.com/openai/codex/pull/17009) chore: keep request_user_input tool to persist cache on multi-agents [@jif-oai](https://github.com/jif-oai)\n\n- [#16739](https://github.com/openai/codex/pull/16739) Stabilize flaky multi-agent followup interrupt test [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16885](https://github.com/openai/codex/pull/16885) Fix read-only apply_patch rejection message [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16882](https://github.com/openai/codex/pull/16882) Fix nested exec thread ID restore [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16976](https://github.com/openai/codex/pull/16976) Preserve null developer instructions [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#16987](https://github.com/openai/codex/pull/16987) Fix missing resume hint on zero-token exits [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16912](https://github.com/openai/codex/pull/16912) feat(analytics): generate an installation_id and pass it in responsesapi client_metadata [@owenlin0](https://github.com/owenlin0)\n\n- [#16956](https://github.com/openai/codex/pull/16956) fix(guardian): don't throw away transcript when over budget [@owenlin0](https://github.com/owenlin0)\n\n- [#16981](https://github.com/openai/codex/pull/16981) [codex] Make AbsolutePathBuf joins infallible [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#16348](https://github.com/openai/codex/pull/16348) Update README [@romainhuet](https://github.com/romainhuet)\n\n- [#16977](https://github.com/openai/codex/pull/16977) [codex] Make unified exec tests remote aware [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#16465](https://github.com/openai/codex/pull/16465) [mcp] Support MCP Apps part 2 - Add meta to mcp tool call result. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#17026](https://github.com/openai/codex/pull/17026) app-server: Move watch_id to request of fs/watch [@euroelessar](https://github.com/euroelessar)\n\n- [#16980](https://github.com/openai/codex/pull/16980) Add full-ci branch trigger [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#16973](https://github.com/openai/codex/pull/16973) app-server: Allow enabling remote control in runtime [@euroelessar](https://github.com/euroelessar)\n\n- [#17032](https://github.com/openai/codex/pull/17032) [codex] Fix unified exec test build [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17031](https://github.com/openai/codex/pull/17031) fix(core) revert Command line in unified exec output [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#17027](https://github.com/openai/codex/pull/17027) [codex] Migrate apply_patch to executor filesystem [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17044](https://github.com/openai/codex/pull/17044) [app-server-protocol] introduce generic ServerResponse for app-server-protocol [@rhan-oai](https://github.com/rhan-oai)\n\n- [#17047](https://github.com/openai/codex/pull/17047) fix(app-server) revert null instructions changes [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#16960](https://github.com/openai/codex/pull/16960) Add WebRTC transport to realtime start [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17053](https://github.com/openai/codex/pull/17053) Fix remote address format to work with Windows Firewall rules. [@iceweasel-oai](https://github.com/iceweasel-oai)\n\n- [#17048](https://github.com/openai/codex/pull/17048) [codex] Apply patches through executor filesystem [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#16949](https://github.com/openai/codex/pull/16949) Use model metadata for Fast Mode status [@pash-openai](https://github.com/pash-openai)\n\n- [#17039](https://github.com/openai/codex/pull/17039) fix(tui): reduce startup and new-session latency [@fcoury-oai](https://github.com/fcoury-oai)\n\n- [#17052](https://github.com/openai/codex/pull/17052) Add regression tests for JsonSchema [@vivi](https://github.com/vivi)\n\n- [#17059](https://github.com/openai/codex/pull/17059) Add remote exec start script [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17064](https://github.com/openai/codex/pull/17064) Add project-local codex bug triage skill [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17040](https://github.com/openai/codex/pull/17040) fix: refresh network proxy settings when sandbox mode changes [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#16698](https://github.com/openai/codex/pull/16698) Remove expired April 2nd tooltip copy [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17096](https://github.com/openai/codex/pull/17096) Remove obsolete codex-cli README [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16875](https://github.com/openai/codex/pull/16875) Support anyOf and enum in JsonSchema [@vivi](https://github.com/vivi)\n\n- [#16880](https://github.com/openai/codex/pull/16880) Render function attribute descriptions [@vivi](https://github.com/vivi)\n\n- [#16879](https://github.com/openai/codex/pull/16879) Render namespace description for tools [@vivi](https://github.com/vivi)\n\n- [#16582](https://github.com/openai/codex/pull/16582) feat: single app-server bootstrap in TUI [@jif-oai](https://github.com/jif-oai)\n\n- [#17117](https://github.com/openai/codex/pull/17117) codex debug 1 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17119](https://github.com/openai/codex/pull/17119) codex debug 3 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17121](https://github.com/openai/codex/pull/17121) codex debug 5 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17123](https://github.com/openai/codex/pull/17123) codex debug 7 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17125](https://github.com/openai/codex/pull/17125) codex debug 9 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17127](https://github.com/openai/codex/pull/17127) codex debug 11 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17129](https://github.com/openai/codex/pull/17129) codex debug 13 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17131](https://github.com/openai/codex/pull/17131) codex debug 15 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17118](https://github.com/openai/codex/pull/17118) codex debug 2 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17120](https://github.com/openai/codex/pull/17120) codex debug 4 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17122](https://github.com/openai/codex/pull/17122) codex debug 6 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17124](https://github.com/openai/codex/pull/17124) codex debug 8 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17126](https://github.com/openai/codex/pull/17126) codex debug 10 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17128](https://github.com/openai/codex/pull/17128) codex debug 12 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17130](https://github.com/openai/codex/pull/17130) codex debug 14 (guardian approved) [@jif-oai](https://github.com/jif-oai)\n\n- [#17071](https://github.com/openai/codex/pull/17071) Configure multi_agent_v2 spawn agent hints [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17091](https://github.com/openai/codex/pull/17091) Show global AGENTS.md in /status [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17086](https://github.com/openai/codex/pull/17086) Fix TUI crash when resuming the current thread [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17098](https://github.com/openai/codex/pull/17098) Skip MCP auth probing for disabled servers [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17097](https://github.com/openai/codex/pull/17097) Add realtime transport config [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17043](https://github.com/openai/codex/pull/17043) [mcp] Support server-driven elicitations [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#17058](https://github.com/openai/codex/pull/17058) Add WebRTC media transport to realtime TUI [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17063](https://github.com/openai/codex/pull/17063) Use AbsolutePathBuf for exec cwd plumbing [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17138](https://github.com/openai/codex/pull/17138) fix(debug-config, guardian): fix /debug-config rendering and guardian… [@owenlin0](https://github.com/owenlin0)\n\n- [#17046](https://github.com/openai/codex/pull/17046) release ready, enabling only for siwc users [@won-openai](https://github.com/won-openai)\n\n- [#16751](https://github.com/openai/codex/pull/16751) Add sandbox support to filesystem APIs [@starr-openai](https://github.com/starr-openai)\n\n- [#17142](https://github.com/openai/codex/pull/17142) [codex] Support remote exec cwd in TUI startup [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#17149](https://github.com/openai/codex/pull/17149) Fix missing fields [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#17154](https://github.com/openai/codex/pull/17154) Fix ToolsConfigParams initializer in tool registry test [@won-openai](https://github.com/won-openai)\n\n- [#17145](https://github.com/openai/codex/pull/17145) Wire realtime WebRTC native media into Bazel [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17057](https://github.com/openai/codex/pull/17057) Attach WebRTC realtime starts to sideband websocket [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17162](https://github.com/openai/codex/pull/17162) Add top-level exec-server subcommand [@starr-openai](https://github.com/starr-openai)\n\n- [#17061](https://github.com/openai/codex/pull/17061) Update guardian output schema [@maja-openai](https://github.com/maja-openai)\n\n- [#17164](https://github.com/openai/codex/pull/17164) Auto-approve MCP server elicitations in Full Access mode [@leoshimo-oai](https://github.com/leoshimo-oai)\n\n- [#17093](https://github.com/openai/codex/pull/17093) Add WebRTC realtime app-server e2e tests [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17174](https://github.com/openai/codex/pull/17174) Support Warp for OSC 9 notifications [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16646](https://github.com/openai/codex/pull/16646) Fix stale thread-name resume lookups [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17165](https://github.com/openai/codex/pull/17165) Move default realtime prompt into core [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17176](https://github.com/openai/codex/pull/17176) Add realtime voice selection [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17175](https://github.com/openai/codex/pull/17175) Add TUI notification condition config [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17183](https://github.com/openai/codex/pull/17183) Default realtime startup to v2 model [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17186](https://github.com/openai/codex/pull/17186) Skip update prompts for source builds [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17188](https://github.com/openai/codex/pull/17188) make webrtc the default experience [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#17163](https://github.com/openai/codex/pull/17163) [codex] Defer steering until after sampling the model post-compaction [@jgershen-oai](https://github.com/jgershen-oai)\n\n- [#17222](https://github.com/openai/codex/pull/17222) feat: /resume per ID/name [@jif-oai](https://github.com/jif-oai)\n\n- [#17226](https://github.com/openai/codex/pull/17226) feat: advanced announcements per OS and plans [@jif-oai](https://github.com/jif-oai)\n\n- [#17170](https://github.com/openai/codex/pull/17170) Render statusline context as a meter [@etraut-openai](https://github.com/etraut-openai)\n\n- [#17217](https://github.com/openai/codex/pull/17217) Skip local shell snapshots for remote unified exec [@jif-oai](https://github.com/jif-oai)\n\n- [#17116](https://github.com/openai/codex/pull/17116) chore: merge name and title [@jif-oai](https://github.com/jif-oai)\n\n- [#16276](https://github.com/openai/codex/pull/16276) [codex] add memory extensions [@kliu128](https://github.com/kliu128)\n\n- [#17168](https://github.com/openai/codex/pull/17168) refactor(proxy): clarify sandbox block messages [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#17076](https://github.com/openai/codex/pull/17076) [codex] Show ctrl + t hint on truncated exec output in TUI [@mom-oai](https://github.com/mom-oai)\n\n- [#15197](https://github.com/openai/codex/pull/15197) Add Codex Apps sediment file remapping [@caseychow-oai](https://github.com/caseychow-oai)\n\n- [#16009](https://github.com/openai/codex/pull/16009) Forward app-server turn clientMetadata to Responses [@neil-oai](https://github.com/neil-oai)\n\n- [#17256](https://github.com/openai/codex/pull/17256) app-server: Use shared receivers for app-server message processors [@euroelessar](https://github.com/euroelessar)\n\n- [#16944](https://github.com/openai/codex/pull/16944) [mcp] Expand tool search to custom MCPs. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#16966](https://github.com/openai/codex/pull/16966) feat(tui): Ctrl+O copy hotkey and harden copy-as-markdown behavior [@fcoury-oai](https://github.com/fcoury-oai)\n\n- [#17262](https://github.com/openai/codex/pull/17262) app-server: Fix clippy by removing extra `mut` [@euroelessar](https://github.com/euroelessar)\n\n- [#17258](https://github.com/openai/codex/pull/17258) Omit empty app-server instruction overrides [@aibrahim-oai](https://github.com/aibrahim-oai)","publishedAt":"2026-04-10T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#github-release-307754801","media":[]},{"id":"rel_dNr-qa9EUjXVOx-Q_THNC","version":null,"title":"Codex model availability update","summary":"# Codex model availability update\n\nWe're updating model availability for users who sign in with ChatGPT. Starting\nApril 7, the model picker no longer ...","content":"# Codex model availability update\n\nWe're updating model availability for users who sign in with ChatGPT. Starting\nApril 7, the model picker no longer shows `gpt-5.2-codex`,\n`gpt-5.1-codex-mini`, `gpt-5.1-codex-max`, `gpt-5.1-codex`, `gpt-5.1`, or\n`gpt-5`. On April 14, we'll remove those models from Codex for ChatGPT sign-in.\n\nUsers can still choose from `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.3-codex`, and\n`gpt-5.2`. ChatGPT Pro users can also choose `gpt-5.3-codex-spark`.\n\nTo use another API-supported model in Codex, sign in with an API key or\nconfigure a model provider.","publishedAt":"2026-04-07T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#codex-2026-04-07","media":[]},{"id":"rel_RI7wh5GUB8zZJz74VGZqI","version":"0.118.0","title":"Codex CLI Release: 0.118.0","summary":"## New Features\n\n- Windows sandbox runs can now enforce proxy-only networking with OS-level egress rules, instead of relying on environment variables ...","content":"## New Features\n\n- Windows sandbox runs can now enforce proxy-only networking with OS-level egress rules, instead of relying on environment variables alone. ([#12220](https://github.com/openai/codex/pull/12220))\n\n- App-server clients can now start ChatGPT sign-in with a device code flow, which helps when browser callback login is unreliable or unavailable. ([#15525](https://github.com/openai/codex/pull/15525))\n\n- `codex exec` now supports the prompt-plus-stdin workflow, so you can pipe input and still pass a separate prompt on the command line. ([#15917](https://github.com/openai/codex/pull/15917))\n\n- Custom model providers can now fetch and refresh short-lived bearer tokens dynamically, instead of being limited to static credentials from config or environment variables. ([#16286](https://github.com/openai/codex/pull/16286), [#16287](https://github.com/openai/codex/pull/16287), [#16288](https://github.com/openai/codex/pull/16288))\n\n## Bug Fixes\n\n- Project-local `.codex` files are now protected even on first creation, closing a gap where the initial write could bypass normal approval checks. ([#15067](https://github.com/openai/codex/pull/15067))\n\n- Linux sandbox launches are more reliable because Codex once again finds a trusted system `bwrap` on normal multi-entry `PATH`s. ([#15791](https://github.com/openai/codex/pull/15791), [#15973](https://github.com/openai/codex/pull/15973))\n\n- The app-server-backed TUI regained several missing workflows: hook notifications replay correctly, `/copy` and `/resume ` work again, `/agent` no longer shows stale threads, and the skills picker scrolls past the first page. ([#16013](https://github.com/openai/codex/pull/16013), [#16021](https://github.com/openai/codex/pull/16021), [#16050](https://github.com/openai/codex/pull/16050), [#16014](https://github.com/openai/codex/pull/16014), [#16109](https://github.com/openai/codex/pull/16109), [#16110](https://github.com/openai/codex/pull/16110))\n\n- MCP startup is more robust: local servers get a longer startup window, and failed handshakes surface warnings in the TUI again instead of looking like clean startups. ([#16080](https://github.com/openai/codex/pull/16080), [#16041](https://github.com/openai/codex/pull/16041))\n\n- On Windows, `apply_patch` is less likely to fail because it no longer adds redundant writable roots that could trigger unnecessary ACL churn. ([#16030](https://github.com/openai/codex/pull/16030))\n\n## Changelog\n\nFull Changelog: [rust-v0.117.0...rust-v0.118.0](https://github.com/openai/codex/compare/rust-v0.117.0...rust-v0.118.0)\n\n- [#15891](https://github.com/openai/codex/pull/15891) [plugins] Polish tool suggest prompts. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#15791](https://github.com/openai/codex/pull/15791) fix: resolve bwrap from trusted PATH entry [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#15900](https://github.com/openai/codex/pull/15900) skills: remove unused skill permission metadata [@bolinfest](https://github.com/bolinfest)\n\n- [#15811](https://github.com/openai/codex/pull/15811) app-server: Split transport module [@euroelessar](https://github.com/euroelessar)\n\n- [#15067](https://github.com/openai/codex/pull/15067) Protect first-time project .codex creation across Linux and macOS sandboxes [@rreichel3-oai](https://github.com/rreichel3-oai)\n\n- [#15903](https://github.com/openai/codex/pull/15903) [codex] import token_data from codex-login directly [@bolinfest](https://github.com/bolinfest)\n\n- [#15897](https://github.com/openai/codex/pull/15897) sandboxing: use OsString for SandboxCommand.program [@bolinfest](https://github.com/bolinfest)\n\n- [#15910](https://github.com/openai/codex/pull/15910) docs: update AGENTS.md to discourage adding code to codex-core [@bolinfest](https://github.com/bolinfest)\n\n- [#15898](https://github.com/openai/codex/pull/15898) chore: move bwrap config helpers into dedicated module [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#15906](https://github.com/openai/codex/pull/15906) chore: remove skill metadata from command approval payloads [@bolinfest](https://github.com/bolinfest)\n\n- [#15909](https://github.com/openai/codex/pull/15909) fix(network-proxy): fail closed on network-proxy DNS lookup errors [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14495](https://github.com/openai/codex/pull/14495) Preserve bazel repository cache in github actions [@siggisim](https://github.com/siggisim)\n\n- [#15522](https://github.com/openai/codex/pull/15522) bazel: re-organize bazelrc [@sluongng](https://github.com/sluongng)\n\n- [#15923](https://github.com/openai/codex/pull/15923) codex-tools: extract shared tool schema parsing [@bolinfest](https://github.com/bolinfest)\n\n- [#15918](https://github.com/openai/codex/pull/15918) permissions: remove macOS seatbelt extension profiles [@bolinfest](https://github.com/bolinfest)\n\n- [#12220](https://github.com/openai/codex/pull/12220) feat(windows-sandbox): add network proxy support [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#15931](https://github.com/openai/codex/pull/15931) fix: make MACOS_DEFAULT_PREFERENCES_POLICY part of MACOS_SEATBELT_BASE_POLICY [@bolinfest](https://github.com/bolinfest)\n\n- [#15933](https://github.com/openai/codex/pull/15933) fix: use matrix.target instead of matrix.os for actions/cache build action [@bolinfest](https://github.com/bolinfest)\n\n- [#15928](https://github.com/openai/codex/pull/15928) codex-tools: extract MCP schema adapters [@bolinfest](https://github.com/bolinfest)\n\n- [#15948](https://github.com/openai/codex/pull/15948) fix: increase timeout for rust-ci to 45 minutes for now [@bolinfest](https://github.com/bolinfest)\n\n- [#15921](https://github.com/openai/codex/pull/15921) [app-server-protocol] introduce generic ClientResponse for app-server-protocol [@rhan-oai](https://github.com/rhan-oai)\n\n- [#15120](https://github.com/openai/codex/pull/15120) chore: refactor network permissions to use explicit domain and unix socket rule maps [@celia-oai](https://github.com/celia-oai)\n\n- [#15525](https://github.com/openai/codex/pull/15525) Add ChatGPT device-code login to app server [@daniel-oai](https://github.com/daniel-oai)\n\n- [#15876](https://github.com/openai/codex/pull/15876) chore: drop useless stuff [@jif-oai](https://github.com/jif-oai)\n\n- [#15954](https://github.com/openai/codex/pull/15954) chore: move pty and windows sandbox to Rust 2024 [@bolinfest](https://github.com/bolinfest)\n\n- [#15986](https://github.com/openai/codex/pull/15986) feat: spawn v2 make task name as mandatory [@jif-oai](https://github.com/jif-oai)\n\n- [#16000](https://github.com/openai/codex/pull/16000) Use codex-utils-template for login error page [@jif-oai](https://github.com/jif-oai)\n\n- [#16001](https://github.com/openai/codex/pull/16001) Use codex-utils-template for review prompts [@jif-oai](https://github.com/jif-oai)\n\n- [#15998](https://github.com/openai/codex/pull/15998) Use codex-utils-template for sandbox mode prompts [@jif-oai](https://github.com/jif-oai)\n\n- [#15995](https://github.com/openai/codex/pull/15995) Use codex-utils-template for collaboration mode presets [@jif-oai](https://github.com/jif-oai)\n\n- [#15996](https://github.com/openai/codex/pull/15996) Use codex-utils-template for search tool descriptions [@jif-oai](https://github.com/jif-oai)\n\n- [#15999](https://github.com/openai/codex/pull/15999) Use codex-utils-template for review exit XML [@jif-oai](https://github.com/jif-oai)\n\n- [#15985](https://github.com/openai/codex/pull/15985) feat: spawn v2 as inter agent communication [@jif-oai](https://github.com/jif-oai)\n\n- [#15973](https://github.com/openai/codex/pull/15973) fix(sandbox): fix bwrap lookup for multi-entry PATH [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#15944](https://github.com/openai/codex/pull/15944) codex-tools: extract dynamic tool adapters [@bolinfest](https://github.com/bolinfest)\n\n- [#15955](https://github.com/openai/codex/pull/15955) ci: add Bazel clippy workflow for codex-rs [@bolinfest](https://github.com/bolinfest)\n\n- [#15953](https://github.com/openai/codex/pull/15953) codex-tools: introduce named tool definitions [@bolinfest](https://github.com/bolinfest)\n\n- [#16027](https://github.com/openai/codex/pull/16027) fix: fix Windows CI regression introduced in [#15999](https://github.com/openai/codex/pull/15999) [@bolinfest](https://github.com/bolinfest)\n\n- [#16036](https://github.com/openai/codex/pull/16036) fix: disable plugins in SDK integration tests [@bolinfest](https://github.com/bolinfest)\n\n- [#15946](https://github.com/openai/codex/pull/15946) Normalize /mcp tool grouping for hyphenated server names [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#16035](https://github.com/openai/codex/pull/16035) plugins: Clean up stale curated plugin sync temp dirs and add sync metrics [@xl-openai](https://github.com/xl-openai)\n\n- [#15934](https://github.com/openai/codex/pull/15934) Add usage-based business plan types [@bwanner-oai](https://github.com/bwanner-oai)\n\n- [#16031](https://github.com/openai/codex/pull/16031) codex-tools: extract responses API tool models [@bolinfest](https://github.com/bolinfest)\n\n- [#16013](https://github.com/openai/codex/pull/16013) Fix tui_app_server hook notification rendering and replay [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16021](https://github.com/openai/codex/pull/16021) Fix /copy regression in tui_app_server turn completion [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16044](https://github.com/openai/codex/pull/16044) [mcp] Bypass read-only tool checks. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#16030](https://github.com/openai/codex/pull/16030) don't include redundant write roots in apply_patch [@iceweasel-oai](https://github.com/iceweasel-oai)\n\n- [#15922](https://github.com/openai/codex/pull/15922) Remove the legacy TUI split [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15828](https://github.com/openai/codex/pull/15828) [codex] Pin GitHub Actions workflow references [@hintz-openai](https://github.com/hintz-openai)\n\n- [#16046](https://github.com/openai/codex/pull/16046) ci: run SDK tests with a Bazel-built codex [@bolinfest](https://github.com/bolinfest)\n\n- [#16050](https://github.com/openai/codex/pull/16050) Fix tui_app_server resume-by-name lookup regression [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16014](https://github.com/openai/codex/pull/16014) Fix tui_app_server agent picker closed-state regression [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16054](https://github.com/openai/codex/pull/16054) chore: clean up argument-comment lint and roll out all-target CI on macOS [@bolinfest](https://github.com/bolinfest)\n\n- [#15917](https://github.com/openai/codex/pull/15917) Support Codex CLI stdin piping for `codex exec` [@jliccini](https://github.com/jliccini)\n\n- [#16057](https://github.com/openai/codex/pull/16057) shell-command: reuse a PowerShell parser process on Windows [@bolinfest](https://github.com/bolinfest)\n\n- [#16063](https://github.com/openai/codex/pull/16063) refactor: rewrite argument-comment lint wrappers in Python [@bolinfest](https://github.com/bolinfest)\n\n- [#15952](https://github.com/openai/codex/pull/15952) bazel: enable the full Windows gnullvm CI path [@bolinfest](https://github.com/bolinfest)\n\n- [#16067](https://github.com/openai/codex/pull/16067) ci: run Bazel clippy on Windows gnullvm [@bolinfest](https://github.com/bolinfest)\n\n- [#16071](https://github.com/openai/codex/pull/16071) fix: clean up remaining Windows argument-comment-lint violations [@bolinfest](https://github.com/bolinfest)\n\n- [#16072](https://github.com/openai/codex/pull/16072) ci: split fast PR Rust CI from full post-merge Cargo CI [@bolinfest](https://github.com/bolinfest)\n\n- [#16074](https://github.com/openai/codex/pull/16074) bazel: add Windows gnullvm stack flags to unit test binaries [@bolinfest](https://github.com/bolinfest)\n\n- [#16026](https://github.com/openai/codex/pull/16026) fix(tui): refresh footer on collaboration mode changes [@fcoury](https://github.com/fcoury)\n\n- [#16112](https://github.com/openai/codex/pull/16112) Update PR babysitter skill for review replies and resolution [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16104](https://github.com/openai/codex/pull/16104) Rename tui_app_server to tui [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16118](https://github.com/openai/codex/pull/16118) fix: fix comment linter lint violations in Linux-only code [@bolinfest](https://github.com/bolinfest)\n\n- [#16106](https://github.com/openai/codex/pull/16106) build: migrate argument-comment-lint to a native Bazel aspect [@bolinfest](https://github.com/bolinfest)\n\n- [#16115](https://github.com/openai/codex/pull/16115) Remove remaining custom prompt support [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16116](https://github.com/openai/codex/pull/16116) Remove the codex-tui app-server originator workaround [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16047](https://github.com/openai/codex/pull/16047) codex-tools: extract tool spec models [@bolinfest](https://github.com/bolinfest)\n\n- [#16128](https://github.com/openai/codex/pull/16128) bazel: refresh the expired macOS SDK pin [@bolinfest](https://github.com/bolinfest)\n\n- [#16129](https://github.com/openai/codex/pull/16129) codex-tools: extract configured tool specs [@bolinfest](https://github.com/bolinfest)\n\n- [#16130](https://github.com/openai/codex/pull/16130) ci: keep rust-ci-full Windows argument-comment-lint on packaged wrapper [@bolinfest](https://github.com/bolinfest)\n\n- [#16126](https://github.com/openai/codex/pull/16126) core: fix stale curated plugin cache refresh races [@bolinfest](https://github.com/bolinfest)\n\n- [#16132](https://github.com/openai/codex/pull/16132) codex-tools: extract code mode tool spec adapters [@bolinfest](https://github.com/bolinfest)\n\n- [#16136](https://github.com/openai/codex/pull/16136) ci: use BuildBuddy for rust-ci-full non-Windows argument-comment-lint [@bolinfest](https://github.com/bolinfest)\n\n- [#16137](https://github.com/openai/codex/pull/16137) exec: make review-policy tests hermetic [@bolinfest](https://github.com/bolinfest)\n\n- [#16109](https://github.com/openai/codex/pull/16109) Fix skills picker scrolling in tui app server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16138](https://github.com/openai/codex/pull/16138) codex-tools: extract local host tool specs [@bolinfest](https://github.com/bolinfest)\n\n- [#16114](https://github.com/openai/codex/pull/16114) Remove TUI voice transcription feature [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16080](https://github.com/openai/codex/pull/16080) [mcp] Increase MCP startup timeout. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#16141](https://github.com/openai/codex/pull/16141) codex-tools: extract collaboration tool specs [@bolinfest](https://github.com/bolinfest)\n\n- [#16041](https://github.com/openai/codex/pull/16041) Fix app-server TUI MCP startup warnings regression [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16110](https://github.com/openai/codex/pull/16110) Fix tui_app_server ghost subagent entries in /agent [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16154](https://github.com/openai/codex/pull/16154) codex-tools: extract utility tool specs [@bolinfest](https://github.com/bolinfest)\n\n- [#16204](https://github.com/openai/codex/pull/16204) [codex] Normalize Windows path in MCP startup snapshot test [@etraut-openai](https://github.com/etraut-openai)\n\n- [#16010](https://github.com/openai/codex/pull/16010) feat: add mailbox concept for wait [@jif-oai](https://github.com/jif-oai)\n\n- [#16237](https://github.com/openai/codex/pull/16237) fix: ma1 [@jif-oai](https://github.com/jif-oai)\n\n- [#16193](https://github.com/openai/codex/pull/16193) codex-tools: extract discovery tool specs [@bolinfest](https://github.com/bolinfest)\n\n- [#16254](https://github.com/openai/codex/pull/16254) codex-tools: extract discoverable tool models [@bolinfest](https://github.com/bolinfest)\n\n- [#16253](https://github.com/openai/codex/pull/16253) fix: close Bazel argument-comment-lint CI gaps [@bolinfest](https://github.com/bolinfest)\n\n- [#16225](https://github.com/openai/codex/pull/16225) [codex-analytics] refactor analytics to use reducer architecture [@rhan-oai](https://github.com/rhan-oai)\n\n- [#16279](https://github.com/openai/codex/pull/16279) Update code mode exec() instructions [@andmis](https://github.com/andmis)\n\n- [#16120](https://github.com/openai/codex/pull/16120) ci: run Windows argument-comment-lint via native Bazel [@bolinfest](https://github.com/bolinfest)\n\n- [#16286](https://github.com/openai/codex/pull/16286) auth: generalize external auth tokens for bearer-only sources [@bolinfest](https://github.com/bolinfest)\n\n- [#16287](https://github.com/openai/codex/pull/16287) auth: let AuthManager own external bearer auth [@bolinfest](https://github.com/bolinfest)\n\n- [#16288](https://github.com/openai/codex/pull/16288) core: support dynamic auth tokens for model providers [@bolinfest](https://github.com/bolinfest)","publishedAt":"2026-03-31T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#github-release-303805427","media":[]},{"id":"rel_G-Xfxrd2xryB4Joqm8cN9","version":"0.117.0","title":"Codex CLI Release: 0.117.0","summary":"## New Features\n\n- Plugins are now a first-class workflow: Codex can sync product-scoped plugins at startup, browse them in `/plugins`, and install or...","content":"## New Features\n\n- Plugins are now a first-class workflow: Codex can sync product-scoped plugins at startup, browse them in `/plugins`, and install or remove them with clearer auth/setup handling. ([#15041](https://github.com/openai/codex/pull/15041), [#15042](https://github.com/openai/codex/pull/15042), [#15195](https://github.com/openai/codex/pull/15195), [#15215](https://github.com/openai/codex/pull/15215), [#15217](https://github.com/openai/codex/pull/15217), [#15264](https://github.com/openai/codex/pull/15264), [#15275](https://github.com/openai/codex/pull/15275), [#15342](https://github.com/openai/codex/pull/15342), [#15580](https://github.com/openai/codex/pull/15580), [#15606](https://github.com/openai/codex/pull/15606), [#15802](https://github.com/openai/codex/pull/15802))\n\n- Sub-agents now use readable path-based addresses like `/root/agent_a`, with structured inter-agent messaging and agent listing for multi-agent v2 workflows. ([#15313](https://github.com/openai/codex/pull/15313), [#15515](https://github.com/openai/codex/pull/15515), [#15556](https://github.com/openai/codex/pull/15556), [#15570](https://github.com/openai/codex/pull/15570), [#15621](https://github.com/openai/codex/pull/15621), [#15647](https://github.com/openai/codex/pull/15647))\n\n- The `/title` terminal-title picker now works in both the classic TUI and the app-server TUI, making parallel sessions easier to tell apart. ([#12334](https://github.com/openai/codex/pull/12334), [#15860](https://github.com/openai/codex/pull/15860))\n\n- App-server clients can now send `!` shell commands, watch filesystem changes, and connect to remote websocket servers with bearer-token auth. ([#14988](https://github.com/openai/codex/pull/14988), [#14533](https://github.com/openai/codex/pull/14533), [#14847](https://github.com/openai/codex/pull/14847), [#14853](https://github.com/openai/codex/pull/14853))\n\n- Image workflows got smoother: `view_image` now returns image URLs for code mode, generated images are reopenable from the TUI, and image-generation history survives resume. ([#15072](https://github.com/openai/codex/pull/15072), [#15154](https://github.com/openai/codex/pull/15154), [#15223](https://github.com/openai/codex/pull/15223))\n\n- Prompt history recall now works in the app-server TUI, including across sessions. ([#14945](https://github.com/openai/codex/pull/14945))\n\n## Bug Fixes\n\n- `tui_app_server` no longer duplicates live reasoning summaries or `/review` output, and it preserves transcript text instead of dropping it under backpressure. ([#15758](https://github.com/openai/codex/pull/15758), [#15839](https://github.com/openai/codex/pull/15839), [#15759](https://github.com/openai/codex/pull/15759))\n\n- ChatGPT login in `tui_app_server` now opens the local browser again, cancels cleanly on `Ctrl+C`, and no longer fails startup when you're logged out. ([#15672](https://github.com/openai/codex/pull/15672), [#15673](https://github.com/openai/codex/pull/15673), [#15670](https://github.com/openai/codex/pull/15670))\n\n- Early exits now restore terminal state reliably, avoiding broken shell state after quitting; tmux users also get a working queued-message edit shortcut on `Shift+Left`. ([#15671](https://github.com/openai/codex/pull/15671), [#15480](https://github.com/openai/codex/pull/15480))\n\n- Linux sandboxed tool calls are more reliable on older distributions with older `bubblewrap`, and Windows restricted-token sandboxing now supports more split-policy carveout layouts. ([#15693](https://github.com/openai/codex/pull/15693), [#14172](https://github.com/openai/codex/pull/14172))\n\n- Remote multi-agent sessions now show agent names instead of raw IDs and recover more gracefully from stale turn-steering races. ([#15513](https://github.com/openai/codex/pull/15513), [#15714](https://github.com/openai/codex/pull/15714), [#15163](https://github.com/openai/codex/pull/15163))\n\n- Plugin-backed mentions and product gating now behave more predictably, fixing cases where explicit mentions lost context or plugins were filtered incorrectly. ([#15372](https://github.com/openai/codex/pull/15372), [#15263](https://github.com/openai/codex/pull/15263), [#15279](https://github.com/openai/codex/pull/15279))\n\n## Documentation\n\n- Expanded the app-server and exec-server docs/schema fixtures to cover exec-server setup, filesystem watch RPCs, realtime transcript notifications, and the new Python `thread.run(...)` quickstart flow. ([#15089](https://github.com/openai/codex/pull/15089), [#14533](https://github.com/openai/codex/pull/14533), [#15344](https://github.com/openai/codex/pull/15344), [#15088](https://github.com/openai/codex/pull/15088))\n\n## Chores\n\n- The app-server-backed TUI is now enabled by default, and the plugin/app rollout flags have been flipped on in normal builds. ([#15661](https://github.com/openai/codex/pull/15661), [#15713](https://github.com/openai/codex/pull/15713), [#15719](https://github.com/openai/codex/pull/15719), [#15820](https://github.com/openai/codex/pull/15820))\n\n- Removed the legacy artifact tool and retired the old `read_file` and `grep_files` handlers as part of ongoing tool-surface cleanup. ([#15851](https://github.com/openai/codex/pull/15851), [#15864](https://github.com/openai/codex/pull/15864), [#15773](https://github.com/openai/codex/pull/15773), [#15775](https://github.com/openai/codex/pull/15775))\n\n## Changelog\n\nFull Changelog: [rust-v0.116.0...rust-v0.117.0](https://github.com/openai/codex/compare/rust-v0.116.0...rust-v0.117.0)\n\n- [#14945](https://github.com/openai/codex/pull/14945) feat(tui): restore composer history in app-server tui [@fcoury](https://github.com/fcoury)\n\n- [#15092](https://github.com/openai/codex/pull/15092) fix: try to fix \"Stage npm package\" step in ci.yml [@bolinfest](https://github.com/bolinfest)\n\n- [#15075](https://github.com/openai/codex/pull/15075) Propagate tool errors to code mode [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15072](https://github.com/openai/codex/pull/15072) Return image URL from view_image tool [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15076](https://github.com/openai/codex/pull/15076) Add a startup deprecation warning for custom prompts [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15102](https://github.com/openai/codex/pull/15102) Revert \"fix: harden plugin feature gating\" [@xl-openai](https://github.com/xl-openai)\n\n- [#15077](https://github.com/openai/codex/pull/15077) Add final message prefix to realtime handoff output [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#13494](https://github.com/openai/codex/pull/13494) Align SQLite feedback logs with feedback formatter [@charley-oai](https://github.com/charley-oai)\n\n- [#14888](https://github.com/openai/codex/pull/14888) Feat: reuse persisted model and reasoning effort on thread resume [@shijie-oai](https://github.com/shijie-oai)\n\n- [#15111](https://github.com/openai/codex/pull/15111) don't add transcript for v2 realtime [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15103](https://github.com/openai/codex/pull/15103) Add update_plan code mode result [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15100](https://github.com/openai/codex/pull/15100) Add apply_patch code mode result [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15104](https://github.com/openai/codex/pull/15104) fix: harden plugin feature gating [@xl-openai](https://github.com/xl-openai)\n\n- [#15089](https://github.com/openai/codex/pull/15089) Add exec-server stub server and protocol docs [@starr-openai](https://github.com/starr-openai)\n\n- [#15042](https://github.com/openai/codex/pull/15042) Support featured plugins [@alexsong-oai](https://github.com/alexsong-oai)\n\n- [#15088](https://github.com/openai/codex/pull/15088) Add Python SDK thread.run convenience methods [@shaqayeq-oai](https://github.com/shaqayeq-oai)\n\n- [#15119](https://github.com/openai/codex/pull/15119) Remove stdio transport from exec server [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14632](https://github.com/openai/codex/pull/14632) feat(core, tracing): create turn spans over websockets [@owenlin0](https://github.com/owenlin0)\n\n- [#15011](https://github.com/openai/codex/pull/15011) Forward session and turn headers to MCP HTTP requests [@nicholasclark-openai](https://github.com/nicholasclark-openai)\n\n- [#15118](https://github.com/openai/codex/pull/15118) [hooks] turn_id extension for Stop &amp; UserPromptSubmit [@eternal-openai](https://github.com/eternal-openai)\n\n- [#14970](https://github.com/openai/codex/pull/14970) Simple directory mentions [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#14988](https://github.com/openai/codex/pull/14988) Add thread/shellCommand to app server API surface [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15041](https://github.com/openai/codex/pull/15041) feat: support product-scoped plugins. [@xl-openai](https://github.com/xl-openai)\n\n- [#15056](https://github.com/openai/codex/pull/15056) feat: add graph representation of agent network [@jif-oai](https://github.com/jif-oai)\n\n- [#15163](https://github.com/openai/codex/pull/15163) fix: case where agent is already closed [@jif-oai](https://github.com/jif-oai)\n\n- [#15125](https://github.com/openai/codex/pull/15125) Move environment abstraction into exec server [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15180](https://github.com/openai/codex/pull/15180) chore: add metrics for profile [@jif-oai](https://github.com/jif-oai)\n\n- [#15175](https://github.com/openai/codex/pull/15175) chore: morpheus does not generate memories [@jif-oai](https://github.com/jif-oai)\n\n- [#15185](https://github.com/openai/codex/pull/15185) Revert \"Forward session and turn headers to MCP HTTP requests\" [@nicholasclark-openai](https://github.com/nicholasclark-openai)\n\n- [#14867](https://github.com/openai/codex/pull/14867) [hooks] use a user message > developer message for prompt continuation [@eternal-openai](https://github.com/eternal-openai)\n\n- [#15196](https://github.com/openai/codex/pull/15196) Add experimental exec server URL handling [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15198](https://github.com/openai/codex/pull/15198) Publish runnable DotSlash package for argument-comment lint [@bolinfest](https://github.com/bolinfest)\n\n- [#15090](https://github.com/openai/codex/pull/15090) Add exec-server process and filesystem RPCs [@starr-openai](https://github.com/starr-openai)\n\n- [#15201](https://github.com/openai/codex/pull/15201) Log automated reviewer approval sources distinctly [@gabec-openai](https://github.com/gabec-openai)\n\n- [#12334](https://github.com/openai/codex/pull/12334) feat(tui): add /title terminal title configuration [@yvolovich-cyber](https://github.com/yvolovich-cyber)\n\n- [#15206](https://github.com/openai/codex/pull/15206) feat(tracing): tag app-server turn spans with turn_id [@owenlin0](https://github.com/owenlin0)\n\n- [#15216](https://github.com/openai/codex/pull/15216) Move terminal module to terminal-detection crate [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15207](https://github.com/openai/codex/pull/15207) add specific tool guidance for Windows destructive commands [@iceweasel-oai](https://github.com/iceweasel-oai)\n\n- [#15154](https://github.com/openai/codex/pull/15154) adding full imagepath to tui [@won-openai](https://github.com/won-openai)\n\n- [#15217](https://github.com/openai/codex/pull/15217) feat: expose needs_auth for plugin/read. [@xl-openai](https://github.com/xl-openai)\n\n- [#15190](https://github.com/openai/codex/pull/15190) Plumb MCP turn metadata through _meta [@nicholasclark-openai](https://github.com/nicholasclark-openai)\n\n- [#15220](https://github.com/openai/codex/pull/15220) feat(app-server): add mcpServer/startupStatus/updated notification [@owenlin0](https://github.com/owenlin0)\n\n- [#15222](https://github.com/openai/codex/pull/15222) changed save directory to codex_home [@won-openai](https://github.com/won-openai)\n\n- [#15232](https://github.com/openai/codex/pull/15232) Refactor ExecServer filesystem split between local and remote [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15021](https://github.com/openai/codex/pull/15021) V8 Bazel Build [@cconger](https://github.com/cconger)\n\n- [#15150](https://github.com/openai/codex/pull/15150) Move auth code into login crate [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15195](https://github.com/openai/codex/pull/15195) [plugins] Install MCPs when calling plugin/install [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#15254](https://github.com/openai/codex/pull/15254) core: add a full-buffer exec capture policy [@bolinfest](https://github.com/bolinfest)\n\n- [#15263](https://github.com/openai/codex/pull/15263) fix: Distinguish missing and empty plugin products [@xl-openai](https://github.com/xl-openai)\n\n- [#15253](https://github.com/openai/codex/pull/15253) Split features into codex-features crate [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15233](https://github.com/openai/codex/pull/15233) Split exec process into local and remote implementations [@starr-openai](https://github.com/starr-openai)\n\n- [#15199](https://github.com/openai/codex/pull/15199) Use released DotSlash package for argument-comment lint [@bolinfest](https://github.com/bolinfest)\n\n- [#15215](https://github.com/openai/codex/pull/15215) Initial plugins TUI menu - list and read only. tui + tui_app_server [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15252](https://github.com/openai/codex/pull/15252) Disable hooks on windows for now [@eternal-openai](https://github.com/eternal-openai)\n\n- [#15264](https://github.com/openai/codex/pull/15264) feat: Add One-Time Startup Remote Plugin Sync [@xl-openai](https://github.com/xl-openai)\n\n- [#15262](https://github.com/openai/codex/pull/15262) Add guardian follow-up reminder [@charley-oai](https://github.com/charley-oai)\n\n- [#15223](https://github.com/openai/codex/pull/15223) Feat/restore image generation history [@won-openai](https://github.com/won-openai)\n\n- [#15275](https://github.com/openai/codex/pull/15275) feat: prefer git for curated plugin sync  [@xl-openai](https://github.com/xl-openai)\n\n- [#14869](https://github.com/openai/codex/pull/14869) Add remote env CI matrix and integration test [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15218](https://github.com/openai/codex/pull/15218) Add temporary app-server originator fallback for codex-tui [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15328](https://github.com/openai/codex/pull/15328) try to fix bazel [@jif-oai](https://github.com/jif-oai)\n\n- [#15324](https://github.com/openai/codex/pull/15324) Add remote test skill [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15313](https://github.com/openai/codex/pull/15313) feat: change multi-agent to use path-like system instead of uuids [@jif-oai](https://github.com/jif-oai)\n\n- [#15244](https://github.com/openai/codex/pull/15244) Pin Python SDK app-server stdio to UTF-8 on Windows [@shaqayeq-oai](https://github.com/shaqayeq-oai)\n\n- [#15337](https://github.com/openai/codex/pull/15337) Bump aws-lc-rs [@cconger](https://github.com/cconger)\n\n- [#15203](https://github.com/openai/codex/pull/15203) Add v8-poc consumer of our new built v8 [@cconger](https://github.com/cconger)\n\n- [#15273](https://github.com/openai/codex/pull/15273) [apps] Use ARC for yolo mode. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#15128](https://github.com/openai/codex/pull/15128) chore(core) Remove Feature::PowershellUtf8 [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#15344](https://github.com/openai/codex/pull/15344) Add realtime transcript notification in v2 [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15285](https://github.com/openai/codex/pull/15285) Gate tui /plugins menu behind flag [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15114](https://github.com/openai/codex/pull/15114) fix: allow restricted filesystem profiles to read helper executables [@celia-oai](https://github.com/celia-oai)\n\n- [#15231](https://github.com/openai/codex/pull/15231) chore(core) update prefix_rule guidance [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#15036](https://github.com/openai/codex/pull/15036) fix(core) disable command_might_be_dangerous when unsandboxed [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#15348](https://github.com/openai/codex/pull/15348) Pass platform param to featured plugins [@alexsong-oai](https://github.com/alexsong-oai)\n\n- [#15276](https://github.com/openai/codex/pull/15276) Code mode on v8 [@cconger](https://github.com/cconger)\n\n- [#15372](https://github.com/openai/codex/pull/15372) [plugins] Fix plugin explicit mention context management. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#15366](https://github.com/openai/codex/pull/15366) chore(context) Include guardian approval context [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#15390](https://github.com/openai/codex/pull/15390) Remove legacy app-server notification handling from tui_app_server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15409](https://github.com/openai/codex/pull/15409) Add JIT entitlement for macosx [@cconger](https://github.com/cconger)\n\n- [#15414](https://github.com/openai/codex/pull/15414) Remove legacy auth and notification handling from tui_app_server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15376](https://github.com/openai/codex/pull/15376) [apps] Improve app tools loading for TUI. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#15415](https://github.com/openai/codex/pull/15415) chore(exec_policy) ExecPolicyRequirementScenario tests [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#15464](https://github.com/openai/codex/pull/15464) Remove smart_approvals alias migration [@charley-oai](https://github.com/charley-oai)\n\n- [#15443](https://github.com/openai/codex/pull/15443) core: snapshot fork startup context injection [@charley-oai](https://github.com/charley-oai)\n\n- [#15480](https://github.com/openai/codex/pull/15480) Use Shift+Left to edit queued messages in tmux [@charley-oai](https://github.com/charley-oai)\n\n- [#15317](https://github.com/openai/codex/pull/15317) nit: guard -> registry [@jif-oai](https://github.com/jif-oai)\n\n- [#15338](https://github.com/openai/codex/pull/15338) fix: fall back to vendored bubblewrap when system bwrap lacks --argv0 [@bolinfest](https://github.com/bolinfest)\n\n- [#15520](https://github.com/openai/codex/pull/15520) fix: cargo deny [@jif-oai](https://github.com/jif-oai)\n\n- [#15279](https://github.com/openai/codex/pull/15279) Label plugins as plugins, and hide skills/apps for given plugin [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15259](https://github.com/openai/codex/pull/15259) tui: queue follow-ups during manual /compact [@charley-oai](https://github.com/charley-oai)\n\n- [#15515](https://github.com/openai/codex/pull/15515) feat: structured multi-agent output [@jif-oai](https://github.com/jif-oai)\n\n- [#15357](https://github.com/openai/codex/pull/15357) Fix: proactive auth refresh to reload guarded disk state first [@celia-oai](https://github.com/celia-oai)\n\n- [#15342](https://github.com/openai/codex/pull/15342) Plugins TUI install/uninstall [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15540](https://github.com/openai/codex/pull/15540) chore: split sub-agent v2 implementation [@jif-oai](https://github.com/jif-oai)\n\n- [#15516](https://github.com/openai/codex/pull/15516) Thread guardian Responses API errors into denial rationale [@charley-oai](https://github.com/charley-oai)\n\n- [#15378](https://github.com/openai/codex/pull/15378) feat: support disable skills by name. [@xl-openai](https://github.com/xl-openai)\n\n- [#15529](https://github.com/openai/codex/pull/15529) Unify realtime stop handling in TUI [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15557](https://github.com/openai/codex/pull/15557) fix: main tui [@jif-oai](https://github.com/jif-oai)\n\n- [#15556](https://github.com/openai/codex/pull/15556) feat: new op type for sub-agents communication [@jif-oai](https://github.com/jif-oai)\n\n- [#15211](https://github.com/openai/codex/pull/15211) [hooks] add non-streaming (non-stdin style) shell-only PreToolUse support [@eternal-openai](https://github.com/eternal-openai)\n\n- [#15560](https://github.com/openai/codex/pull/15560) feat: use serde to differenciate inter agent communication [@jif-oai](https://github.com/jif-oai)\n\n- [#15426](https://github.com/openai/codex/pull/15426) chore(core) Add approvals reviewer to UserTurn [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#15562](https://github.com/openai/codex/pull/15562) [codex] Add rollback context duplication snapshot [@charley-oai](https://github.com/charley-oai)\n\n- [#15570](https://github.com/openai/codex/pull/15570) feat: custom watcher for multi-agent v2 [@jif-oai](https://github.com/jif-oai)\n\n- [#15575](https://github.com/openai/codex/pull/15575) feat: custom watcher for multi-agent v2 [@jif-oai](https://github.com/jif-oai)\n\n- [#15576](https://github.com/openai/codex/pull/15576) feat: custom watcher for multi-agent v2 [@jif-oai](https://github.com/jif-oai)\n\n- [#15360](https://github.com/openai/codex/pull/15360) fix: build PATH env var using OsString instead of String [@bolinfest](https://github.com/bolinfest)\n\n- [#15239](https://github.com/openai/codex/pull/15239) Add fork snapshot modes [@charley-oai](https://github.com/charley-oai)\n\n- [#15554](https://github.com/openai/codex/pull/15554) Add plugin-creator as system skill [@alexsong-oai](https://github.com/alexsong-oai)\n\n- [#15592](https://github.com/openai/codex/pull/15592) Extract landlock helpers into codex-sandboxing [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15593](https://github.com/openai/codex/pull/15593) Move macOS sandbox builders into codex-sandboxing [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15478](https://github.com/openai/codex/pull/15478) [codex-cli][app-server] Update self-serve business usage limit copy in error returned [@dhruvgupta-oai](https://github.com/dhruvgupta-oai)\n\n- [#15600](https://github.com/openai/codex/pull/15600) move imagegen skill into system skills [@dkundel-openai](https://github.com/dkundel-openai)\n\n- [#15599](https://github.com/openai/codex/pull/15599) Move sandbox policy transforms into codex-sandboxing [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15580](https://github.com/openai/codex/pull/15580) Remove filter from plugins/list result [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15581](https://github.com/openai/codex/pull/15581) Stabilize macOS CI test timeouts [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#15613](https://github.com/openai/codex/pull/15613) nit: split v2 wait [@jif-oai](https://github.com/jif-oai)\n\n- [#15614](https://github.com/openai/codex/pull/15614) fix: flaky test [@jif-oai](https://github.com/jif-oai)\n\n- [#15621](https://github.com/openai/codex/pull/15621) feat: list agents for sub-agent v2 [@jif-oai](https://github.com/jif-oai)\n\n- [#15623](https://github.com/openai/codex/pull/15623) nit: optim on list agents [@jif-oai](https://github.com/jif-oai)\n\n- [#15549](https://github.com/openai/codex/pull/15549) Allow global network allowlist wildcard [@rreichel3-oai](https://github.com/rreichel3-oai)\n\n- [#15424](https://github.com/openai/codex/pull/15424) Finish moving codex exec to app-server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15603](https://github.com/openai/codex/pull/15603) Extract sandbox manager and transforms into codex-sandboxing [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15484](https://github.com/openai/codex/pull/15484) chore(deps): bump pnpm/action-setup from 4 to 5 [@dependabot](https://github.com/dependabot)\n\n- [#14777](https://github.com/openai/codex/pull/14777) Bump vedantmgoyal9/winget-releaser from 19e706d4c9121098010096f9c495a70a7518b30f to 7bd472be23763def6e16bd06cc8b1cdfab0e2fd5 [@dependabot](https://github.com/dependabot)\n\n- [#15558](https://github.com/openai/codex/pull/15558) [Codex TUI] - Sort /plugins TUI menu by installed status first, alpha second [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15598](https://github.com/openai/codex/pull/15598) Refresh mentions list after plugin install/uninstall [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15624](https://github.com/openai/codex/pull/15624) feat: disable notifier v2 and start turn on agent interaction [@jif-oai](https://github.com/jif-oai)\n\n- [#15605](https://github.com/openai/codex/pull/15605) [codex] Stabilize compact resume and fork snapshot flaky tests [@charley-oai](https://github.com/charley-oai)\n\n- [#15658](https://github.com/openai/codex/pull/15658) try to fix git glitch [@jif-oai](https://github.com/jif-oai)\n\n- [#15657](https://github.com/openai/codex/pull/15657) try to fix git glitch [@jif-oai](https://github.com/jif-oai)\n\n- [#15656](https://github.com/openai/codex/pull/15656) try to fix git glitch [@jif-oai](https://github.com/jif-oai)\n\n- [#15655](https://github.com/openai/codex/pull/15655) try to fix git glitch [@jif-oai](https://github.com/jif-oai)\n\n- [#15654](https://github.com/openai/codex/pull/15654) try to fix git glitch [@jif-oai](https://github.com/jif-oai)\n\n- [#15653](https://github.com/openai/codex/pull/15653) try to fix git glitch [@jif-oai](https://github.com/jif-oai)\n\n- [#15652](https://github.com/openai/codex/pull/15652) try to fix git glitch [@jif-oai](https://github.com/jif-oai)\n\n- [#15651](https://github.com/openai/codex/pull/15651) try to fix git glitch [@jif-oai](https://github.com/jif-oai)\n\n- [#15650](https://github.com/openai/codex/pull/15650) try to fix git glitch [@jif-oai](https://github.com/jif-oai)\n\n- [#15606](https://github.com/openai/codex/pull/15606) Pretty plugin labels, preserve plugin app provenance during MCP tool refresh [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15579](https://github.com/openai/codex/pull/15579) Increase voice space hold timeout to 1s [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15093](https://github.com/openai/codex/pull/15093) core: Make FileWatcher reusable [@euroelessar](https://github.com/euroelessar)\n\n- [#15547](https://github.com/openai/codex/pull/15547) app-server: Add back pressure and batching to `command/exec` [@euroelessar](https://github.com/euroelessar)\n\n- [#15647](https://github.com/openai/codex/pull/15647) feat: communication pattern v2 [@jif-oai](https://github.com/jif-oai)\n\n- [#15438](https://github.com/openai/codex/pull/15438) feat: include marketplace loading error in plugin/list [@xl-openai](https://github.com/xl-openai)\n\n- [#15545](https://github.com/openai/codex/pull/15545) chore:  use access token expiration for proactive auth refresh [@celia-oai](https://github.com/celia-oai)\n\n- [#15530](https://github.com/openai/codex/pull/15530) chore: stop app-server auth refresh storms after permanent token failure [@celia-oai](https://github.com/celia-oai)\n\n- [#15577](https://github.com/openai/codex/pull/15577) Trim pre-turn context updates during rollback [@charley-oai](https://github.com/charley-oai)\n\n- [#15660](https://github.com/openai/codex/pull/15660) Hide numeric prefixes on disabled TUI list rows [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15644](https://github.com/openai/codex/pull/15644) fix: keep zsh-fork release assets after removing shell-tool-mcp [@bolinfest](https://github.com/bolinfest)\n\n- [#15670](https://github.com/openai/codex/pull/15670) tui_app_server: tolerate missing rate limits while logged out [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15564](https://github.com/openai/codex/pull/15564) Move git utilities into a dedicated crate [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15669](https://github.com/openai/codex/pull/15669) Clean up TUI /plugins row allignment [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15671](https://github.com/openai/codex/pull/15671) tui: always restore the terminal on early exit [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15672](https://github.com/openai/codex/pull/15672) tui_app_server: open ChatGPT login in the local browser [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15673](https://github.com/openai/codex/pull/15673) tui_app_server: cancel active login before Ctrl+C exit [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15676](https://github.com/openai/codex/pull/15676) Tweak /plugin menu wording [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15666](https://github.com/openai/codex/pull/15666) Suppress plugin-install MCP OAuth URL console spam [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15573](https://github.com/openai/codex/pull/15573) [plugins] Additional gating for tool suggest and apps. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#15665](https://github.com/openai/codex/pull/15665) Drop sandbox_permissions from sandbox exec requests [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15572](https://github.com/openai/codex/pull/15572) Move string truncation helpers into codex-utils-string [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14533](https://github.com/openai/codex/pull/14533) app-server: add filesystem watch support [@euroelessar](https://github.com/euroelessar)\n\n- [#15674](https://github.com/openai/codex/pull/15674) Use delayed shimmer for plugin loading headers in tui and tui_app_server [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15689](https://github.com/openai/codex/pull/15689) app-server: Return codex home in initialize response [@euroelessar](https://github.com/euroelessar)\n\n- [#15363](https://github.com/openai/codex/pull/15363) fix: keep rmcp-client env vars as OsString [@bolinfest](https://github.com/bolinfest)\n\n- [#15700](https://github.com/openai/codex/pull/15700) Remove provenance filtering in $mentions for apps and skills from plugins [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15692](https://github.com/openai/codex/pull/15692) Add legal link to TUI /plugin details [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15351](https://github.com/openai/codex/pull/15351) Expand ~ in MDM workspace write roots [@evawong-oai](https://github.com/evawong-oai)\n\n- [#15548](https://github.com/openai/codex/pull/15548) Extract rollout into its own crate [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15699](https://github.com/openai/codex/pull/15699) [codex] Defer fork context injection until first turn [@charley-oai](https://github.com/charley-oai)\n\n- [#15601](https://github.com/openai/codex/pull/15601) [app-server] Add a method to override feature flags. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#15708](https://github.com/openai/codex/pull/15708) TUI plugin menu cleanup - hide app ID [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15677](https://github.com/openai/codex/pull/15677) Fix stale quickstart integration assertion [@shaqayeq-oai](https://github.com/shaqayeq-oai)\n\n- [#15713](https://github.com/openai/codex/pull/15713) [plugins] Flip the flags. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#15719](https://github.com/openai/codex/pull/15719) [plugins] Flip on additional flags. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#14172](https://github.com/openai/codex/pull/14172) fix: support split carveouts in windows restricted-token sandbox [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#15714](https://github.com/openai/codex/pull/15714) Fix stale turn steering fallback in tui_app_server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15722](https://github.com/openai/codex/pull/15722) [plugins] Add a flag for tool search. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#15734](https://github.com/openai/codex/pull/15734) Update plugin creator skill. [@xl-openai](https://github.com/xl-openai)\n\n- [#15766](https://github.com/openai/codex/pull/15766) chore: tty metric [@jif-oai](https://github.com/jif-oai)\n\n- [#15519](https://github.com/openai/codex/pull/15519) fix(core): default approval behavior for mcp missing annotations [@fouad-openai](https://github.com/fouad-openai)\n\n- [#15775](https://github.com/openai/codex/pull/15775) chore: remove grep_files handler [@jif-oai](https://github.com/jif-oai)\n\n- [#15710](https://github.com/openai/codex/pull/15710) Use AbsolutePathBuf for cwd state [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15778](https://github.com/openai/codex/pull/15778) feat: rendering library v1 [@jif-oai](https://github.com/jif-oai)\n\n- [#15758](https://github.com/openai/codex/pull/15758) fix(tui): avoid duplicate live reasoning summaries [@fcoury](https://github.com/fcoury)\n\n- [#15773](https://github.com/openai/codex/pull/15773) chore: remove read_file handler [@jif-oai](https://github.com/jif-oai)\n\n- [#15776](https://github.com/openai/codex/pull/15776) feat: add multi-thread log query [@jif-oai](https://github.com/jif-oai)\n\n- [#15744](https://github.com/openai/codex/pull/15744) Extract codex-instructions crate [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15339](https://github.com/openai/codex/pull/15339) Add non-interactive resume filter option [@nornagon-openai](https://github.com/nornagon-openai)\n\n- [#15746](https://github.com/openai/codex/pull/15746) Extract codex-utils-plugins crate [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15747](https://github.com/openai/codex/pull/15747) Extract codex-plugin crate [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15748](https://github.com/openai/codex/pull/15748) Extract codex-analytics crate [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15707](https://github.com/openai/codex/pull/15707) Clarify codex_home base for MDM path resolution [@evawong-oai](https://github.com/evawong-oai)\n\n- [#15513](https://github.com/openai/codex/pull/15513) fix(tui_app_server): fix remote subagent switching and agent names [@fcoury](https://github.com/fcoury)\n\n- [#14856](https://github.com/openai/codex/pull/14856) [apps][tool_suggest] Remove tool_suggest's dependency on tool search. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#14847](https://github.com/openai/codex/pull/14847) feat: add websocket auth for app-server [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#15759](https://github.com/openai/codex/pull/15759) fix(tui_app_server): preserve transcript events under backpressure [@fcoury](https://github.com/fcoury)\n\n- [#15749](https://github.com/openai/codex/pull/15749) Extract codex-core-skills crate [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#15798](https://github.com/openai/codex/pull/15798) Avoid duplicate auth refreshes in `getAuthStatus` [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15659](https://github.com/openai/codex/pull/15659) Add MCP tool call spans [@nicholasclark-openai](https://github.com/nicholasclark-openai)\n\n- [#15789](https://github.com/openai/codex/pull/15789) Treat ChatGPT `hc` plan as Enterprise [@arnavdugar-openai](https://github.com/arnavdugar-openai)\n\n- [#15802](https://github.com/openai/codex/pull/15802) TUI plugin menu polish [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15785](https://github.com/openai/codex/pull/15785) Add cached environment manager for exec server URL [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15806](https://github.com/openai/codex/pull/15806) Add ReloadUserConfig to tui_app_server [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#15810](https://github.com/openai/codex/pull/15810) app-server: Organize app-server to allow more transports [@euroelessar](https://github.com/euroelessar)\n\n- [#15800](https://github.com/openai/codex/pull/15800) [mcp] Improve custom MCP elicitation [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#15531](https://github.com/openai/codex/pull/15531) [hooks] add non-streaming (non-stdin style) shell-only PostToolUse support [@eternal-openai](https://github.com/eternal-openai)\n\n- [#15820](https://github.com/openai/codex/pull/15820) [plugins] Flip flags on. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#15825](https://github.com/openai/codex/pull/15825) Fix quoted command rendering in tui_app_server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#14853](https://github.com/openai/codex/pull/14853) Wire remote app-server auth through the client [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15817](https://github.com/openai/codex/pull/15817) Expand home-relative paths on Windows [@tiffanycitra](https://github.com/tiffanycitra)\n\n- [#15693](https://github.com/openai/codex/pull/15693) fix: fix old system bubblewrap compatibility without falling back to vendored bwrap [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#15784](https://github.com/openai/codex/pull/15784) feat: replace askama by custom lib [@jif-oai](https://github.com/jif-oai)\n\n- [#15851](https://github.com/openai/codex/pull/15851) feat: drop artifact tool and feature [@jif-oai](https://github.com/jif-oai)\n\n- [#15861](https://github.com/openai/codex/pull/15861) feat: clean spawn v1 [@jif-oai](https://github.com/jif-oai)\n\n- [#15691](https://github.com/openai/codex/pull/15691) feat: exec-server prep for unified exec [@jif-oai](https://github.com/jif-oai)\n\n- [#15864](https://github.com/openai/codex/pull/15864) chore: drop artifacts lib [@jif-oai](https://github.com/jif-oai)\n\n- [#15812](https://github.com/openai/codex/pull/15812) core: remove special execve handling for skill scripts [@bolinfest](https://github.com/bolinfest)\n\n- [#15869](https://github.com/openai/codex/pull/15869) fix: flaky [@jif-oai](https://github.com/jif-oai)\n\n- [#15877](https://github.com/openai/codex/pull/15877) chore: ask agents md not to play with PIDs [@jif-oai](https://github.com/jif-oai)\n\n- [#15866](https://github.com/openai/codex/pull/15866) feat: use `ProcessId` in `exec-server` [@jif-oai](https://github.com/jif-oai)\n\n- [#15829](https://github.com/openai/codex/pull/15829) [plugins] Update the suggestable plugins list. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#15880](https://github.com/openai/codex/pull/15880) fix: max depth agent still has v2 tools [@jif-oai](https://github.com/jif-oai)\n\n- [#15839](https://github.com/openai/codex/pull/15839) Fix duplicate /review messages in app-server TUI [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15805](https://github.com/openai/codex/pull/15805) Add MCP connector metrics [@nicholasclark-openai](https://github.com/nicholasclark-openai)\n\n- [#15661](https://github.com/openai/codex/pull/15661) Enable `tui_app_server` feature by default [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15835](https://github.com/openai/codex/pull/15835) fix: box apply_patch test harness futures [@bolinfest](https://github.com/bolinfest)\n\n- [#15796](https://github.com/openai/codex/pull/15796) [codex] Block unsafe git global options from safe allowlist [@adrian-openai](https://github.com/adrian-openai)\n\n- [#15813](https://github.com/openai/codex/pull/15813) Add wildcard in the middle test coverage [@evawong-oai](https://github.com/evawong-oai)\n\n- [#15881](https://github.com/openai/codex/pull/15881) fix: root as std agent [@jif-oai](https://github.com/jif-oai)\n\n- [#15860](https://github.com/openai/codex/pull/15860) feat(tui): add terminal title support to tui app server [@fcoury](https://github.com/fcoury)\n\n- [#15885](https://github.com/openai/codex/pull/15885) [mcp] Fix legacy_tools [@mzeng-openai](https://github.com/mzeng-openai)","publishedAt":"2026-03-26T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#github-release-302123790","media":[]},{"id":"rel_5vz7GLh6hDU0atYXRjgU8","version":null,"title":"Build and install plugins in Codex","summary":"# Build and install plugins in Codex\n\nCodex now supports **plugins**: installable bundles that package skills, app\nintegrations, and MCP server config...","content":"# Build and install plugins in Codex\n\nCodex now supports **plugins**: installable bundles that package skills, app\nintegrations, and MCP server configuration for reusable workflows.\n\nPlugins are available in the Codex app, CLI, and IDE extensions.\n\nYou can install curated plugins from the plugin directory, or scaffold a local\nplugin with `@plugin-creator` and test it with workspace-scoped or home-scoped\nmarketplaces.\n\nLearn more in the [plugins documentation](/codex/plugins).\n\n  ![](/images/codex/plugins/directory.png)\n\n#### Plugin structure\n\nEvery plugin is a folder with a required `.codex-plugin/plugin.json` manifest\nand optional supporting files:\n\n```text\nmy-plugin/\n  .codex-plugin/\n    plugin.json   # Required: plugin manifest\n  skills/         # Optional: packaged skills\n  .app.json       # Optional: app or connector mappings\n  .mcp.json       # Optional: MCP server configuration\n  assets/         # Optional: icons, logos, screenshots\n```\n\n#### Install plugins per-user or per-repo\n\nYou can install plugins for just yourself with\n`~/.agents/plugins/marketplace.json` and `~/.codex/plugins/`, or for everyone\non a project with `.agents/plugins/marketplace.json` and a repo-local plugin\ndirectory such as `./plugins/`.\n\n#### Curated plugins and local development\n\nCodex surfaces curated public plugins in the plugin directory. Codex also ships\nwith the built-in `@plugin-creator` skill to help you scaffold a plugin, add a\nlocal marketplace entry, and test it before sharing it with teammates.","publishedAt":"2026-03-25T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#codex-2026-03-25","media":[]},{"id":"rel_Hw9KnEPJr8N15iIuL6LfP","version":null,"title":"Codex app","summary":"# Codex app\n\n### New features\n\n- Added search for past Codex app threads, including a sidebar shortcut and keyboard shortcuts for jumping to recent th...","content":"# Codex app\n\n### New features\n\n- Added search for past Codex app threads, including a sidebar shortcut and keyboard shortcuts for jumping to recent threads.\n- Added a one-click option to archive all local threads in a project.\n- Synced key settings between the Codex app and the VS Code extension, and added a settings entry point in the extension.\n\n### Performance improvements and bug fixes\n\n- Additional performance improvements and bug fixes.","publishedAt":"2026-03-24T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#codex-2026-03-24-app","media":[]},{"id":"rel_NmVpqNLWhpr2Xk1kIpgY7","version":null,"title":"Codex app","summary":"# Codex app\n\n### New features\n\n- Added skills to the `@` menu so you can insert them from the composer alongside other mentions.\n- `Cmd/Ctrl+F` now st...","content":"# Codex app\n\n### New features\n\n- Added skills to the `@` menu so you can insert them from the composer alongside other mentions.\n- `Cmd/Ctrl+F` now starts with your current text selection, which makes searching reviews and diffs faster.\n\n### Performance improvements and bug fixes\n\n- Additional performance improvements and bug fixes.","publishedAt":"2026-03-19T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#codex-2026-03-19-app","media":[]},{"id":"rel_Dn6IlyN6jYUam1tVimyJa","version":"0.116.0","title":"Codex CLI Release: 0.116.0","summary":"## New Features\n\n- App-server TUI now supports device-code ChatGPT sign-in during onboarding and can refresh existing ChatGPT tokens. ([#14952](https:...","content":"## New Features\n\n- App-server TUI now supports device-code ChatGPT sign-in during onboarding and can refresh existing ChatGPT tokens. ([#14952](https://github.com/openai/codex/pull/14952))\n\n- 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](https://github.com/openai/codex/pull/14896), [#15022](https://github.com/openai/codex/pull/15022), [#14878](https://github.com/openai/codex/pull/14878))\n\n- Added a `userpromptsubmit` hook so prompts can be blocked or augmented before execution and before they enter history. ([#14626](https://github.com/openai/codex/pull/14626))\n\n- Realtime sessions now start with recent thread context and are less likely to self-interrupt during audio playback. ([#14829](https://github.com/openai/codex/pull/14829), [#14827](https://github.com/openai/codex/pull/14827))\n\n## Bug Fixes\n\n- Fixed a first-turn stall where websocket prewarm could delay `turn/start`; startup now times out and falls back cleanly. ([#14838](https://github.com/openai/codex/pull/14838))\n\n- Restored conversation history for remote resume/fork in the app-server TUI and stopped duplicate live transcript output from legacy stream events. ([#14930](https://github.com/openai/codex/pull/14930), [#14892](https://github.com/openai/codex/pull/14892))\n\n- Improved Linux sandbox startup on symlinked checkouts, missing writable roots, and Ubuntu/AppArmor hosts by preferring system `bwrap` when available. ([#14849](https://github.com/openai/codex/pull/14849), [#14890](https://github.com/openai/codex/pull/14890), [#14963](https://github.com/openai/codex/pull/14963))\n\n- Fixed an agent job finalization race and reduced status polling churn for worker threads. ([#14843](https://github.com/openai/codex/pull/14843))\n\n## Documentation\n\n- Refreshed the Python SDK public API docs, examples, and walkthrough around the generated app-server models. ([#14446](https://github.com/openai/codex/pull/14446))\n\n## Chores\n\n- Pinned the `setup-zig` GitHub Action to an immutable SHA for more reproducible CI. ([#14858](https://github.com/openai/codex/pull/14858))\n\n## Changelog\n\nFull Changelog: [rust-v0.115.0...rust-v0.116.0](https://github.com/openai/codex/compare/rust-v0.115.0...rust-v0.116.0)\n\n- [#14717](https://github.com/openai/codex/pull/14717) Move TUI on top of app server (parallel code) [@etraut-openai](https://github.com/etraut-openai)\n\n- [#14665](https://github.com/openai/codex/pull/14665) Use request permission profile in app server [@mousseau-oai](https://github.com/mousseau-oai)\n\n- [#14826](https://github.com/openai/codex/pull/14826) Fixed build failures related to PR 14717 [@etraut-openai](https://github.com/etraut-openai)\n\n- [#14833](https://github.com/openai/codex/pull/14833) fix(core): fix sanitize name to use '_' everywhere [@apanasenko-oai](https://github.com/apanasenko-oai)\n\n- [#14268](https://github.com/openai/codex/pull/14268) memories: exclude AGENTS and skills from stage1 input [@andi-oai](https://github.com/andi-oai)\n\n- [#14139](https://github.com/openai/codex/pull/14139) windows-sandbox: add runner IPC foundation for future unified_exec [@iceweasel-oai](https://github.com/iceweasel-oai)\n\n- [#14851](https://github.com/openai/codex/pull/14851) Add exit helper to code mode scripts [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14828](https://github.com/openai/codex/pull/14828) [stack 1/4] Split realtime websocket methods by version [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14652](https://github.com/openai/codex/pull/14652) Apply argument comment lint across codex-rs [@bolinfest](https://github.com/bolinfest)\n\n- [#14837](https://github.com/openai/codex/pull/14837) skill-creator: default new skills to ~/.codex/skills [@xl-openai](https://github.com/xl-openai)\n\n- [#14861](https://github.com/openai/codex/pull/14861) Add marketplace display names to plugin/list [@xl-openai](https://github.com/xl-openai)\n\n- [#14878](https://github.com/openai/codex/pull/14878) feat: support remote_sync for plugin install/uninstall. [@xl-openai](https://github.com/xl-openai)\n\n- [#14830](https://github.com/openai/codex/pull/14830) [stack 2/4] Align main realtime v2 wire and runtime flow [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14886](https://github.com/openai/codex/pull/14886) fix: align marketplace display name with existing interface conventions [@xl-openai](https://github.com/xl-openai)\n\n- [#14881](https://github.com/openai/codex/pull/14881) [codex] add Jason as a predefined subagent name [@tibo-openai](https://github.com/tibo-openai)\n\n- [#14864](https://github.com/openai/codex/pull/14864) fix: tighten up shell arg quoting in GitHub workflows [@bolinfest](https://github.com/bolinfest)\n\n- [#14829](https://github.com/openai/codex/pull/14829) [stack 3/4] Add current thread context to realtime startup [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14827](https://github.com/openai/codex/pull/14827) [stack 4/4] Reduce realtime self-interruptions during playback [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14849](https://github.com/openai/codex/pull/14849) fix: canonicalize symlinked Linux sandbox cwd [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14892](https://github.com/openai/codex/pull/14892) Fix tui_app_server: ignore duplicate legacy stream events [@etraut-openai](https://github.com/etraut-openai)\n\n- [#14899](https://github.com/openai/codex/pull/14899) Revert tui code so it does not rely on in-process app server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#14890](https://github.com/openai/codex/pull/14890) fix(linux-sandbox): ignore missing writable roots [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14920](https://github.com/openai/codex/pull/14920) feat: centralize package manager version [@jif-oai](https://github.com/jif-oai)\n\n- [#14935](https://github.com/openai/codex/pull/14935) feat: rename to get more explicit close agent [@jif-oai](https://github.com/jif-oai)\n\n- [#14843](https://github.com/openai/codex/pull/14843) Fix agent jobs finalization race and reduce status polling churn [@daveaitel-openai](https://github.com/daveaitel-openai)\n\n- [#14944](https://github.com/openai/codex/pull/14944) feat: show effective model in spawn agent event [@jif-oai](https://github.com/jif-oai)\n\n- [#14838](https://github.com/openai/codex/pull/14838) fix(core): prevent hanging turn/start due to websocket warming issues [@owenlin0](https://github.com/owenlin0)\n\n- [#14859](https://github.com/openai/codex/pull/14859) Feat: CXA-1831 Persist latest model and reasoning effort in sqlite [@shijie-oai](https://github.com/shijie-oai)\n\n- [#14930](https://github.com/openai/codex/pull/14930) fix(tui): restore remote resume and fork history [@fcoury](https://github.com/fcoury)\n\n- [#14955](https://github.com/openai/codex/pull/14955) Fix fuzzy search notification buffering in app-server tests [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14938](https://github.com/openai/codex/pull/14938) feat: add suffix to shell snapshot name [@jif-oai](https://github.com/jif-oai)\n\n- [#14959](https://github.com/openai/codex/pull/14959) Fix code mode yield startup race [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14434](https://github.com/openai/codex/pull/14434) generate an internal json schema for `RolloutLine` [@keyz](https://github.com/keyz)\n\n- [#14846](https://github.com/openai/codex/pull/14846) use framed IPC for elevated command runner [@iceweasel-oai](https://github.com/iceweasel-oai)\n\n- [#14952](https://github.com/openai/codex/pull/14952) Add device-code onboarding and ChatGPT token refresh to app-server TUI [@etraut-openai](https://github.com/etraut-openai)\n\n- [#14896](https://github.com/openai/codex/pull/14896) [plugins] Support plugin installation elicitation. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#14958](https://github.com/openai/codex/pull/14958) Stabilize Windows cmd-based shell test harnesses [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14966](https://github.com/openai/codex/pull/14966) Stabilize permissions popup selection tests [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14968](https://github.com/openai/codex/pull/14968) Stabilize approval matrix write-file command [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14986](https://github.com/openai/codex/pull/14986) temporarily disable private desktop until it works with elevated IPC path [@iceweasel-oai](https://github.com/iceweasel-oai)\n\n- [#14983](https://github.com/openai/codex/pull/14983) Rename exec_wait tool to wait [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14905](https://github.com/openai/codex/pull/14905) Add auth env observability [@ccy-oai](https://github.com/ccy-oai)\n\n- [#14931](https://github.com/openai/codex/pull/14931) fix(tui): implement /mcp inventory for tui_app_server [@fcoury](https://github.com/fcoury)\n\n- [#14977](https://github.com/openai/codex/pull/14977) Cleanup skills/remote/xxx endpoints. [@xl-openai](https://github.com/xl-openai)\n\n- [#14984](https://github.com/openai/codex/pull/14984) Gate realtime audio interruption logic to v2 [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14902](https://github.com/openai/codex/pull/14902) Unify realtime shutdown in core [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14963](https://github.com/openai/codex/pull/14963) fix(linux-sandbox): prefer system /usr/bin/bwrap when available [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14446](https://github.com/openai/codex/pull/14446) Add Python SDK public API and examples [@shaqayeq-oai](https://github.com/shaqayeq-oai)\n\n- [#14993](https://github.com/openai/codex/pull/14993) feat: Add product-aware plugin policies and clean up manifest naming [@xl-openai](https://github.com/xl-openai)\n\n- [#14995](https://github.com/openai/codex/pull/14995) app-server: reject websocket requests with Origin headers [@maxj-oai](https://github.com/maxj-oai)\n\n- [#14960](https://github.com/openai/codex/pull/14960) Add FS abstraction and use in view_image [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14293](https://github.com/openai/codex/pull/14293) fix: honor active permission profiles in sandbox debug [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14610](https://github.com/openai/codex/pull/14610) feat: support restricted ReadOnlyAccess in elevated Windows sandbox [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#13592](https://github.com/openai/codex/pull/13592) Prefer websockets when providers support them [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14903](https://github.com/openai/codex/pull/14903) Handle realtime conversation end in the TUI [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14727](https://github.com/openai/codex/pull/14727) Use workspace requirements for guardian prompt override [@charley-oai](https://github.com/charley-oai)\n\n- [#14626](https://github.com/openai/codex/pull/14626) [hooks] userpromptsubmit - hook before user's prompt is executed [@eternal-openai](https://github.com/eternal-openai)\n\n- [#14858](https://github.com/openai/codex/pull/14858) Pin setup-zig GitHub Action to immutable SHA [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#13702](https://github.com/openai/codex/pull/13702) fix(subagents) share execpolicy by default [@dylan-hurd-oai](https://github.com/dylan-hurd-oai)\n\n- [#15022](https://github.com/openai/codex/pull/15022) [plugins] Support configuration tool suggest allowlist. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#14947](https://github.com/openai/codex/pull/14947) feat: adapt artifacts to new packaging and 2.5.6 [@jif-oai](https://github.com/jif-oai)\n\n- [#14821](https://github.com/openai/codex/pull/14821) feat: add memory citation to agent message [@jif-oai](https://github.com/jif-oai)\n\n- [#15058](https://github.com/openai/codex/pull/15058) nit: disable live memory edition [@jif-oai](https://github.com/jif-oai)\n\n- [#14942](https://github.com/openai/codex/pull/14942) Removed remaining core events from tui_app_server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#15059](https://github.com/openai/codex/pull/15059) chore: disable memory read path for morpheus [@jif-oai](https://github.com/jif-oai)\n\n- [#14842](https://github.com/openai/codex/pull/14842) Add notify to code-mode [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#15020](https://github.com/openai/codex/pull/15020) fix: harden plugin feature gating [@xl-openai](https://github.com/xl-openai)","publishedAt":"2026-03-19T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#github-release-299083035","media":[]},{"id":"rel_UEvv9yqly4yyiQYlGoh6R","version":null,"title":"Codex app","summary":"# Codex app\n\n### New features\n\n- You can now fork a conversation from an earlier message, not just the latest turn.\n- Added slash commands for switchi...","content":"# Codex app\n\n### New features\n\n- You can now fork a conversation from an earlier message, not just the latest turn.\n- Added slash commands for switching models and reasoning levels, and made slash commands work in the middle of a draft prompt.\n- Added notifications for plan mode questions so it's easier to notice when Codex needs input.\n\n### Performance improvements and bug fixes\n\n- Fixed thread handoff and subagent navigation issues across worktrees and the VS Code extension.\n- Additional performance improvements and bug fixes.","publishedAt":"2026-03-18T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#codex-2026-03-18-app","media":[]},{"id":"rel_mUjL3xp9-AE_Jxs5q4L54","version":"5.4","title":"Introducing GPT-5.4 mini in Codex","summary":"# Introducing GPT-5.4 mini in Codex\n\nGPT-5.4 mini is now available in Codex as a fast, efficient model for lighter\ncoding tasks and subagents.\n\nIt imp...","content":"# Introducing GPT-5.4 mini in Codex\n\nGPT-5.4 mini is now available in Codex as a fast, efficient model for lighter\ncoding tasks and subagents.\n\nIt improves over GPT-5 mini across coding, reasoning, image understanding, and\ntool use while running more than 2x faster. In Codex, GPT-5.4 mini uses 30% as\nmuch of your included limits as GPT-5.4, so comparable tasks can last about\n3.3x longer before you hit those limits.\n\nGPT-5.4 mini is available in the Codex app, the CLI, the IDE extension, and\nCodex on the web. GPT-5.4 mini is also available in the API.\n\nUse GPT-5.4 mini for codebase exploration, large-file review, processing\nsupporting documents, and other less reasoning-intensive subagent work. For\nmore complex planning, coordination, and final judgment, start with GPT-5.4.\n\nTo switch to GPT-5.4 mini:\n\n- In the CLI, start a new thread with:\n  ```bash\n  codex --model gpt-5.4-mini\n  ```\n  Or use `/model` during a session.\n- In the IDE extension, choose GPT-5.4 mini from the model selector in the\n  composer.\n- In the Codex app, choose GPT-5.4 mini from the model selector in the\n  composer.\n\nIf you don't see GPT-5.4 mini yet, update the CLI, IDE extension, or Codex app\nto the latest version.","publishedAt":"2026-03-17T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#codex-2026-03-17","media":[]},{"id":"rel_lbD5P0zjr3GCzIgCvbtzU","version":null,"title":"Codex app","summary":"# Codex app\n\n### New features\n\n- Added back and forward buttons in the header so you can move between recent screens more quickly.\n- Added an **Open i...","content":"# Codex app\n\n### New features\n\n- Added back and forward buttons in the header so you can move between recent screens more quickly.\n- Added an **Open in Finder**, **Open in Explorer**, or **Open in File Manager** action from thread menus to jump straight to a thread's project folder.\n\n### Performance improvements and bug fixes\n\n- Improved resume and thread error toasts with clearer details when something goes wrong.\n- Additional performance improvements and bug fixes.","publishedAt":"2026-03-16T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#codex-2026-03-16-app","media":[]},{"id":"rel_Bt6Wnuio7IPfN_Apt7PD9","version":"0.115.0","title":"Codex CLI Release: 0.115.0","summary":"## New Features\n\n- Supported models can now request full-resolution image inspection through both `view_image` and `codex.emitImage(..., detail: \"orig...","content":"## New Features\n\n- 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](https://github.com/openai/codex/pull/14175))\n\n- `js_repl` now exposes `codex.cwd` and `codex.homeDir`, and saved `codex.tool(...)` / `codex.emitImage(...)` references keep working across cells. ([#14385](https://github.com/openai/codex/pull/14385), [#14503](https://github.com/openai/codex/pull/14503))\n\n- Realtime websocket sessions gained a dedicated transcription mode, plus v2 handoff support through the `codex` tool, with a unified `[realtime]` session config. ([#14554](https://github.com/openai/codex/pull/14554), [#14556](https://github.com/openai/codex/pull/14556), [#14606](https://github.com/openai/codex/pull/14606))\n\n- 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](https://github.com/openai/codex/pull/14245), [#14435](https://github.com/openai/codex/pull/14435))\n\n- 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](https://github.com/openai/codex/pull/13860), [#14668](https://github.com/openai/codex/pull/14668))\n\n- 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](https://github.com/openai/codex/pull/14274), [#14287](https://github.com/openai/codex/pull/14287), [#14732](https://github.com/openai/codex/pull/14732))\n\n## Bug Fixes\n\n- Spawned subagents now inherit sandbox and network rules more reliably, including project-profile layering, persisted host approvals, and symlinked writable roots. ([#14619](https://github.com/openai/codex/pull/14619), [#14650](https://github.com/openai/codex/pull/14650), [#14674](https://github.com/openai/codex/pull/14674), [#14807](https://github.com/openai/codex/pull/14807))\n\n- `js_repl` no longer hangs when dynamic tool responses contain literal U+2028 or U+2029 characters. ([#14421](https://github.com/openai/codex/pull/14421))\n\n- The TUI no longer stalls on exit after creating subagents, and interrupting a turn no longer tears down background terminals by default. ([#14816](https://github.com/openai/codex/pull/14816), [#14602](https://github.com/openai/codex/pull/14602))\n\n- `codex exec --profile` once again preserves profile-scoped settings when starting or resuming a thread. ([#14524](https://github.com/openai/codex/pull/14524))\n\n- MCP and elicitation flows are more robust, with safer tool-name normalization and preserved `tool_params` in approval prompts. ([#14491](https://github.com/openai/codex/pull/14491), [#14605](https://github.com/openai/codex/pull/14605), [#14769](https://github.com/openai/codex/pull/14769))\n\n- The local network proxy now serves CONNECT traffic as explicit HTTP/1, improving compatibility with HTTP proxy clients. ([#14395](https://github.com/openai/codex/pull/14395))\n\n## Chores\n\n- The subagent wait tool is now consistently named `wait_agent`, aligning it with `spawn_agent` and `send_input`. ([#14631](https://github.com/openai/codex/pull/14631))\n\n## Changelog\n\nFull Changelog: [rust-v0.114.0...rust-v0.115.0](https://github.com/openai/codex/compare/rust-v0.114.0...rust-v0.115.0)\n\n- [#14395](https://github.com/openai/codex/pull/14395) fix(network-proxy): serve HTTP proxy listener as HTTP/1 [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14385](https://github.com/openai/codex/pull/14385) Add js_repl cwd and homeDir helpers [@fjord-oai](https://github.com/fjord-oai)\n\n- [#14376](https://github.com/openai/codex/pull/14376) Keep agent-switch word-motion keys out of draft editing [@joshka-oai](https://github.com/joshka-oai)\n\n- [#14175](https://github.com/openai/codex/pull/14175) Let models opt into original image detail [@fjord-oai](https://github.com/fjord-oai)\n\n- [#14382](https://github.com/openai/codex/pull/14382) check for large binaries in CI [@owenlin0](https://github.com/owenlin0)\n\n- [#14392](https://github.com/openai/codex/pull/14392) chore(app-server): stop emitting codex/event/ notifications [@owenlin0](https://github.com/owenlin0)\n\n- [#14274](https://github.com/openai/codex/pull/14274) feat: search_tool migrate to bring you own tool of Responses API [@apanasenko-oai](https://github.com/apanasenko-oai)\n\n- [#14174](https://github.com/openai/codex/pull/14174) refactor: centralize filesystem permissions precedence [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14394](https://github.com/openai/codex/pull/14394) chore(app-server): delete unused rpc methods from v1.rs [@owenlin0](https://github.com/owenlin0)\n\n- [#14171](https://github.com/openai/codex/pull/14171) fix: align core approvals with split sandbox policies [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14410](https://github.com/openai/codex/pull/14410) Make collab model metadata accurate on completion [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14387](https://github.com/openai/codex/pull/14387) feat(app-server): propagate traces across tasks and core ops [@owenlin0](https://github.com/owenlin0)\n\n- [#14407](https://github.com/openai/codex/pull/14407) chore: use AVAILABLE and ON_INSTALL as default plugin install and auth policies [@sayan-oai](https://github.com/sayan-oai)\n\n- [#14287](https://github.com/openai/codex/pull/14287) [apps] Add tool_suggest tool. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#14432](https://github.com/openai/codex/pull/14432) Clarify spawn agent authorization [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14295](https://github.com/openai/codex/pull/14295) Support waiting for code_mode sessions [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14427](https://github.com/openai/codex/pull/14427) feat: refactor on openai-curated plugins. [@xl-openai](https://github.com/xl-openai)\n\n- [#13996](https://github.com/openai/codex/pull/13996) refactor: make bubblewrap the default Linux sandbox [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14440](https://github.com/openai/codex/pull/14440) fix: follow up on linux sandbox review nits [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14431](https://github.com/openai/codex/pull/14431) Handle pre-approved permissions in zsh fork [@mousseau-oai](https://github.com/mousseau-oai)\n\n- [#14403](https://github.com/openai/codex/pull/14403) [elicitation] User-friendly tool call messages. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#14429](https://github.com/openai/codex/pull/14429) Use granted permissions when invoking apply_patch [@mousseau-oai](https://github.com/mousseau-oai)\n\n- [#14471](https://github.com/openai/codex/pull/14471) Updated out-of-date tip about availability on free and go plans [@etraut-openai](https://github.com/etraut-openai)\n\n- [#14444](https://github.com/openai/codex/pull/14444) fix: move inline codex-rs/core unit tests into sibling files [@bolinfest](https://github.com/bolinfest)\n\n- [#14437](https://github.com/openai/codex/pull/14437) Dispatch tools when code mode is not awaited directly [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14435](https://github.com/openai/codex/pull/14435) Add Python app-server SDK [@shaqayeq-oai](https://github.com/shaqayeq-oai)\n\n- [#14473](https://github.com/openai/codex/pull/14473) fix(cli): support legacy use_linux_sandbox_bwrap flag [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#13882](https://github.com/openai/codex/pull/13882) Fix stdio-to-uds peer-close flake [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14476](https://github.com/openai/codex/pull/14476) Move code mode tool files under tools/code_mode and split functionality [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14475](https://github.com/openai/codex/pull/14475) rename spawn_csv feature flag to enable_fanout [@daveaitel-openai](https://github.com/daveaitel-openai)\n\n- [#14173](https://github.com/openai/codex/pull/14173) fix: preserve split filesystem semantics in linux sandbox [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14480](https://github.com/openai/codex/pull/14480) Cleanup code_mode tool descriptions [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14488](https://github.com/openai/codex/pull/14488) Handle malformed agent role definitions nonfatally [@gabec-openai](https://github.com/gabec-openai)\n\n- [#14398](https://github.com/openai/codex/pull/14398) Do not allow unified_exec for sandboxed scenarios on Windows [@iceweasel-oai](https://github.com/iceweasel-oai)\n\n- [#14419](https://github.com/openai/codex/pull/14419) use scopes_supported for OAuth when present on MCP servers [@jgershen-oai](https://github.com/jgershen-oai)\n\n- [#14484](https://github.com/openai/codex/pull/14484) Add default code-mode yield timeout [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14494](https://github.com/openai/codex/pull/14494) Add parallel tool call test [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14478](https://github.com/openai/codex/pull/14478) chore(app-server): stop exporting EventMsg schemas [@owenlin0](https://github.com/owenlin0)\n\n- [#14490](https://github.com/openai/codex/pull/14490) fix turn_start_jsonrpc_span_parents_core_turn_spans flakiness [@owenlin0](https://github.com/owenlin0)\n\n- [#14496](https://github.com/openai/codex/pull/14496) Reuse tool runtime for code mode worker [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14421](https://github.com/openai/codex/pull/14421) Fix js_repl hangs on U+2028/U+2029 dynamic tool responses [@aaronl-openai](https://github.com/aaronl-openai)\n\n- [#14505](https://github.com/openai/codex/pull/14505) Skip nested tool call parallel test on Windows [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14491](https://github.com/openai/codex/pull/14491) Fix MCP tool calling [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14493](https://github.com/openai/codex/pull/14493) memories: focus write prompts on user preferences [@andi-oai](https://github.com/andi-oai)\n\n- [#14510](https://github.com/openai/codex/pull/14510) Rename exec session IDs to cell IDs [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14500](https://github.com/openai/codex/pull/14500) Update tool search prompts [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#14426](https://github.com/openai/codex/pull/14426) Decouple request permissions feature and tool [@mousseau-oai](https://github.com/mousseau-oai)\n\n- [#14503](https://github.com/openai/codex/pull/14503) Persist js_repl codex helpers across cells [@fjord-oai](https://github.com/fjord-oai)\n\n- [#14517](https://github.com/openai/codex/pull/14517) Expose code-mode tools through globals [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14502](https://github.com/openai/codex/pull/14502) feat(search_tool): gate search_tool on model supports_search_tool field [@apanasenko-oai](https://github.com/apanasenko-oai)\n\n- [#14521](https://github.com/openai/codex/pull/14521) Reapply \"Pass more params to compaction\" ([#14298](https://github.com/openai/codex/pull/14298)) [@rasmusrygaard](https://github.com/rasmusrygaard)\n\n- [#14524](https://github.com/openai/codex/pull/14524) Fix `codex exec --profile` handling [@etraut-openai](https://github.com/etraut-openai)\n\n- [#14516](https://github.com/openai/codex/pull/14516) Rename reject approval policy to granular [@mousseau-oai](https://github.com/mousseau-oai)\n\n- [#14445](https://github.com/openai/codex/pull/14445) feat: add plugin/read. [@xl-openai](https://github.com/xl-openai)\n\n- [#14178](https://github.com/openai/codex/pull/14178) login: add custom CA support for login flows [@joshka-oai](https://github.com/joshka-oai)\n\n- [#14535](https://github.com/openai/codex/pull/14535) Split multi-agent handlers per tool [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#13329](https://github.com/openai/codex/pull/13329) [js_repl] Hard-stop active js_repl execs on explicit user interrupts [@aaronl-openai](https://github.com/aaronl-openai)\n\n- [#14239](https://github.com/openai/codex/pull/14239) client: extend custom CA handling across HTTPS and websocket clients [@joshka-oai](https://github.com/joshka-oai)\n\n- [#14536](https://github.com/openai/codex/pull/14536) Add typed multi-agent tool outputs [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14514](https://github.com/openai/codex/pull/14514) fix: reopen writable linux carveouts under denied parents [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14531](https://github.com/openai/codex/pull/14531) Add plugin usage telemetry [@alexsong-oai](https://github.com/alexsong-oai)\n\n- [#14511](https://github.com/openai/codex/pull/14511) code_mode: Move exec params from runtime declarations to [@pragma](https://github.com/pragma) [@cconger](https://github.com/cconger)\n\n- [#14504](https://github.com/openai/codex/pull/14504) Refactor cloud requirements error and surface in JSON-RPC error [@alexsong-oai](https://github.com/alexsong-oai)\n\n- [#14537](https://github.com/openai/codex/pull/14537) Add realtime v2 event parser behind feature flag [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14529](https://github.com/openai/codex/pull/14529) Simplify permissions available in request permissions tool [@mousseau-oai](https://github.com/mousseau-oai)\n\n- [#14522](https://github.com/openai/codex/pull/14522) feat: support skill-scoped managed network domain overrides in skill config [@celia-oai](https://github.com/celia-oai)\n\n- [#14554](https://github.com/openai/codex/pull/14554) Add codex tool support for realtime v2 handoff [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14556](https://github.com/openai/codex/pull/14556) Add realtime transcription mode for websocket sessions [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14518](https://github.com/openai/codex/pull/14518) Add diagnostics for read_only_unless_trusted timeout flake [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14603](https://github.com/openai/codex/pull/14603) Split multi-agent handler into dedicated files [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14526](https://github.com/openai/codex/pull/14526) code mode: single line tool declarations [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14400](https://github.com/openai/codex/pull/14400) Use a private desktop for Windows sandbox instead of Winsta0\\Default [@iceweasel-oai](https://github.com/iceweasel-oai)\n\n- [#14558](https://github.com/openai/codex/pull/14558) sending back imagaegencall response back to responseapi [@won-openai](https://github.com/won-openai)\n\n- [#14553](https://github.com/openai/codex/pull/14553) Improve granular approval policy prompt [@mousseau-oai](https://github.com/mousseau-oai)\n\n- [#14541](https://github.com/openai/codex/pull/14541) chore: clarify plugin + app copy in model instructions [@sayan-oai](https://github.com/sayan-oai)\n\n- [#14542](https://github.com/openai/codex/pull/14542) [bazel] Bump up cc and rust toolchains [@zbarsky-openai](https://github.com/zbarsky-openai)\n\n- [#14512](https://github.com/openai/codex/pull/14512) Start TUI on embedded app server [@etraut-openai](https://github.com/etraut-openai)\n\n- [#14606](https://github.com/openai/codex/pull/14606) Unify realtime v1/v2 session config [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14527](https://github.com/openai/codex/pull/14527) app-server: Add platform os and family to init response [@euroelessar](https://github.com/euroelessar)\n\n- [#14618](https://github.com/openai/codex/pull/14618) Use subagents naming in the TUI [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14304](https://github.com/openai/codex/pull/14304) Override local apps settings with requirements.toml settings [@canvrno-oai](https://github.com/canvrno-oai)\n\n- [#14479](https://github.com/openai/codex/pull/14479) feat(app-server, core): add more spans [@owenlin0](https://github.com/owenlin0)\n\n- [#13644](https://github.com/openai/codex/pull/13644) fix: preserve zsh-fork escalation fds across unified-exec spawn paths [@bolinfest](https://github.com/bolinfest)\n\n- [#14617](https://github.com/openai/codex/pull/14617) Add code_mode_only feature [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#13201](https://github.com/openai/codex/pull/13201) Slash copy osc52 wsl support [@won-openai](https://github.com/won-openai)\n\n- [#14631](https://github.com/openai/codex/pull/14631) Rename multi-agent wait tool to wait_agent [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14622](https://github.com/openai/codex/pull/14622) Stabilize multi-agent feature flag [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14245](https://github.com/openai/codex/pull/14245) app-server: add v2 filesystem APIs [@euroelessar](https://github.com/euroelessar)\n\n- [#14605](https://github.com/openai/codex/pull/14605) Normalize MCP tool names to code-mode safe form [@pakrym-oai](https://github.com/pakrym-oai)\n\n- [#14637](https://github.com/openai/codex/pull/14637) Fix wait_agent expectations in core tests [@charley-oai](https://github.com/charley-oai)\n\n- [#13860](https://github.com/openai/codex/pull/13860) Add Smart Approvals guardian review across core, app-server, and TUI [@charley-oai](https://github.com/charley-oai)\n\n- [#14639](https://github.com/openai/codex/pull/14639) Fix stale create_wait_tool reference [@charley-oai](https://github.com/charley-oai)\n\n- [#14532](https://github.com/openai/codex/pull/14532) [hooks] stop continuation &amp; stop_hook_active mechanics [@eternal-openai](https://github.com/eternal-openai)\n\n- [#14635](https://github.com/openai/codex/pull/14635) Fix realtime transcription session.update tools payload [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14636](https://github.com/openai/codex/pull/14636) Use parser-specific realtime voice enum [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14633](https://github.com/openai/codex/pull/14633) refactor: make unified-exec zsh-fork state explicit [@bolinfest](https://github.com/bolinfest)\n\n- [#12031](https://github.com/openai/codex/pull/12031) Add openai_base_url config override for built-in provider [@etraut-openai](https://github.com/etraut-openai)\n\n- [#14645](https://github.com/openai/codex/pull/14645) Fix Windows CI assertions for guardian and Smart Approvals [@aibrahim-oai](https://github.com/aibrahim-oai)\n\n- [#14616](https://github.com/openai/codex/pull/14616) Fix turn context reconstruction after backtracking [@charley-oai](https://github.com/charley-oai)\n\n- [#14619](https://github.com/openai/codex/pull/14619) fix: persist future network host approvals across sessions [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14650](https://github.com/openai/codex/pull/14650) fix: sync split sandbox policies for spawned subagents [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14609](https://github.com/openai/codex/pull/14609) move plugin/skill instructions into dev msg and reorder [@sayan-oai](https://github.com/sayan-oai)\n\n- [#12024](https://github.com/openai/codex/pull/12024) Enforce errors on overriding built-in model providers [@etraut-openai](https://github.com/etraut-openai)\n\n- [#14646](https://github.com/openai/codex/pull/14646) Refresh Python SDK generated types [@sayan-oai](https://github.com/sayan-oai)\n\n- [#14649](https://github.com/openai/codex/pull/14649) make defaultPrompt an array, keep backcompat [@sayan-oai](https://github.com/sayan-oai)\n\n- [#14501](https://github.com/openai/codex/pull/14501) dynamic tool calls: add param `exposeToContext` to optionally hide tool [@cconger](https://github.com/cconger)\n\n- [#14651](https://github.com/openai/codex/pull/14651) Add argument-comment Dylint runner [@bolinfest](https://github.com/bolinfest)\n\n- [#14674](https://github.com/openai/codex/pull/14674) fix: fix symlinked writable roots in sandbox policies [@viyatb-oai](https://github.com/viyatb-oai)\n\n- [#14611](https://github.com/openai/codex/pull/14611) Add auth 401 recovery observability to client bug reports [@ccy-oai](https://github.com/ccy-oai)\n\n- [#14647](https://github.com/openai/codex/pull/14647) [apps] Add tool call meta. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#14732](https://github.com/openai/codex/pull/14732) [apps] Improve search tool fallback. [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#14602](https://github.com/openai/codex/pull/14602) Preserve background terminals on interrupt and rename cleanup command to /stop [@friel-openai](https://github.com/friel-openai)\n\n- [#14668](https://github.com/openai/codex/pull/14668) Reuse guardian session across approvals [@charley-oai](https://github.com/charley-oai)\n\n- [#14769](https://github.com/openai/codex/pull/14769) fix(core): preserve tool_params for elicitations [@mzeng-openai](https://github.com/mzeng-openai)\n\n- [#14807](https://github.com/openai/codex/pull/14807) fix: sub-agent role when using profiles [@jif-oai](https://github.com/jif-oai)\n\n- [#14806](https://github.com/openai/codex/pull/14806) feat: improve skills cache key to take into account config layering [@jif-oai](https://github.com/jif-oai)\n\n- [#13850](https://github.com/openai/codex/pull/13850) feat: make interrupt state not final for multi-agents [@jif-oai](https://github.com/jif-oai)\n\n- [#14816](https://github.com/openai/codex/pull/14816) fix: tui freeze when sub-agents are present [@jif-oai](https://github.com/jif-oai)","publishedAt":"2026-03-16T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#github-release-297641413","media":[]},{"id":"rel__VIX44VO9W_9e7PiENcxU","version":null,"title":"Codex app","summary":"# Codex app\n\n### Themes\n\nChange the Codex app appearance in **Settings** by choosing a base theme,\nadjusting accent, background, and foreground colors...","content":"# Codex app\n\n### Themes\n\nChange the Codex app appearance in **Settings** by choosing a base theme,\nadjusting accent, background, and foreground colors, and changing the UI and\ncode fonts. You can also share your custom theme with friends.\n\n### Revamped Automations\n\nYou can now choose whether automations run locally or on a worktree, define\ncustom reasoning levels and models, and use templates to find inspiration for\nnew automations.\n\n### Performance improvements and bug fixes\n\nVarious bug fixes and performance improvements.","publishedAt":"2026-03-12T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#codex-2026-03-12-app","media":[]},{"id":"rel_NMTKnC-TP0mbhEYB9-Yu-","version":null,"title":"Codex app","summary":"# Codex app\n\n### New features\n\n- Codex can now read the integrated terminal for the current thread, so it can check the status of a running developmen...","content":"# Codex app\n\n### New features\n\n- Codex can now read the integrated terminal for the current thread, so it can check the status of a running development server or refer back to failed build output while it works with you.\n\n### Performance improvements and bug fixes\n\n- Additional performance improvements and bug fixes.","publishedAt":"2026-03-11T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#codex-2026-03-11-app","media":[]},{"id":"rel_bNawvq3Mp7G339G60MEo0","version":"5.4","title":"Introducing GPT-5.4 in Codex","summary":"# Introducing GPT-5.4 in Codex\n\nGPT-5.4 is now available in Codex as OpenAI's most capable and efficient\nfrontier model for professional work.\n\nIt com...","content":"# Introducing GPT-5.4 in Codex\n\nGPT-5.4 is now available in Codex as OpenAI's most capable and efficient\nfrontier model for professional work.\n\nIt combines recent advances in reasoning, coding, and agentic workflows in one\nmodel, and it's the recommended choice for most Codex tasks.\n\nIn Codex, GPT-5.4 is the first general-purpose model with native computer-use\ncapabilities. GPT-5.4 in Codex includes experimental support for the 1M\ncontext window. It supports complex workflows across applications and\nlong-horizon tasks, with stronger tool use and tool search that help agents\nfind and use the right tools more efficiently.\n\nGPT-5.4 is available everywhere you can use Codex: the Codex app, the CLI, the\nIDE extension, and Codex Cloud on the web. GPT-5.4 is also available in the\nAPI.\n\nTo switch to GPT-5.4:\n\n- In the CLI, start a new thread with:\n  ```bash\n  codex --model gpt-5.4\n  ```\n  Or use `/model` during a session.\n- In the IDE extension, choose GPT-5.4 from the model selector in the\n  composer.\n- In the Codex app, choose GPT-5.4 from the model selector in the composer.\n\nIf you don't see GPT-5.4 yet, update the CLI, IDE extension, or Codex app to\nthe latest version.","publishedAt":"2026-03-05T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#codex-2026-03-05","media":[]},{"id":"rel_TCKit4tV614AQIunefaNN","version":null,"title":"Codex app","summary":"# Codex app\n\n### Performance improvements and bug fixes\n\n- Improved remote connections with clearer connection errors, better status updates, and clea...","content":"# Codex app\n\n### Performance improvements and bug fixes\n\n- Improved remote connections with clearer connection errors, better status updates, and clearer host labels in thread and settings views.\n- Fixed copy and paste shortcuts in the integrated terminal on Windows.\n- Fixed an issue where archived pinned threads could reappear in the sidebar.\n- Fixed an issue where repeated `codex://new` links could stop prefilling a new conversation when the app was already open.\n- Additional performance improvements and bug fixes.","publishedAt":"2026-03-05T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#codex-2026-03-05-app","media":[]},{"id":"rel_hX2Ehs559PJf7L2-VI_8L","version":null,"title":"Codex app","summary":"# Codex app\n\n#### Codex app for Windows\n\nThe Codex app is now available on Windows. The app gives you one interface\nfor working across projects, runni...","content":"# Codex app\n\n#### Codex app for Windows\n\nThe Codex app is now available on Windows. The app gives you one interface\nfor working across projects, running parallel agent threads, and reviewing\nresults in one place.\n\nThe Codex app runs natively on Windows using PowerShell and a native Windows\nsandbox for bounded permissions, so you can use Codex on Windows without\nmoving your workflow into WSL, onto a virtual machine, or by deactivating the\nsandbox.\n\nThe Windows app includes the same core features as the rest of the Codex app:\n\n- [Skills](/codex/app/features#skills-support) to discover and extend Codex\n  capabilities.\n- [Automations](/codex/app/automations) to run work in the background.\n- [Worktrees](/codex/app/worktrees) to handle independent tasks in the same\n  project.\n\nIf you prefer to develop in WSL, you can also switch the Codex agent and the\nintegrated terminal to run there.\n\nDownload it from the\n[Microsoft Store](https://get.microsoft.com/installer/download/9PLM9XGG6VKS?cid=website_cta_psi)\nand sign in with your ChatGPT account or an API key. For setup and\nconfiguration details, see [Setup](/codex/app/windows#setup), [Use WSL with the\nCodex app](/codex/app/windows#use-wsl-with-the-codex-app), and [Customize the\napp for your development setup](/codex/app/windows#customize-the-app-for-your-development-setup).","publishedAt":"2026-03-04T00:00:00.000Z","url":"https://developers.openai.com/codex/changelog/#codex-2026-03-04-app","media":[]}],"pagination":{"page":1,"pageSize":20,"totalPages":3,"totalItems":59},"summaries":{"rolling":{"windowDays":90,"summary":"Codex shipped substantial infrastructure around plugins, realtime voice, and agent composition over the last 90 days. The plugin system graduated from experimental to first-class—developers can now scaffold, test, and install plugins locally or from marketplaces, with product-scoped sync at startup and clearer auth handling. Realtime voice defaulted to WebRTC v2 with native TUI media support and configurable transport, while MCP support expanded to include resource reads, tool-call metadata, and custom server elicitations. Sub-agents gained path-based addressing like `/root/agent_a` with structured messaging, and the app-server layer grew filesystem RPCs and Python SDK bindings to support these flows. In parallel, model availability shifted—GPT-5.4 and GPT-5.3-Codex launched as the flagship agentic models with 1M context and native computer-use, GPT-5.3-Codex-Spark arrived for real-time coding at 1000+ tokens/second, and older model variants were deprecated for ChatGPT sign-in users. The Codex app itself expanded to Windows with native sandbox support, added thread search, mid-turn steering, conversation forking, and theme customization, while the CLI introduced plugin marketplaces, memory controls with reset/deletion, prompt history with `Ctrl+R`, and dynamic bearer token refresh for custom model providers.","releaseCount":38,"generatedAt":"2026-04-16T13:21:17.839Z"},"monthly":[{"year":2026,"month":3,"summary":"Shipped GPT-5.4 and GPT-5.4 mini models, expanding the inference options available to developers. CLI releases moved through versions 0.112 to 0.118 with steady cadence, while plugin support graduated to a buildable, installable feature. App updates shipped continuously across the month alongside the model rollouts.","releaseCount":19,"generatedAt":"2026-04-07T17:27:22.110Z"}]}}