Custom prompts are now deprecated. Use skills for reusable instructions and workflows instead.
Codex changelog
Latest updates to Codex, OpenAI’s coding agent
January 2026
-
Custom prompts deprecated
-
Codex CLI 0.88.0
$ npm install -g @openai/codex@0.88.0View details
New Features
- Added device-code auth as a standalone fallback in headless environments. (#9333)
Bug Fixes
- Load configs from trusted folders only and fix symlinked
config.tomlresolution. (#9533, #9445) - Fixed Azure endpoint invalid input errors. (#9387)
- Resolved a memory leak in core runtime. (#9543)
- Prevented interrupted turns from repeating. (#9043)
- Fixed WSL TUI image paste regression. (#9473)
Documentation
- Updated MCP documentation link to the current destination. (#9490)
- Corrected a “Multi-agents” naming typo in docs. (#9542)
- Added developer instructions for collaboration modes. (#9424)
Chores
- Upgraded to Rust 1.92 and refreshed core Rust dependencies. (#8860, #9465, #9466, #9467, #9468, #9469)
Changelog
Full Changelog: rust-v0.87.0...rust-v0.88.0
- #9373 fix: flaky tests @jif-oai
- #9333 [device-auth] Add device code auth as a standalone option when headless environment is detected. @mzeng-openai
- #9352 Made
codex exec resume --lastconsistent withcodex resume --last@etraut-openai - #9324 add codex cloud list @nornagon-openai
- #9332 Turn-state sticky routing per turn @aibrahim-oai
- #9364 feat: tool call duration metric @jif-oai
- #8860 chore: upgrade to Rust 1.92.0 @viyatb-oai
- #9385 feat: /fork the current session instead of opening session picker @apanasenko-oai
- #9247 feat(app-server, core): return threads by created_at or updated_at @owenlin0
- #9330 feat: show forked from session id in /status @apanasenko-oai
- #9340 Introduce collaboration modes @aibrahim-oai
- #9328 Support enable/disable skill via config/api. @xl-openai
- #9408 Add collaboration_mode override to turns @aibrahim-oai
- #9400 fix(codex-api): treat invalid_prompt as non-retryable @fouad-openai
- #9401 Defer backtrack trim until rollback confirms @aibrahim-oai
- #9414 fix unified_exec::tests::unified_exec_timeouts to use a more unique match value @ahornby
- #9421 Expose collaboration presets @aibrahim-oai
- #9422 chore(core) Create instructions module @dylan-hurd-oai
- #9423 chore(instructions) Remove unread SessionMeta.instructions field @dylan-hurd-oai
- #9424 Add collaboration developer instructions @aibrahim-oai
- #9425 Preserve slash command order in search @aibrahim-oai
- #9059 tui: allow forward navigation in backtrack preview @slkzgm
- #9443 Add collaboration modes test prompts @aibrahim-oai
- #9457 fix(tui2): running /mcp was not printing any output until another event triggered a flush @bolinfest
- #9445 Fixed symlink support for config.toml @etraut-openai
- #9466 chore(deps): bump log from 0.4.28 to 0.4.29 in /codex-rs @dependabot
- #9467 chore(deps): bump tokio from 1.48.0 to 1.49.0 in /codex-rs @dependabot
- #9468 chore(deps): bump arc-swap from 1.7.1 to 1.8.0 in /codex-rs @dependabot
- #9469 chore(deps): bump ctor from 0.5.0 to 0.6.3 in /codex-rs @dependabot
- #9465 chore(deps): bump chrono from 0.4.42 to 0.4.43 in /codex-rs @dependabot
- #9473 Fixed TUI regression related to image paste in WSL @etraut-openai
- #9382 feat: timer total turn metrics @jif-oai
- #9478 feat: close all threads in
/new@jif-oai - #9477 feat: detach non-tty childs @jif-oai
- #9479 prompt 3 @jif-oai
- #9387 Fix invalid input error on Azure endpoint @etraut-openai
- #9463 Remove unused protocol collaboration mode prompts @aibrahim-oai
- #9487 chore: warning metric @jif-oai
- #9490 Fixed stale link to MCP documentation @etraut-openai
- #9461 TUI: collaboration mode UX + always submit
UserTurnwhen enabled @aibrahim-oai - #9472 Feat: request user input tool @shijie-oai
- #9402 Act on reasoning-included per turn @aibrahim-oai
- #9496 chore: fix beta VS experimental @jif-oai
- #9495 Feat: plan mode prompt update @shijie-oai
- #9451 tui: avoid Esc interrupt when skill popup active @prateek-oai
- #9497 Migrate tui to use UserTurn @aibrahim-oai
- #9427 fix(core) Preserve base_instructions in SessionMeta @dylan-hurd-oai
- #9393 Persist text elements through TUI input and history @charley-oai
- #9407 fix(tui) fix user message light mode background @dylan-hurd-oai
- #9525 chore: collab in experimental @jif-oai
- #9374 nit: do not render terminal interactions if no task running @jif-oai
- #9529 feat: record timer with additional tags @jif-oai
- #9528 feat: metrics on remote models @jif-oai
- #9527 feat: metrics on shell snapshot @jif-oai
- #9533 Only load config from trusted folders @gt-oai
- #9409 feat: support proxy for ws connection @apanasenko-oai
- #9507 Tui: use collaboration mode instead of model and effort @aibrahim-oai
- #9193 fix:
writable_rootsdoesn't recognize home directory symbol in non-windows OS @tiffanycitra - #9542 Fix typo in feature name from 'Mult-agents' to 'Multi-agents' @simonw
- #9459 feat(personality) introduce model_personality config @dylan-hurd-oai
- #9543 fix: memory leak issue @jif-oai
- #9509 Fixed config merging issue with profiles @etraut-openai
- #9043 fix: prevent repeating interrupted turns @swordfish444
- #9553 fix(core): don't update the file's mtime on resume @owenlin0
- #9552 lookup system SIDs instead of hardcoding English strings. @iceweasel-oai
- #9314 fix(windows-sandbox): deny .git file entries under writable roots @MaxMiksa
- #9319 fix(windows-sandbox): parse PATH list entries for audit roots @MaxMiksa
- #9547 merge remote models @aibrahim-oai
- #9545 Add total (non-partial) TextElement placeholder accessors @charley-oai
- #9532 fix(cli): add execute permission to bin/codex.js @zerone0x
- #9162 Improve UI spacing for queued messages @charley-oai
- #9554 Enable remote models @aibrahim-oai
- #9558 queue only when task is working @aibrahim-oai
- #8590 fix(core): require approval for force delete on Windows @hdcodedev
- #9293 [codex-tui] exit when terminal is dumb @jmickey-oai
- #9562 feat(tui2): add /experimental menu @joshka-oai
- #9563 fix: bminor/bash is no longer on GitHub so use bolinfest/bash instead @bolinfest
- #9568 Show session header before configuration @aibrahim-oai
- #9555 feat: rename experimental_instructions_file to model_instructions_file @bolinfest
- #9518 Prompt Expansion: Preserve Text Elements @charley-oai
- #9560 Reject ask user question tool in Execute and Custom @charley-oai
- #9575 feat: add skill injected counter metric @alexsong-oai
- #9578 Feature to auto-enable websockets transport @pakrym-oai
- #9587 fix CI by running pnpm @aibrahim-oai
- #9586 don't ask for approval for
just fix@aibrahim-oai - #9585 Add request-user-input overlay @aibrahim-oai
- #9596 fix going up and down on questions after writing notes @aibrahim-oai
- #9483 feat: max threads config @jif-oai
- #9598 feat: display raw command on user shell @jif-oai
- #9594 Added "codex." prefix to "conversation.turn.count" metric name @etraut-openai
- #9600 feat: async shell snapshot @jif-oai
- #9602 fix: nit tui on terminal interactions @jif-oai
- #9551 nit: better collab tui @jif-oai
-
Codex CLI 0.87.0
$ npm install -g @openai/codex@0.87.0View details
New Features
- User message metadata (text elements and byte ranges) now round-trips through protocol/app-server/core so UI annotations can survive history rebuilds. (#9331)
- Collaboration wait calls can block on multiple IDs in one request, simplifying multi-thread coordination. (#9294)
- User shell commands now run under the user snapshot so aliases and shell config are honored. (#9357)
- The TUI now surfaces approval requests from spawned/unsubscribed threads. (#9232)
Bug Fixes
- Token estimation during compaction is now accurate, improving budgeting during long sessions. (#9337)
- MCP CallToolResult now includes
threadIdin bothcontentandstructuredContent, and returns a defined output schema for compatibility. (#9338) - The TUI “Worked for” separator only appears after actual work has occurred. (#8958)
- Piped non-PTY commands no longer hang waiting on stdin. (#9369)
Documentation
- MCP interface docs updated to reflect structured output schema and
threadIdbehavior. (#9338)
Chores
- Windows builds enable the PowerShell UTF-8 feature by default. (#9195)
Changelog
Full Changelog: rust-v0.86.0...rust-v0.87.0
- #9331 Add text element metadata to protocol, app server, and core @charley-oai
- #9195 chore(windows) Enable Powershell UTF8 feature @dylan-hurd-oai
- #8958 fix(tui): only show 'Worked for' separator when actual work was performed @ThanhNguyxn
- #9338 fix(mcp): include threadId in both content and structuredContent in CallToolResult @bolinfest
- #9337 Fix token estimate during compaction @etraut-openai
- #9336 rename model turn to sampling request @aibrahim-oai
- #9232 feat: propagate approval request of unsubscribed threads @jif-oai
- #9357 feat: run user commands under user snapshot @jif-oai
- #9294 feat: collab wait multiple IDs @jif-oai
- #9366 feat: CODEX_CI @jif-oai
- #9367 prompt collab @jif-oai
- #9369 chore: close pipe on non-pty processes @jif-oai
-
Codex CLI 0.86.0
$ npm install -g @openai/codex@0.86.0View details
New Features
- Skill metadata can now be defined in
SKILL.toml(names, descriptions, icons, brand color, default prompt) and surfaced in the app server and TUI (#9125) - Clients can explicitly disable web search and signal eligibility via a header to align with server-side rollout controls (#9249)
Bug Fixes
- Accepting an MCP elicitation now sends an empty JSON payload instead of null to satisfy servers expecting content (#9196)
- Input prompt placeholder styling is back to non-italic to avoid terminal rendering issues (#9307)
- Empty paste events no longer trigger clipboard image reads (#9318)
- Unified exec cleans up background processes to prevent late End events after listeners stop (#9304)
Chores
- Refresh the orchestrator prompt to improve internal routing behavior (#9301)
- Reduce noisy
needs_follow_uperror logging (#9272)
Changelog
Full Changelog: rust-v0.85.0...rust-v0.86.0
- #9301 chore: better orchestrator prompt @jif-oai
- #9304 nit: clean unified exec background processes @jif-oai
- #9307 Revert recent styling change for input prompt placeholder text @etraut-openai
- #9125 Support SKILL.toml file. @xl-openai
- #9249 [search] allow explicitly disabling web search @sayan-oai
- #9272 remove needs_follow_up error log @pap-openai
- #9318 Revert empty paste image handling @aibrahim-oai
- #9196 fix: send non-null content on elicitation Accept @yuvrajangadsingh
- Skill metadata can now be defined in
-
Codex CLI 0.85.0
$ npm install -g @openai/codex@0.85.0View details
New Features
- App-server v2 now emits collaboration tool calls as item events in the turn stream, so clients can render agent coordination in real time. (#9213)
- Collaboration tools gained richer agent control:
spawn_agentaccepts an agent role preset, andsend_inputcan optionally interrupt a running agent before delivering the message. (#9275, #9276) /modelsmetadata now includes upgrade migration markdown so clients can display richer guidance when suggesting model upgrades. (#9219)
Bug Fixes
- [revert] Linux sandboxing now falls back to Landlock-only restrictions when user namespaces are unavailable, and sets
no_new_privsbefore applying sandbox rules. (#9250) codex resume --lastnow respects the current working directory, with--allas an explicit override. (#9245)- Stdin prompt decoding now handles BOMs/UTF-16 and provides clearer errors for invalid encodings. (#9151)
Changelog
Full Changelog: rust-v0.84.0...rust-v0.85.0
- #9219 Add
migration_markdowninmodel_info@aibrahim-oai - #9250 fix: fallback to Landlock-only when user namespaces unavailable and set PR_SET_NO_NEW_PRIVS early @viyatb-oai
- #9213 feat: collab tools app-server event mapping @jif-oai
- #9275 feat: add agent roles to collab tools @jif-oai
- #9276 feat: add interrupt capabilities to
send_input@jif-oai - #9209 feat: basic tui for event emission @jif-oai
- #9245 Changed
codex resume --lastto honor the current cwd @etraut-openai - #9207 Propagate MCP disabled reason @gt-oai
- #9151 fix(exec): improve stdin prompt decoding @liqiongyu
- #9300 revert: remove pre-Landlock bind mounts apply @viyatb-oai
-
Codex CLI 0.84.0
$ npm install -g @openai/codex@0.84.0View details
New Features
- Extend the Rust protocol/types to include additional metadata on text elements, enabling richer client rendering and schema evolution (#9235)
Chores
- Reduce flaky Rust release pipelines (notably on Windows) by increasing the release build job timeout (#9242)
Changelog
Full Changelog: rust-v0.83.0...rust-v0.84.0
- #9242 fix: increase timeout for release builds from 30 to 60 minutes @bolinfest
- #9235 Add text element metadata to types @charley-oai
-
GPT-5.2-Codex API availability
GPT-5.2-Codex is now available in the API and for users who sign into Codex with the API.
To learn more about using GPT-5.2-Codex check out our API documentation.
-
Codex CLI 0.81.0
$ npm install -g @openai/codex@0.81.0View details
New Features
- Default API model moved to gpt-5.2-codex. (#9188)
- The
codextool incodex mcp-servernow includes thethreadIdin the response so it can be used with thecodex-replytool, fixing #3712. The documentation has been updated at https://developers.openai.com/codex/guides/agents-sdk/. (#9192) - Headless runs now switch to device-code login automatically so sign-in works without a browser. (#8756)
- Linux sandbox can mount paths read-only to better protect files from writes. (#9112)
- Support partial tool calls rendering in
tui
Bug Fixes
- Alternate-screen handling now avoids breaking Zellij scrollback and adds a config/flag to control it. (#8555)
- Windows correctly prompts before unsafe commands when running with a read-only sandbox policy. (#9117)
- Config.toml and rules parsing errors are reported to app-server clients/TUI instead of failing silently. (#9182, #9011)
- Worked around a macOS system-configuration crash in proxy discovery. (#8954)
- Invalid user image uploads now surface an error instead of being silently replaced. (#9146)
Documentation
- Published a generated JSON Schema for
config.tomlindocs/to validate configs. (#8956) - Documented the TUI paste-burst state machine for terminals without reliable bracketed paste. (#9020)
Chores
Changelog
Full Changelog: rust-v0.80.0...rust-v0.81.0
- #8756 [device-auth] When headless environment is detected, show device login flow instead. @mzeng-openai
- #8930 feat: first pass on clb tool @jif-oai
- #8966 nit: rename session metric @jif-oai
- #8969 chore: non mutable btree when building specs @jif-oai
- #8968 chore: move otel provider outside of trace module @jif-oai
- #8973 chore: add mcp call metric @jif-oai
- #8970 chore: add approval metric @jif-oai
- #8975 chore: metrics tool call @jif-oai
- #8901 chore: update metrics temporality @jif-oai
- #8954 Work around crash in system-configuration library @etraut-openai
- #8873 fix(app-server): set originator header from initialize JSON-RPC request @owenlin0
- #8909 Add config to disable /feedback @gt-oai
- #8985 chore: nuke telemetry file @jif-oai
- #8986 Revert "fix(app-server): set originator header from initialize JSON-RPC request" @jif-oai
- #8978 nit: rename to analytics_enabled @jif-oai
- #8963 renaming: task to turn @jif-oai
- #8555 fix: add tui.alternate_screen config and --no-alt-screen CLI flag for Zellij scrollback @hjanuschka
- #8875 feat: add support for building with Bazel @zbarsky-openai
- #8988 fix(app-server): set originator header from initialize (re-revert) @owenlin0
- #8766 fix: harden arg0 helper PATH handling @viyatb-oai
- #8949 Log unhandled sse events @pakrym-oai
- #8996 Add hierarchical agent prompt @pakrym-oai
- #9003 Delete announcement_tip.toml @pakrym-oai
- #8940 Refactor remote models tests to use TestCodex builder @aibrahim-oai
- #8981 Add model provider info to /status if non-default @gt-oai
- #8984 Add URL to responses error messages @gt-oai
- #9008 fix: add .git to .bazelignore @bolinfest
- #9010 fix: include AGENTS.md as repo root marker for integration tests @bolinfest
- #8950 Label attached images so agent can understand in-message labels @charley-oai
- #9032 Revert "Delete announcement_tip.toml" @jif-oai
- #9018 fix: support remote arm64 builds, as well @zbarsky-openai
- #8983 feat: testing harness for collab 1 @jif-oai
- #9088 feat: add wait tool implementation for collab @jif-oai
- #9090 feat: add close tool implementation for collab @jif-oai
- #8971 add static mcp callback uri support @WhammyLeaf
- #9099 nit: add docstring @jif-oai
- #8994 feat: wire fork to codex cli @apanasenko-oai
- #9071 chore(deps): bump tui-scrollbar from 0.2.1 to 0.2.2 in /codex-rs @dependabot
- #9072 chore(deps): bump ts-rs from 11.0.1 to 11.1.0 in /codex-rs @dependabot
- #9074 chore(deps): bump which from 6.0.3 to 8.0.0 in /codex-rs @dependabot
- #9075 chore(deps): bump clap from 4.5.53 to 4.5.54 in /codex-rs @dependabot
- #9076 chore(deps): bump tokio-util from 0.7.16 to 0.7.18 in /codex-rs @dependabot
- #8957 feat: hot reload mcp servers @shijie-oai
- #9107 Remove unused conversation_id header @pakrym-oai
- #9080 Add some tests for image attachments @charley-oai
- #9114 Extract single responses SSE event parsing @pakrym-oai
- #8961 Assemble sandbox/approval/network prompts dynamically @aibrahim-oai
- #9102 Add model client sessions @pakrym-oai
- #8246 fix(tui): show in-flight coalesced tool calls in transcript overlay @Chriss4123
- #9127 Reuse websocket connection @pakrym-oai
- #9117 fix: prompt for unsafe commands on Windows @bolinfest
- #9128 Websocket append support @pakrym-oai
- #9077 Send message by default mid turn. queue messages by tab @aibrahim-oai
- #9049 Handle image paste from empty paste events @aibrahim-oai
- #8952 Use markdown for migration screen @aibrahim-oai
- #9109 Updated heuristic for tool call summary to detect file modifications @etraut-openai
- #9138 Show tab queue hint in footer @aibrahim-oai
- #9140 Use thread rollback for Esc backtrack @aibrahim-oai
- #9143 chore: better error handling on collab tools @jif-oai
- #9147 nit: collab send input cleaning @jif-oai
- #9129 Support response.done and add integration tests @pakrym-oai
- #8798 ollama: default to Responses API for built-ins @drifkin
- #8956 add generated jsonschema for config.toml @sayan-oai
- #9122 Fix queued messages during /review @charley-oai
- #9126 fix: drop session span at end of the session @apanasenko-oai
- #9101 Restrict MCP servers from
requirements.toml@gt-oai - #9020 fix(tui): document paste-burst state machine @joshka-oai
- #9118 feat(app-server): add an --analytics-default-enabled flag @owenlin0
- #9130 Fresh tooltips @mzeng-openai
- #9134 fix(windows-sandbox-rs) bump SETUP_VERSION @dylan-hurd-oai
- #9121 test(tui): add deterministic paste-burst tests @joshka-oai
- #8661 Fix spinner/Esc interrupt when MCP startup completes mid-turn @2mawi2
- #9165 Allow close skill popup with esc. @xl-openai
- #9169 Fix flakiness in WebSocket tests @pakrym-oai
- #9011 fix: report an appropriate error in the TUI for malformed rules @bolinfest
- #9166 fix: integration test for #9011 @bolinfest
- #9177 feat: add bazel-codex entry to justfile @bolinfest
- #9175 WebSocket test server script @pakrym-oai
- #9136 Update models.json @github-actions
- #9168 clean models manager @aibrahim-oai
- #8933 [CODEX-4427] improve parsed commands @aibrahim-oai
- #9174 Renew cache ttl on etag match @aibrahim-oai
- #9124 fix(tui): harden paste-burst state transitions @joshka-oai
- #9186 Use offline cache for tui migrations @aibrahim-oai
- #9182 Improve handling of config and rules errors for app server clients @etraut-openai
- #8997 chore: clarify default shell for unified_exec @sayan-oai
- #9192 feat: add threadId to MCP server messages @bolinfest
- #9188 change api default model @aibrahim-oai
- #9150 feat: add sourcing of rc files to shell snapshot @jif-oai
- #9155 fix: shell snapshot clean-up @jif-oai
- #9146 feat: return an error if the image sent by the user is a bad image @jif-oai
- #9197 feat: only source shell snapshot if the file exists @jif-oai
- #9145 fix: drop double waiting header in TUI @jif-oai
- #9194 Render exec output deltas inline @aibrahim-oai
- #9156 chore: clamp min yield time for empty write_stdin @jif-oai
- #9105 feat: add auto refresh on thread listeners @jif-oai
- #9112 feat: add support for read-only bind mounts in the linux sandbox @viyatb-oai
- #9179 Use current model for review @pakrym-oai
-
Codex CLI 0.80.0
$ npm install -g @openai/codex@0.80.0View details
New Features
- Add conversation/thread fork endpoints in the protocol and app server so clients can branch a session into a new thread. (#8866)
- Expose requirements via
requirement/listso clients can readrequirements.tomland adjust agent-mode UX. (#8800) - Introduce metrics capabilities with additional counters for observability. (#8318, #8910)
- Add elevated sandbox onboarding with prompts for upgrade/degraded mode plus the
/elevate-sandboxcommand. (#8789) - Allow explicit skill invocations through v2 API user input. (#8864)
Bug Fixes
- Codex CLI subprocesses again inherit env vars like
LD_LIBRARY_PATH/DYLD_LIBRARY_PATHto avoid runtime issues. As explained in #8945, failure to pass along these environment variables to subprocesses that expect them (notably GPU-related ones), was causing 10x+ performance regressions! Special thanks to @johnzfitch for the detailed investigation and write-up in #8945. (#8951) /review <instructions>in TUI/TUI2 now launches the review flow instead of sending plain text. (#8823)- Patch approval “allow this session” now sticks for previously approved files. (#8451)
- Model upgrade prompt now appears even if the current model is hidden from the picker. (#8802)
- Windows paste handling now supports non-ASCII multiline input reliably. Special thanks to @occurrent laying the groundwork for this fix in #8021! (#8774)
- Git apply path parsing now handles quoted/escaped paths and
/dev/nullcorrectly to avoid misclassified changes. (#8824)
Documentation
- App-server README now documents skills support and usage. (#8853)
- Skill-creator docs clarify YAML frontmatter formatting and quoting rules. (#8610)
Changelog
Full Changelog: rust-v0.79.0...rust-v0.80.0
- #8734 fix: do not propose to add multiline commands to execpolicy @tibo-openai
- #8802 Enable model upgrade popup even when selected model is no longer in picker @charley-oai
- #8805 chore: stabilize core tool parallelism test @tibo-openai
- #8820 chore: silent just fmt @jif-oai
- #8824 fix: parse git apply paths correctly @tibo-openai
- #8823 fix: handle /review arguments in TUI @tibo-openai
- #8822 chore: rename unified exec sessions @jif-oai
- #8825 fix: handle early codex exec exit @tibo-openai
- #8830 chore: unify conversation with thread name @jif-oai
- #8840 Move tests below auth manager @pakrym-oai
- #8845 fix: upgrade lru crate to 0.16.3 @bolinfest
- #8763 Merge Modelfamily into modelinfo @aibrahim-oai
- #8842 remove unnecessary todos @aibrahim-oai
- #8846 Stop using AuthManager as the source of codex_home @pakrym-oai
- #8844 Fix app-server
write_models_cacheto treat models with less priority number as higher priority. @aibrahim-oai - #8850 chore: drop useless feature flags @jif-oai
- #8848 chore: drop some deprecated @jif-oai
- #8853 [chore] update app server doc with skills @celia-oai
- #8451 fix: implement 'Allow this session' for apply_patch approvals @owenlin0
- #8856 Override truncation policy at model info level @aibrahim-oai
- #8849 Simplify error managment in
run_turn@aibrahim-oai - #8767 Add feature for optional request compression @cconger
- #8610 Clarify YAML frontmatter formatting in skill-creator @darlingm
- #8847 Warn in /model if BASE_URL set @gt-oai
- #8801 Support symlink for skills discovery. @xl-openai
- #8800 Feat: appServer.requirementList for requirement.toml @shijie-oai
- #8861 fix: update resource path resolution logic so it works with Bazel @bolinfest
- #8868 fix: use tokio for I/O in an async function @bolinfest
- #8867 add footer note to TUI @iceweasel-oai
- #8879 feat: introduce find_resource! macro that works with Cargo or Bazel @bolinfest
- #8864 Support UserInput::Skill in V2 API. @xl-openai
- #8876 add ability to disable input temporarily in the TUI. @iceweasel-oai
- #8884 fix: make the find_resource! macro responsible for the absolutize() call @bolinfest
- #8774 fix: windows can now paste non-ascii multiline text @dylan-hurd-oai, @occurrent
- #8855 chore: add list thread ids on manager @jif-oai
- #8318 feat: metrics capabilities @jif-oai
- #8826 fix: stabilize list_dir pagination order @tibo-openai
- #8892 chore: drop metrics exporter config @jif-oai
- #8896 chore: align error limit comment @tibo-openai
- #8899 fix: include project instructions in /review subagent @tibo-openai
- #8894 chore: add small debug client @jif-oai
- #8888 fix: leverage find_resource! macro in load_sse_fixture_with_id @bolinfest
- #8691 Avoid setpgid for inherited stdio on macOS @seeekr
- #8887 fix: leverage codex_utils_cargo_bin() in codex-rs/core/tests/suite @bolinfest
- #8907 chore: drop useless interaction_input @jif-oai
- #8903 nit: drop unused function call error @jif-oai
- #8910 feat: add a few metrics @jif-oai
- #8911 gitignore bazel-* @zbarsky-openai
- #8843 config requirements: improve requirement error messages @gt-oai
- #8914 fix: reduce duplicate include_str!() calls @bolinfest
- #8902 feat: add list loaded threads to app server @jif-oai
- #8870 [fix] app server flaky thread/resume tests @celia-oai
- #8916 clean: all history cloning @jif-oai
- #8915 otel test: retry WouldBlock errors @gt-oai
- #8792 Update models.json @github-actions
- #8897 fix: preserve core env vars on Windows @tibo-openai
- #8913 Add
read-onlywhen backfilling requirements from managed_config @gt-oai - #8926 add tooltip hint for shell commands (!) @fps7806
- #8857 Immutable CodexAuth @pakrym-oai
- #8927 nit: parse_arguments @jif-oai
- #8932 fix: increase timeout for tests that have been flaking with timeout issues @bolinfest
- #8931 fix: correct login shell mismatch in the accept_elicitation_for_prompt_rule() test @bolinfest
- #8874 [fix] app server flaky send_messages test @celia-oai
- #8866 feat: fork conversation/thread @apanasenko-oai
- #8858 remove
get_responses_requestsandget_responses_request_bodiesto use in-place matcher @aibrahim-oai - #8939 [chore] move app server tests from chat completion to responses @celia-oai
- #8880 Attempt to reload auth as a step in 401 recovery @pakrym-oai
- #8946 fix: increase timeout for wait_for_event() for Bazel @bolinfest
- #8789 Elevated sandbox NUX @iceweasel-oai
- #8917 fix: treat null MCP resource args as empty @tibo-openai
- #8942 Add 5s timeout to models list call + integration test @aibrahim-oai
- #8951 fix: remove existing process hardening from Codex CLI @bolinfest
-
Codex CLI 0.79.0
$ npm install -g @openai/codex@0.79.0View details
New Features
- Add multi-conversation “agent control” so a session can spawn or message other conversations programmatically (#8783, #8788)
- Add app-server
thread/rollbackso IDE clients can undo the last N turns without rewriting history (#8454) - Add
web_search_cachedto enable cached-only Web Search results as a safer alternative to live requests (#8795) - Allow global exec flags (model/json/sandbox toggles, etc.) to be passed after
codex exec resume(#8440) - Show time/version-targeted announcement tips in the TUI, driven by a TOML file in the repo (#8752)
- Add an
[analytics] enabled=...config section to control analytics behavior (#8350)
Bug Fixes
- Fix TUI2 transcripts so streamed markdown reflows on resize and copy/paste preserves soft wraps (#8761)
- Make
apply_patchparsing tolerant of whitespace-padded*** Begin Patch/*** End Patchmarkers (#8746) - Render paths relative to the current working directory before checking git roots, improving output in non-git workspaces (#8771)
- Prevent
CODEX_MANAGED_CONFIG_PATHfrom overriding managed config in production, closing a policy bypass (#8762) - Ensure app-server conversations respect the config passed in by the client (#8765)
- Reduce TUI UX glitches: suppress popups when browsing input history, fix copy “pill” rendering, and clear background terminals on interrupt (#8772, #8777, #8786)
Documentation
- Clarify onboarding/login guidance for headless/remote setups by steering users to
codex login --device-auth(#8753) - Update model examples used in tooling/config to current
gpt-5.2naming (#8566)
Chores
- Refactor skills discovery to use the config layer stack so all configured skill folders are considered (#8497)
- Auto-populate GitHub release notes at release creation time (#8799)
- Add more
apply_patchtest scenarios to harden coverage (#8230) - Tweak unified exec event emission to only send “begin” when a PTY is present (#8780)
Changelog
Full Changelog: rust-v0.78.0...rust-v0.79.0
- #8753 [device-auth] Update login instruction for headless environments. @mzeng-openai
- #8497 Use ConfigLayerStack for skills discovery. @xl-openai
- #8440 Allow global exec flags after
resumeand fix CI codex build/timeout @fjord-oai - #8230 chore(apply-patch) additional scenarios @dylan-hurd-oai
- #8746 fix: accept whitespace-padded patch markers @tibo-openai
- #8761 tui2: stop baking streaming wraps; reflow agent markdown @joshka-oai
- #8771 fix: render cwd-relative paths in tui @joshka-oai
- #8770 fix: fix readiness subscribe token wrap-around @tibo-openai
- #8780 chore: emit unified exec begin only when PTY exist @jif-oai
- #8762 fix: stop honoring CODEX_MANAGED_CONFIG_PATH environment variable in production @bolinfest
- #8566 fix: update model examples to gpt-5.2 @seuros
- #8735 feat: add head-tail buffer for
unified_exec@jif-oai - #8331 chore: add model/list call to app-server-test-client @owenlin0
- #8752 feat: forced tool tips @jif-oai
- #8786 chore: clear background terminals on interrupt @jif-oai
- #8350 feat: add analytics config setting @JaviSoto
- #8783 feat: agent controller @jif-oai
- #8772 suppress popups while browsing input history @xl-openai
- #8777 Clear copy pill background and add snapshot test @joshka-oai
- #8788 feat: drop agent bus and store the agent status in codex directly @jif-oai
- #8454 feat(app-server): thread/rollback API @owenlin0
- #8765 [app-server] fix config loading for conversations @celia-oai
- #8795 add web_search_cached flag @sayan-oai
- #8799 fix: populate the release notes when the release is created @bolinfest
-
Codex CLI 0.78.0
$ npm install -g @openai/codex@0.78.0View details
New Features
- Add
Ctrl+Gto open the current prompt in your configured external editor ($VISUAL/$EDITOR) and sync edits back into the TUI. (#7606) - Support project-aware config layering: load repo-local
.codex/config.toml, honor configurableproject_root_markers, and merge that with system config like/etc/codex/config.toml. (#8354, #8359, #8461) - Support enterprise-managed configuration requirements on macOS via an MDM-provided TOML payload. (#8743)
- Improve
tui2transcript navigation with multi-click selection, a copy shortcut/affordance, and a draggable auto-hiding scrollbar. (#8462, #8471, #8728) - Start Windows PowerShell sessions in UTF-8 mode to reduce encoding-related prompt/output issues. (#7902)
- Exec policy rules can now include human-readable justifications, and policy loading follows the unified config-layer stack. (#8349, #8453, #8751)
Bug Fixes
- Fix failures when the model returns multiple tool calls in a single turn by emitting tool calls in the format the Chat Completions API expects. (#8556)
- Make
/reviewcompute diffs from the session’s working directory so base-branch detection works correctly with runtime cwd overrides. (#8738) - Handle the legacy Chat Completions streaming terminator cleanly to avoid spurious SSE parse errors. (#8708)
- Fix a set of
tui2rendering/input edge cases (screen corruption, scroll stickiness, and selection/copy correctness). (#8463, #8695, #8449) - Improve diagnostics when
ripgrepdownload fails during CLI packaging so failures are easier to debug. (#8486) - Avoid a panic when parsing alpha/stable version strings. (#8406)
Documentation
- Replace and de-duplicate user docs with links to the developer documentation site (including skills docs). (#8662, #8407)
- Clarify configuration documentation, including the
developer_instructionsoption. (#8376, #8701) - Fix broken README links. (#8682)
Chores
- Performance tuning for TUIs: cap redraw scheduling and reduce unnecessary rerenders during streaming to lower CPU usage. (#8499, #8681, #8693)
- Update Rust dependencies across
codex-rs. (#8414, #8596, #8597)
Changelog
Full Changelog: rust-v0.77.0...rust-v0.78.0
- #8407 Point skills docs to developer documentation site @etraut-openai
- #8406 fix: do not panic on alphas @aibrahim-oai
- #8091 Update ghost_commit flag reference to undo @charlie-openai
- #8423 test(tui2): re-enable ANSI for VT100 tests @joshka-oai
- #8419 fix(tui2): constrain transcript mouse selection bounds @joshka-oai
- #8424 chore: un-ship undo @jif-oai
- #8376 docs: add
developer_instructionsconfig option and update descriptions @448523760 - #8431 chore: drop undo from the docs @jif-oai
- #8410 chore(deps): bump peter-evans/create-pull-request from 7 to 8 @dependabot
- #8412 chore(deps): bump test-log from 0.2.18 to 0.2.19 in /codex-rs @dependabot
- #8413 chore(deps): bump landlock from 0.4.2 to 0.4.4 in /codex-rs @dependabot
- #8414 chore(deps): bump clap from 4.5.47 to 4.5.53 in /codex-rs @dependabot
- #8416 chore(deps): bump openssl-sys from 0.9.109 to 0.9.111 in /codex-rs @dependabot
- #7902 feat(windows) start powershell in utf-8 mode @dylan-hurd-oai
- #8349 Add ExecPolicyManager @pakrym-oai
- #8354 feat: support in-repo .codex/config.toml entries as sources of config info @bolinfest
- #8359 feat: add support for project_root_markers in config.toml @bolinfest
- #8395 Handle concatenation nodes in bash command parser for exec policy @ivanmurashko
- #8446 Update models.json @github-actions
- #8444 use a junction for the cwd while read ACLs are being applied @iceweasel-oai
- #8447 remove minimal client version @aibrahim-oai
- #8448 chore: add ConfigLayerStack as a field of Config @bolinfest
- #7606 feat: open prompt in configured external editor @sayan-oai
- #8449 fix(tui2): copy transcript selection outside viewport @joshka-oai
- #8418 chore(tui): include tracing targets in file logs @joshka-oai
- #8456 chore: include User layer in ConfigLayerStack even if config.toml is empty @bolinfest
- #8453 feat: load ExecPolicyManager from ConfigLayerStack @bolinfest
- #8462 feat(tui2): add copy selection shortcut + UI affordance @joshka-oai
- #8461 feat: honor /etc/codex/config.toml @bolinfest
- #8463 fix(tui2): fix screen corruption @joshka-oai
- #8458 chore: save more about turn context in rollout log file @apanasenko-oai
- #8466 fix(tui2): start transcript selection on drag @joshka-oai
- #8293 [tui] add optional details to TUI status header @sayan-oai
- #8471 feat(tui2): add multi-click transcript selection @joshka-oai
- #8486 fix(codex-cli): improve ripgrep download diagnostics @joshka-oai
- #8460 fix: limit output size for exec command in unified exec @shijie-oai
- #8493 fix: fix test that was writing temp file to cwd instead of TMPDIR @bolinfest
- #8484 Remove reasoning format @aibrahim-oai
- #8499 perf(tui): cap redraw scheduling to 60fps @joshka-oai
- #8496 feat: introduce codex-utils-cargo-bin as an alternative to assert_cmd::Command @bolinfest
- #8498 fix: declare test path relative to
$CARGO_MANIFEST_DIR@bolinfest - #8307 [chore] add additional_details to StreamErrorEvent + wire through @sayan-oai
- #8522 fix: restrict windows-sys to Windows target @RunjiLiu
- #8595 chore(deps): bump toml_edit from 0.23.7 to 0.24.0+spec-1.1.0 in /codex-rs @dependabot
- #8596 chore(deps): bump tracing-subscriber from 0.3.20 to 0.3.22 in /codex-rs @dependabot
- #8597 chore(deps): bump tokio from 1.47.1 to 1.48.0 in /codex-rs @dependabot
- #8598 chore(deps): bump regex-lite from 0.1.7 to 0.1.8 in /codex-rs @dependabot
- #8491 Refresh on models etag mismatch @aibrahim-oai
- #8483 use a SandboxUsers group for ACLs instead of granting to each sandbox user separately @iceweasel-oai
- #8676 Log compaction request bodies @pakrym-oai
- #8488 Remove model family from tui @aibrahim-oai
- #8662 Replaced user documentation with links to developers docs site @etraut-openai
- #8681 perf(tui2): reduce unnecessary redraws @joshka-oai
- #8682 Fixed broken link in README @etraut-openai
- #8677 Account for last token count on resume @aibrahim-oai
- #8687 hard disable remote models refresh when feature is disabled @aibrahim-oai
- #8415 chore(deps): bump tracing-opentelemetry from 0.31.0 to 0.32.0 in /codex-rs @dependabot
- #8688 Attach more tags to feedback submissions @pakrym-oai
- #8701 chore: update outdated docs @tibo-openai
- #8693 perf(tui2): cache transcript view rendering @joshka-oai
- #8697 fix: brighten transcript copy affordance @joshka-oai
- #8629 ci: prevent workflows from running on forks @leezenn
- #8695 fix(tui2): avoid scroll stickiness at cell boundaries @joshka-oai
- #8716 fix(tui2): render copy pill at viewport bottom @joshka-oai
- #8718 tui2: copy selection dismisses highlight @joshka-oai
- #8721 chore(deps): bump clap_complete from 4.5.57 to 4.5.64 in /codex-rs @dependabot
- #8723 chore(deps): bump tokio-stream from 0.1.17 to 0.1.18 in /codex-rs @dependabot
- #8724 chore(deps): bump derive_more from 2.0.1 to 2.1.1 in /codex-rs @dependabot
- #8725 chore(deps): bump insta from 1.44.3 to 1.46.0 in /codex-rs @dependabot
- #8556 fix: chat multiple tool calls @jif-oai
- #8738 fix: /review to respect session cwd @tibo-openai
- #8694 [MCP] Sanitize MCP tool names to ensure they are compatible with the Responses APO @gpeal
- #8728 feat(tui2): transcript scrollbar (auto-hide + drag) @joshka-oai
- #8708 fix(codex-api): handle Chat Completions DONE sentinel @joshka-oai
- #8743 (MacOS) Load config requirements from MDM @gt-oai
- #8377 feat: expose outputSchema to user_turn/turn_start app_server API @apanasenko-oai
- #8747 chore: GH pager @jif-oai
- #8686 better idempotency for creating/updating firewall rules during setup. @iceweasel-oai
- #8683 never let sandbox write to .codex/ or .codex/.sandbox/ @iceweasel-oai
- #8459 chore: improve skills render section @gverma-openai
- #7858 Use issuer URL in device auth prompt link @abrar71
- #8492 best effort to "hide" Sandbox users @iceweasel-oai
- #8751 feat: add justification arg to prefix_rule() in *.rules @bolinfest
- Add
December 2025
-
Codex CLI 0.77.0
$ npm install -g @openai/codex@0.77.0View details
New Features
- TUI2: Normalize mouse wheel + trackpad scrolling across terminals; add
tui.scroll_*config settings (PR #8357) - Add
allowed_sandbox_modestorequirements.tomlto constrain permitted sandbox modes (PR #8298) - MCP: OAuth login for streamable HTTP MCP servers no longer requires the
rmcp_clientfeature flag (PR #8087) - Improve fuzzy file search display/consistency by centralizing file-name derivation in
codex-file-search(PR #8334) - Update bundled model metadata (
models.json) (PR #8168)
Bug Fixes
- Fix
/undointeracting destructively with git staging / ghost commits (PR #8303) - TUI2: Reduce redundant redraws while scrolling transcripts (PR #8295)
- Docs: Fix link to
contributing.mdinexperimental.md(PR #8311)
Full Changelog: rust-v0.76.0...rust-v0.77.0
Changelog (PRs merged in this tag range)
- #8374 Remove plan from system skills: #8374
- #8357 TUI2 scroll normalization + config knobs: #8357
- #8353 Thread config loading now receives cwd (internal plumbing): #8353
- #8346 Rename “OpenAI models” to “models manager” (internal refactor): #8346
- #8345 Bump cargo-deny-action version (CI): #8345
- #8334 Move file-name derivation into codex-file-search: #8334
- #8333 Enable resume_warning suite module (test coverage / wiring fix): #8333
- #8330 Make ConstraintError an enum (more structured errors): #8330
- #8303 Fix /undo staging interaction: #8303
- #8298 Add allowed_sandbox_modes in requirements.toml: #8298
- #8295 Coalesce transcript scroll redraws (TUI2 performance): #8295
- #8168 Update models.json: #8168
- #8087 Remove rmcp_client feature flag usage (no longer needed for OAuth login): #8087
- #8311 Fix docs link in experimental.md: #8311
- TUI2: Normalize mouse wheel + trackpad scrolling across terminals; add
-
Agent skills in Codex
Codex now supports agent skills: reusable bundles of instructions (plus optional scripts and resources) that help Codex reliably complete specific tasks.
Skills are available in both the Codex CLI and IDE extensions.
You can invoke a skill explicitly by typing
$skill-name(for example,$skill-installeror the experimental$create-planskill after installing it), or let Codex select a skill automatically based on your prompt.Learn more in the skills documentation.




Folder-based standard (agentskills.io)
Following the open agent skills specification, a skill is a folder with a required
SKILL.mdand optional supporting files:my-skill/ SKILL.md # Required: instructions + metadata scripts/ # Optional: executable code references/ # Optional: documentation assets/ # Optional: templates, resourcesInstall skills per-user or per-repo
You can install skills for just yourself in
~/.codex/skills, or for everyone on a project by checking them into.codex/skillsin the repository.Codex also ships with a few built-in system skills to get started, including
$skill-creatorand$skill-installer. The$create-planskill is experimental and needs to be installed (for example:$skill-installer install the create-plan skill from the .experimental folder).Curated skills directory
Codex ships with a small curated set of skills inspired by popular workflows at OpenAI. Install them with
$skill-installer, and expect more over time. -
Codex CLI 0.76.0
$ npm install -g @openai/codex@0.76.0View details
New Features
- Add a macOS DMG build target (PR #8207)
- Improve terminal detection metadata for per-terminal scroll tuning (PR #8252)
- UI tweaks on the skills popup (PR #8250)
- TUI search cell rendering improvements (PR #8273)
- Add /ps command (PR #8279)
- Add support for /etc/codex/requirements.toml on UNIX (PR #8277)
- Support shortDescription for skills (PR #8278, PR #8301)
- Add model list UI (PR #8286)
- Add app-server v2 deprecation notice event (PR #8285)
- Introduce ExternalSandbox policy (PR #8290)
- Skills default on (PR #8297)
- Support admin-scoped skills (PR #8296)
- Update bundled system skills (PR #8253, PR #8328)
- Set exclude default to true in app server (PR #8281)
Bug Fixes
- Ensure pipes work in restricted sandbox tokens (PR #8280)
- Grant read ACL to the command-runner directory earlier (PR #8275)
- Fix duplicate shell_snapshot FeatureSpec regression (PR #8274)
- Fix sandbox-state update ordering by switching to request (PR #8142)
PRs Merged
- #8328 Update system skills from OSS repo
- #8325 Revert "Keep skills feature flag default OFF for windows."
- #8308 Keep skills feature flag default OFF for windows.
- #8305 Fix admin skills.
- #8301 Add short descriptions to system skills
- #8299 Fix tests
- #8297 skills feature default on.
- #8296 Support admin scope skills.
- #8290 feat: introduce ExternalSandbox policy
- #8288 chore: upgrade rmcp crate from 0.10.0 to 0.12.0
- #8286 model list
- #8285 feat(app-server): add v2 deprecation notice
- #8282 fix: flaky tests 5
- #8281 Set exclude to true by default in app server
- #8280 add a default dacl to restricted token to enable reading of pipes
- #8279 feat: add /ps
- #8278 Support skills shortDescription.
- #8277 feat: add support for /etc/codex/requirements.toml on UNIX
- #8276 chore: migrate from Config::load_from_base_config_with_overrides to ConfigBuilder
- #8275 grant read ACL to exe directory first so we can call the command runner
- #8274 fix: remove duplicate shell_snapshot FeatureSpec
- #8273 tui: improve rendering of search cell
- #8271 use mainline version as baseline in ci
- #8257 feat: collapse "waiting" of unified_exec
- #8253 Update system skills bundled with codex-rs
- #8252 Terminal Detection Metadata for Per-Terminal Scroll Scaling
- #8250 UI tweaks on skills popup.
- #8207 [release] Add a dmg target for MacOS
- #8142 fix: change codex/sandbox-state/update from a notification to a request
-
Introducing GPT-5.2-Codex
Today we are releasing GPT-5.2-Codex, the most advanced agentic coding model yet for complex, real-world software engineering.
GPT-5.2-Codex is a version of GPT-5.2 further optimized for agentic coding in Codex, including improvements on long-horizon work through context compaction, stronger performance on large code changes like refactors and migrations, improved performance in Windows environments, and significantly stronger cybersecurity capabilities.
Starting today, the CLI and IDE Extension will default to
gpt-5.2-codexfor users who are signed in with ChatGPT. API access for the model will come soon.If you have a model specified in your
config.tomlconfiguration file, you can instead try outgpt-5.2-codexfor a new Codex CLI session using:codex --model gpt-5.2-codexYou can also use the
/modelslash command in the CLI. In the Codex IDE Extension you can select GPT-5.2-Codex from the dropdown menu.If you want to switch for all sessions, you can change your default model to
gpt-5.2-codexby updating yourconfig.tomlconfiguration file:model = "gpt-5.2-codex” -
Codex CLI 0.75.0
$ npm install -g @openai/codex@0.75.0 -
Codex CLI 0.74.0
$ npm install -g @openai/codex@0.74.0View details
Highlights
- Introducing gpt-5.2-codex our latest frontier model with improvements across knowledge, reasoning and coding. Learn more
- Add new slash command
/experimentalfor trying outexperimentalfeatures - Ghost snapshot warning disable toggle (#8178)
- UI polish (background terminals, picker cleanup) (#8255, #8232).
PRs Merged
- #8266 feat: add name to beta features
- #8265 caribou
- #8264 docs: clarify codex resume --all (CWD column & filtering)
- #8255 nit: ui background terminals
- #8249 chore: prefer AsRef to &Path
- #8248 chore: simplify loading of Mac-specific logic in config_loader
- #8244 Reintroduce feature flags for skills.
- #8243 Make loading malformed skills fail-open
- #8235 fix: introduce ConfigBuilder
- #8232 chores: clean picker
- #8228 Show migration link
- #8226 chore: cleanup Config instantiation codepaths
- #8221 Change “Team” to “Buisness” and add Education
- #8220 Support SYSTEM skills.
- #8216 speed and reliability improvements for setting reads ACLs
- #8209 feat: model picker
- #8205 fix: PathBuf -> AbsolutePathBuf in ConfigToml struct
- #8203 download new windows binaries when staging npm package
- #8201 chore: add beta features
- #8199 chore: move back stuff out of beta program
- #8198 feat: make list_models non-blocking
- #8196 fix: session downgrade
- #8194 fix: proper skills dir cleanup
- #8186 nit: doc
- #8182 nit: drop dead branch with unified_exec tool
- #8181 nit: prevent race in event rendering
- #8178 feat: add config to disable warnings around ghost snapshot
- #8175 fix: flaky test 6
- #8163 fix the models script
- #8153 Load models from static file
- #8152 [app-server] add new RawResponseItem v2 event
- #8151 chore: update listMcpServerStatus to be non-blocking
- #8149 Add user_agent header
- #8141 chore(apply-patch) unicode scenario
- #8140 include new windows binaries in npm package.
- #8127 Revert “chore: review in read-only (#7593)”
- #8124 fix tui2 compile error
- #8122 docs: refine tui2 viewport roadmap
- #8118 Add a workflow for a hardcoded version of models
- #8117 feat: unified exec footer
- #8114 chore: update listMcpServers to listMcpServerStatus
- #8111 chore(apply-patch) move invocation tests
- #8109 Revert “feat: unified exec footer”
- #8108 feat(sdk): add xhigh reasoning effort support to TypeScript SDK
- #8102 Upgrade GitHub Actions for Node 24 compatibility
- #8098 Add public skills + improve repo skill discovery and error UX
- #8095 feat: change ConfigLayerName into a disjoint union rather than a simple enum
- #8094 bug fixes and perf improvements for elevated sandbox setup
- #8089 refactor(tui2): make transcript line metadata explicit
- #8088 feat: if .codex is a sub-folder of a writable root, then make it read-only to the sandbox
- #8086 chore(app-server): remove stubbed thread/compact API
- #8085 chore: mac codesign refactor
- #8084 chore(ci): drop Homebrew origin/main workaround for macOS runners
- #8079 docs: fix gpt-5.2 typo in config.md
- #8077 better name for windows sandbox features
- #8075 feat: fallback unified_exec to shell_command
- #8071 feat: experimental menu
- #8067 feat: unified exec footer
- #8060 feat: do not compact on last user turn
- #8057 chore: dedup review result duplication
- #8053 nit: trace span for regular task
- #8052 feat: close unified_exec at end of turn
- #8020 Fixes mcp elicitation test that fails for me when run locally
- #8004 Fix: Detect Bun global install via path check
- #8000 Fixed resume matching to respect case insensitivity when using WSL mount points
- #7997 feat: merge remote models instead of destructing
- #7969 Fix: Skip Option<()> schema generation to avoid invalid Windows filenames (#7479)
- #7961 refactor TUI event loop to enable dropping + recreating crossterm event stream
- #7956 fix parallel tool calls
- #7935 exec-server: additional context for errors
- #7931 chore: persist comments in edit
- #7791 chore(shell_command) fix freeform timeout output
- #7778 feat: Constrain values for approval_policy
- #7601 WIP: Rework TUI viewport, history printing, and selection/copy
-
Codex CLI 0.73.0
$ npm install -g @openai/codex@0.73.0View details
New Features
- Add ghost snapshot v2 for improved session capture (PR #8055)
- Support ghost commits in config (PR #7873)
- Reimplement skills loading via SkillsManager and skills/list for consistent discovery (PR
#7914) - Add OpenTelemetry tracing for Codex (PR #7844)
Bug Fixes
- Prevent panic when session contains a tool call without an output (PR #8048)
- Avoid triggering keybindings view on input bursts (PR #7980)
- Change default wrap algorithm from OptimalFit to FirstFit (PR #7960)
- Introduce AbsolutePathBuf as part of sandbox config (PR #7856)
- Include Error in log messages (PR #7955)
PRs Merged
- #8076 stage new windows sandbox binaries as artifacts
- #8069 Fixed formatting issue
- #8066 Update config.md
- #8055 feat: ghost snapshot v2
- #7873 feat: config ghost commits
- #7980 fix: Don't trigger keybindings view on input burst
- #8045 chore(deps): bump lru from 0.12.5 to 0.16.2 in /codex-rs
- #8043 chore(deps): bump sentry from 0.34.0 to 0.46.0 in /codex-rs
- #8039 chore(deps): bump actions/cache from 4 to 5
- #8037 chore(deps): bump actions/download-artifact from 4 to 7
- #8048 Do not panic when session contains a tool call without an output
- #8046 chore(deps): bump socket2 from 0.6.0 to 0.6.1 in /codex-rs
- #8038 chore(deps): bump actions/upload-artifact from 5 to 6
- #8047 chore: fix tooltip typos and align tone
- #8024 docs: document enabling experimental skills
- #7914 Reimplement skills loading using SkillsManager + skills/list op.
- #7962 docs: update the docs for @openai/codex-shell-tool-mcp
- #7960 Changed default wrap algorithm from OptimalFit to FirstFit
- #7965 Sync tui2 with tui and keep dual-run glue
- #7844 [codex] add otel tracing
- #7957 docs: remove blanket ban on unsigned integers
- #7955 fix: include Error in log message
- #7954 fix: added test helpers for platform-specific paths
- #7856 fix: introduce AbsolutePathBuf as part of sandbox config
-
Codex CLI 0.72.0
$ npm install -g @openai/codex@0.72.0View details
Highlights
- Config API cleanup (#7924): new config API and cleaner config loading flow.
- Remote compact for API-key users (#7835): enable remote compacting in key-based sessions.
- MCP and TUI status visibility (#7828, #7907): restore MCP startup progress messages in the TUI and use latest disk values
for server status. - Windows and PowerShell quality-of-life (#7607, #7893, #7942, #7137): locate pwsh/powershell reliably, parse PowerShell with
PowerShell, sign additional Windows executables, and fix WSL2 toasts. - Sandbox and safety updates (#7809, #7889, #7728): Elevated Sandbox 3/4 plus expanded safe command list.
- Model/prompt UX for gpt-5.2 (#7934, #7910, #7874, #7911): prompt updates and clearer xhigh reasoning warnings/docs.
PRs Merged
- fix cargo build switch #7948 @[iceweasel-oai]
- fix: restore MCP startup progress messages in TUI (fixes #7827) #7828 @[ivanmurashko]
- support 1p #7945 @[aibrahim-oai]
- Sign two additional exes for Windows #7942 @[iceweasel-oai]
- fix: use PowerShell to parse PowerShell #7607 @[bolinfest]
- chore(prompt) Update base prompt #7943 @[dylan-hurd-oai]
- Elevated Sandbox 4 #7889 @[iceweasel-oai]
- chore(prompt) Remove truncation details #7941 @[dylan-hurd-oai]
- feat: clean config loading and config api #7924 @[jif-oai]
- chores: models manager #7937 @[aibrahim-oai]
- Remote compact for API-key users #7835 @[pakrym-oai]
- chore(gpt-5.2) prompt update #7934 @[dylan-hurd-oai]
- fix: race on rx subscription #7921 @[jif-oai]
- fix: break tui #7876 @[jif-oai]
- feat: more safe commands #7728 @[jif-oai]
- fix(tui): show xhigh reasoning warning for gpt-5.2 #7910 @[voctory]
- Make skill name and description limit based on characters not byte counts #7915 @[etraut-openai]
- feat: introduce utilities for locating pwsh.exe and powershell.exe #7893 @[bolinfest]
- docs: clarify xhigh reasoning effort on gpt-5.2 #7911 @[voctory]
- feat: use latest disk value for mcp servers status #7907 @[shijie-oai]
- Revert "fix(apply-patch): preserve CRLF line endings on Windows" #7903 @[dylan-hurd-oai]
- Make migration screen dynamic #7896 @[aibrahim-oai]
- Fix misleading 'maximize' high effort description on xhigh models #7874 @[voctory]
- Added deprecation notice for "chat" wire_api #7897 @[etraut-openai]
- Fix toasts on Windows under WSL 2 #7137 @[dank-openai]
- fix: policy/.codexpolicy -> rules/.rules #7888 @[bolinfest]
- Update RMCP client config guidance #7895 @[nornagon-openai]
- Update Model Info #7853 @[aibrahim-oai]
- Elevated Sandbox 3 #7809 @[iceweasel-oai]
- remove release script #7885 @[aibrahim-oai]
- Chore: limit find family visability #7891 @[aibrahim-oai]
- fix: omit reasoning summary when ReasoningSummary::None #7845 @[apanasenko-oai]
- fix: drop stale filedescriptor output hash for nix #7865 @[tyleranton]
- fix: dont quit on 'q' in onboarding ApiKeyEntry state #7869 @[sayan-oai]
-
Codex CLI 0.71.0
$ npm install -g @openai/codex@0.71.0View details
Highlights
- Introducing gpt-5.2 our latest frontier model with improvements across knowledge, reasoning and coding. Learn More
PRs Merged
#7838 Show the default model in model picker @aibrahim-oai
#7833 feat(tui2): copy tui crate and normalize snapshots @joshka-oai
#7509 fix: thread/list returning fewer than the requested amount due to filtering CXA-293 @JaviSoto
#7832 fix: ensure accept_elicitation_for_prompt_rule() test passes locally @bolinfest
#7847 fixing typo in execpolicy docs @zhao-oai
#7831 [app-server] make app server not throw error when login id is not found @celia-oai
#7848 fix: add a hopefully-temporary sleep to reduce test flakiness @bolinfest
#7850 [app-server] Update readme to include mcp endpoints @celia-oai
#7851 fix: remove inaccurate #[allow(dead_code)] marker @bolinfest
#7859 Fixed regression that broke fuzzy matching for slash commands @etraut-openai
#7854 Only show Worked for after the final assistant message @pakrym-oai
#7792 Elevated Sandbox 2 @iceweasel-oai
#7855 fix(stuff) @dylan-hurd-oai
#7870 feat: warning for long snapshots @jif-oai
#7786 feat: add shell snapshot for shell command @jif-oai
#7875 fix: flaky tests 4 @jif-oai
#7882 feat: robin @aibrahim-oai
#7884 Revert “Only show Worked for after the final assistant message” @pakrym-oai -
Introducing Codex for Linear
Assign or mention @Codex in an issue to kick-off a Codex cloud task. As Codex works, it posts updates back to Linear, providing a link to the completed task so you can review, open a PR, or keep working.

To learn more about how to connect Codex to Linear both locally through MCP and through the new integration, check out the Codex for Linear documentation.
November 2025
-
Usage and credits fixes
Minor updates to address a few issues with Codex usage and credits:
- Adjusted all usage dashboards to show “limits remaining” for consistency. The CLI previously displayed “limits used.”
- Fixed an issue preventing users from buying credits if their ChatGPT subscription was purchased via iOS or Google Play.
- Fixed an issue where the CLI could display stale usage information; it now refreshes without needing to send a message first.
- Optimized the backend to help smooth out usage throughout the day, irrespective of overall Codex load or how traffic is routed. Before, users could get unlucky and hit a few cache misses in a row, leading to much less usage.
-
Introducing GPT-5.1-Codex-Max
Today we are releasing GPT-5.1-Codex-Max, our new frontier agentic coding model.
GPT‑5.1-Codex-Max is built on an update to our foundational reasoning model, which is trained on agentic tasks across software engineering, math, research, and more. GPT‑5.1-Codex-Max is faster, more intelligent, and more token-efficient at every stage of the development cycle–and a new step towards becoming a reliable coding partner.
Starting today, the CLI and IDE Extension will default to
gpt-5.1-codex-maxfor users that are signed in with ChatGPT. API access for the model will come soon.For non-latency-sensitive tasks, we’ve also added a new Extra High (
xhigh) reasoning effort, which lets the model think for an even longer period of time for a better answer. We still recommend medium as your daily driver for most tasks.If you have a model specified in your
config.tomlconfiguration file, you can instead try outgpt-5.1-codex-maxfor a new Codex CLI session using:codex --model gpt-5.1-codex-maxYou can also use the
/modelslash command in the CLI. In the Codex IDE Extension you can select GPT-5.1-Codex from the dropdown menu.If you want to switch for all sessions, you can change your default model to
gpt-5.1-codex-maxby updating yourconfig.tomlconfiguration file:model = "gpt-5.1-codex-max” -
Introducing GPT-5.1-Codex and GPT-5.1-Codex-Mini
Along with the GPT-5.1 launch in the API, we are introducing new
gpt-5.1-codex-miniandgpt-5.1-codexmodel options in Codex, a version of GPT-5.1 optimized for long-running, agentic coding tasks and use in coding agent harnesses in Codex or Codex-like harnesses.Starting today, the CLI and IDE Extension will default to
gpt-5.1-codexon macOS and Linux andgpt-5.1on Windows.If you have a model specified in your
config.tomlconfiguration file, you can instead try outgpt-5.1-codexfor a new Codex CLI session using:codex --model gpt-5.1-codexYou can also use the
/modelslash command in the CLI. In the Codex IDE Extension you can select GPT-5.1-Codex from the dropdown menu.If you want to switch for all sessions, you can change your default model to
gpt-5.1-codexby updating yourconfig.tomlconfiguration file:model = "gpt-5.1-codex” -
Introducing GPT-5-Codex-Mini
Today we are introducing a new
gpt-5-codex-minimodel option to Codex CLI and the IDE Extension. The model is a smaller, more cost-effective, but less capable version ofgpt-5-codexthat provides approximately 4x more usage as part of your ChatGPT subscription.Starting today, the CLI and IDE Extension will automatically suggest switching to
gpt-5-codex-miniwhen you reach 90% of your 5-hour usage limit, to help you work longer without interruptions.You can try the model for a new Codex CLI session using:
codex --model gpt-5-codex-miniYou can also use the
/modelslash command in the CLI. In the Codex IDE Extension you can select GPT-5-Codex-Mini from the dropdown menu.Alternatively, you can change your default model to
gpt-5-codex-miniby updating yourconfig.tomlconfiguration file:model = "gpt-5-codex-mini” -
GPT-5-Codex model update
We’ve shipped a minor update to GPT-5-Codex:
- More reliable file edits with
apply_patch. - Fewer destructive actions such as
git reset. - More collaborative behavior when encountering user edits in files.
- 3% more efficient in time and usage.
- More reliable file edits with
October 2025
-
Credits on ChatGPT Pro and Plus
Codex users on ChatGPT Plus and Pro can now use on-demand credits for more Codex usage beyond what’s included in your plan. Learn more.
-
Tag @Codex on GitHub Issues and PRs
You can now tag
@codexon a teammate’s pull request to ask clarifying questions, request a follow-up, or ask Codex to make changes. GitHub Issues now also support@codexmentions, so you can kick off tasks from any issue, without leaving your workflow.
-
Codex is now GA
Codex is now generally available with 3 new features — @Codex in Slack, Codex SDK, and new admin tools.
@Codex in Slack

You can now questions and assign tasks to Codex directly from Slack. See the Slack guide to get started.
Codex SDK
Integrate the same agent that powers the Codex CLI inside your own tools and workflows with the Codex SDK in Typescript. With the new Codex GitHub Action, you can easily add Codex to CI/CD workflows. See the Codex SDK guide to get started.
import { Codex } from "@openai/codex-sdk"; const agent = new Codex(); const thread = await agent.startThread(); const result = await thread.run("Explore this repo"); console.log(result); const result2 = await thread.run("Propose changes"); console.log(result2);New admin controls and analytics

ChatGPT workspace admins can now edit or delete Codex Cloud environments. With managed config files, they can set safe defaults for CLI and IDE usage and monitor how Codex uses commands locally. New analytics dashboards help you track Codex usage and code review feedback. Learn more in the enterprise admin guide.
Availability and pricing updates
The Slack integration and Codex SDK are available to developers on ChatGPT Plus, Pro, Business, Edu, and Enterprise plans starting today, while the new admin features will be available to Business, Edu, and Enterprise. Beginning October 20, Codex Cloud tasks will count toward your Codex usage. Review the Codex pricing guide for plan-specific details.
September 2025
-
GPT-5-Codex in the API
GPT-5-Codex is now available in the Responses API, and you can also use it with your API Key in the Codex CLI. We plan on regularly updating this model snapshot. It is available at the same price as GPT-5. You can learn more about pricing and rate limits for this model on our model page.
-
Introducing GPT-5-Codex
New model: GPT-5-Codex

GPT-5-Codex is a version of GPT-5 further optimized for agentic coding in Codex. It’s available in the IDE extension and CLI when you sign in with your ChatGPT account. It also powers the cloud agent and Code Review in GitHub.
To learn more about GPT-5-Codex and how it performs compared to GPT-5 on software engineering tasks, see our announcement blog post.
Image outputs

When working in the cloud on front-end engineering tasks, GPT-5-Codex can now display screenshots of the UI in Codex web for you to review. With image output, you can iterate on the design without needing to check out the branch locally.
New in Codex CLI
- You can now resume sessions where you left off with
codex resume. - Context compaction automatically summarizes the session as it approaches the context window limit.
Learn more in the latest release notes
- You can now resume sessions where you left off with
August 2025
-
Late August update
IDE extension (Compatible with VS Code, Cursor, Windsurf)

Codex now runs in your IDE with an interactive UI for fast local iteration. Easily switch between modes and reasoning efforts.
Sign in with ChatGPT (IDE & CLI)

One-click authentication that removes API keys and uses ChatGPT Enterprise credits.
Move work between local ↔ cloud

Hand off tasks to Codex web from the IDE with the ability to apply changes locally so you can delegate jobs without leaving your editor.
Code Reviews

Codex goes beyond static analysis. It checks a PR against its intent, reasons across the codebase and dependencies, and can run code to validate the behavior of changes.
-
Mid August update
Image inputs

You can now attach images to your prompts in Codex web. This is great for asking Codex to implement frontend changes or follow up on whiteboarding sessions.
Container caching

Codex now caches containers to start new tasks and followups 90% faster, dropping the median start time from 48 seconds to 5 seconds. You can optionally configure a maintenance script to update the environment from its cached state to prepare for new tasks. See the docs for more.
Automatic environment setup
Now, environments without manual setup scripts automatically run the standard installation commands for common package managers like yarn, pnpm, npm, go mod, gradle, pip, poetry, uv, and cargo. This reduces test failures for new environments by 40%.
June 2025
-
Best of N

Codex can now generate multiple responses simultaneously for a single task, helping you quickly explore possible solutions to pick the best approach.
Fixes & improvements
Added some keyboard shortcuts and a page to explore them. Open it by pressing ⌘-/ on macOS and Ctrl+/ on other platforms.
Added a “branch” query parameter in addition to the existing “environment”, “prompt” and “tab=archived” parameters.
Added a loading indicator when downloading a repo during container setup.
Added support for cancelling tasks.
Fixed issues causing tasks to fail during setup.
Fixed issues running followups in environments where the setup script changes files that are gitignored.
Improved how the agent understands and reacts to network access restrictions.
Increased the update rate of text describing what Codex is doing.
Increased the limit for setup script duration to 20 minutes for Pro and Business users.
Polished code diffs: You can now option-click a code diff header to expand/collapse all of them.
-
June update
Agent internet access

Now you can give Codex access to the internet during task execution to install dependencies, upgrade packages, run tests that need external resources, and more.
Internet access is off by default. Plus, Pro, and Business users can enable it for specific environments, with granular control of which domains and HTTP methods Codex can access. Internet access for Enterprise users is coming soon.
Learn more about usage and risks in the docs.
Update existing PRs

Now you can update existing pull requests when following up on a task.
Voice dictation

Now you can dictate tasks to Codex.
Fixes & improvements
Added a link to this changelog from the profile menu.
Added support for binary files: When applying patches, all file operations are supported. When using PRs, only deleting or renaming binary files is supported for now.
Fixed an issue on iOS where follow up tasks where shown duplicated in the task list.
Fixed an issue on iOS where pull request statuses were out of date.
Fixed an issue with follow ups where the environments were incorrectly started with the state from the first turn, rather than the most recent state.
Fixed internationalization of task events and logs.
Improved error messages for setup scripts.
Increased the limit on task diffs from 1 MB to 5 MB.
Increased the limit for setup script duration from 5 to 10 minutes.
Polished GitHub connection flow.
Re-enabled Live Activities on iOS after resolving an issue with missed notifications.
Removed the mandatory two-factor authentication requirement for users using SSO or social logins.
May 2025
-
Reworked environment page
It’s now easier and faster to set up code execution.

Fixes & improvements
Added a button to retry failed tasks
Added indicators to show that the agent runs without network access after setup
Added options to copy git patches after pushing a PR
Added support for unicode branch names
Fixed a bug where secrets were not piped to the setup script
Fixed creating branches when there’s a branch name conflict.
Fixed rendering diffs with multi-character emojis.
Improved error messages when starting tasks, running setup scripts, pushing PRs, or disconnected from GitHub to be more specific and indicate how to resolve the error.
Improved onboarding for teams.
Polished how new tasks look while loading.
Polished the followup composer.
Reduced GitHub disconnects by 90%.
Reduced PR creation latency by 35%.
Reduced tool call latency by 50%.
Reduced task completion latency by 20%.
Started setting page titles to task names so Codex tabs are easier to tell apart.
Tweaked the system prompt so that agent knows it’s working without network, and can suggest that the user set up dependencies.
Updated the docs.
-
Codex in the ChatGPT iOS app
Start tasks, view diffs, and push PRs—while you’re away from your desk.
