- Choose an optional fullscreen UI with `/tui` for your next launch, including transcript search, mouse selection, and right-click copying. (#46732, #46734, #46883, #46895) - Voice conversations are enabled by default, with an F8 toggle, a `/voice settings` picker, and bundled audio runtimes for Linux and Windows. (#44921, #46071, #44622, #44714, #44922) - Explore account usage, token totals, and plugin and skill activity through the `/usage` analytics dashboard. (#45764, #45769) - Filter tasks by status and create worktree sessions from the agent command center; worktree support is now enabled by default. (#46839, #45276, #44870) - Customize the terminal with six new themes and view supported Mermaid diagrams and display equations directly in responses. (#46504, #46054, #45612) - Update the local background server through `/daemon`, or bypass it with `--no-daemon`. (#45854, #46088) ## Bug Fixes - Preserve streamed answers and plans when turns fail, are interrupted, or receive subagent completion events. (#45549, #46867) - Fix clipboard forwarding in tmux and SSH sessions and preserve tab indentation when terminals send pasted text as individual keystrokes. (#45457, #45454) - Restore Plan mode when resuming sessions and preserve thread identity and settings when editing earlier prompts. (#45519, #45845) - Recover login through system proxies and refresh MCP credentials when OAuth discovery returns a 503 error. (#46562, #44636) - Prevent speech from being dropped during playback pauses or bursts of incoming audio. (#46880) - Close sandbox isolation gaps involving inbound Windows connections, privileged Linux/macOS sockets, and writes through read-only macOS file handles. (#44639, #45984, #46500) ## Documentation - Clarify that deprecated `friendly` and `pragmatic` personality settings no longer select response styles. (#45809) - Explain how `?` matches a single character in network proxy allow and deny patterns. (#46027) ## Chores - Update bundled TLS dependencies, including OpenSSL 3.6.4 for Linux musl builds. (#45149, #45489) ## Changelog Full Changelog: https://github.com/openai/codex/compare/rust-v0.155.0...rust-v0.156.0 - #44606 Preserve whole diagnostic attachments and report incomplete uploads @chess-oai - #44611 Preserve root turn attribution in turn-start events @owenlin0 - #44613 Enable user verification for local Codex Desktop sessions @riley-oai - #44615 Treat non-interactive dumb terminals as warnings in `codex doctor` @etraut-openai - #44616 Simplify enterprise OAuth login helpers and expand callback tests @nicksteele-oai - #44617 Invalidate cached Guardian approvals for unscored permission widening @jif-oai - #44619 Allow discarded code mode tool responses to be garbage collected @jif-oai - #44620 Support temporary and minimal filesystem grants in MXC @iceweasel-oai - #44622 Add `/voice settings` to choose a voice for future conversations @bc-openai - #44626 Add bounded environment transport for MXC launch requests @iceweasel-oai - #44628 Expose session analytics state in Responses turn metadata @marksteinbrick-oai - #44629 Add manual callback input to MCP OAuth login @willwang-openai - #44631 Focus the task list when reopening the agent command center @etraut-openai - #44636 Recover OAuth metadata discovery from 503 responses via OIDC @malsamiri-oai - #44639 Block non-loopback inbound traffic for the Windows offline sandbox @viyatb-oai - #44646 Honor thread analytics opt-outs when using shared clients @priyanshusingh-de - #44650 Enforce managed model provider selection and definitions @alexsong-oai - #44651 Keep command center errors visible and preserve drafts @etraut-openai - #44654 Preserve missing environment variable diagnostics in Codex Doctor @etraut-openai - #44655 Honor thread-level plugin exclusions across runtime capabilities @mzeng-openai - #44656 Attribute turn metrics to the models used during the turn @eternal-openai - #44658 Keep Windows sandbox private desktops alive across helper exits @chess-oai - #44659 Preserve turn triggers across delegated agent work @joeytrasatti-openai - #44661 Trace tool call receipt, result readiness, and code-mode dispatch @anp-oai - #44666 Honor system reduced-motion preferences in the TUI @imac-oai - #44669 Resolve filesystem denials with explicit path context @seanh-oai - #44670 Restrict login setup redirects to known platform origins @hintz-openai - #44671 Keep voice sessions alive through mute and audio backlog @bc-openai - #44675 Refresh global instructions at model-request boundaries @vkg-oai - #44676 Resolve permission profiles with explicit execution-host path context @seanh-oai - #44691 Warn about ignored configuration settings @andrewgu-oai - #44693 Preserve selected profile settings over managed new-thread defaults @alexr-oai - #44694 Include the Windows sandbox service in release artifacts @johnl-oai - #44701 Add a provider for thread-scoped instructions @vkg-oai - #44711 Return to the command center after session cancellation or deletion @etraut-openai - #44714 Bundle Linux voice runtimes and improve audio reliability @bc-openai - #44732 Clarify folder trust prompts and add restricted widget support @etraut-openai - #44742 Preserve editor yanks across new sessions and thread switches @bc-openai - #44744 Make archive confirmation number shortcuts act immediately @etraut-openai - #44746 Check folder trust after resolving the startup destination @etraut-openai - #44747 Update `quinn-proto` and allow the pinned H3 Git source @richardopenai - #44749 Preserve voice caption order when replaying TUI history @bc-openai - #44752 Render Markdown in agent overview task details @etraut-openai - #44755 Check folder consent before creating or resuming TUI tasks @etraut-openai - #44814 Test approved command execution with managed unified exec disabled @jif-oai - #44826 Expose advertised MCP server capabilities in status responses @gpeal - #44832 Add trusted enterprise MCP auth configuration @nicksteele-oai - #44857 Add consistent theme-based thread colors across the TUI @etraut-openai - #44862 Preserve parent cache affinity for ephemeral forks @jif-oai - #44865 Scope code mode callback delegates to individual executions @abhinav-oai - #44866 Preserve originating context for yielded code-mode tool calls @abhinav-oai - #44867 Preserve originating budgets for code mode notifications @abhinav-oai - #44870 Enable worktrees by default and clarify local daemon errors @bc-openai - #44872 Add managed network policy support to the Windows MXC sandbox @iceweasel-oai - #44877 Return public key metadata from user verification enrollment @riley-oai - #44879 Fade Astra composer stars and stabilize cursor redraws @imac-oai - #44883 Reject token-budget history notes for unsupported starting models @jif-oai - #44893 Expose available access programs in model discovery @faizan-oai - #44903 Wire up the native Windows MXC helper entry point @iceweasel-oai - #44905 Expose disabled plugin settings in the app-server API @mzeng-openai - #44915 Remove the deprecated `thread/rollback` API @owenlin0 - #44921 Enable TUI voice conversations by default @bc-openai - #44922 Bundle native voice runtimes in Windows releases @bc-openai - #44924 Refresh the speaker format when restarting voice output @bc-openai - #44925 Accept voice response audio before captions on quiet turns @bc-openai - #44928 Preserve voice meter history through quiet samples @bc-openai - #44930 Embed friendly instructions in bundled GPT-5.4 and GPT-5.5 @rhan-oai - #44931 Stop setting `YARN_NO_PROXY` in the managed proxy environment @viyatb-oai - #44932 Unify context snapshots and group requests into windows @pakrym-oai - #44933 Remove Windows world-writable scans and warnings from the TUI @etraut-openai - #44934 Add scenario snapshots for remote compaction and Code Mode tools @pakrym-oai - #44935 Remove personality selection from the TUI @rhan-oai - #44938 Add connector auth failure detection without an install URL @priyanshusingh-de - #44939 Respect execution hosts in Windows sandbox setup @etraut-openai - #44942 Clarify the Windows Visual C++ runtime notice for voice packages @bc-openai - #44944 Enforce managed provider requirements on existing app-server threads @alexsong-oai - #44945 Route TUI Windows sandbox setup through the app server @etraut-openai - #44946 Retire Friendly and Pragmatic personality selection @rhan-oai - #44948 Add context snapshots for async questions and plugin refresh @pakrym-oai - #44952 Keep voice captions visible across speaker updates and history handoff @bc-openai - #44957 Add model grouping to the agent command center @etraut-openai - #44969 Open tasks managed elsewhere as read-only history in the command center @etraut-openai - #44970 Show task tokens and usage estimates in the agent command center @etraut-openai - #44976 Make context snapshot text rendering consistent @pakrym-oai - #45035 Run DotSlash publishing directly on Ubuntu runners @charliemarsh-oai - #45039 Use gzip compression level 6 for Codex package archives @charliemarsh-oai - #45051 Consolidate Rust release artifact downloads @charliemarsh-oai - #45089 Delay automatic recaps and compact their TUI layout @fcoury-oai - #45090 Preserve conversation context and separate next actions in recaps @fcoury-oai - #45094 Estimate history tokens from content instead of serialized envelopes @won-openai - #45108 Cancel pending thread title generation after manual renames @fcoury-oai - #45112 Use blueberry in the realtime background-agent test fixture @anp-oai - #45116 Prevent multiline report notes from submitting early @etraut-openai - #45124 Add a feature flag for asynchronous user messages @alishobeiri-oai - #45135 Preview streaming prose before a newline arrives in the TUI @etraut-openai - #45137 Remove Astra sparkle animation from the TUI composer @fcoury-oai - #45149 Use OpenSSL 3.6.4 for musl builds @zm-oai - #45169 Extract Windows sandbox setup and installation storage into the library @zm-oai - #45176 Wire the Windows MXC sandbox into command execution @iceweasel-oai - #45178 Split Windows sandbox cleanup into preparation and completion phases @zm-oai - #45180 Extract shared network configuration and environment policy helpers @seanh-oai - #45182 Validate Windows sandbox token groups before copying SIDs @zm-oai - #45185 Bind direct tool-call metadata to invocation outputs @ningyi-oai - #45224 Register Windows desktop uninstall ownership before sandbox setup @chess-oai - #45248 Use captured step settings for request metadata and tool hooks @abhinav-oai - #45255 Open new sessions directly from the command center @etraut-openai - #45262 Route pastes into the active history search query @charliemarsh-oai - #45271 Preserve terminal scrollback when growing the TUI viewport @fcoury-oai - #45276 Add worktree session creation to the agents overview @etraut-openai - #45312 Extract Windows sandbox configuration preparation into a helper @seanh-oai - #45345 Publish opt-in provisioned macOS packages with Rust releases @riley-oai - #45399 Cancel code mode timer tasks when cleared or the cell finishes @jif-oai - #45409 Add session and originating window IDs to MCP request metadata @jif-oai - #45413 Invalidate Guardian review sessions after parent history resets @jif-oai - #45417 Extract guardian transcript selection into `guardian-context` @felixxia-oai - #45418 Extract Guardian conversation bookkeeping into the reviewer crate @felixxia-oai - #45420 Extract Guardian sampler execution into a dedicated module @felixxia-oai - #45428 Avoid cloning MCP server status snapshot data @charliemarsh-oai - #45439 Share tool output schemas and defer MCP envelope construction @charliemarsh-oai - #45440 Share Apps tool catalogs without retaining unused snapshots @charliemarsh-oai - #45441 Preserve Guardian parent response IDs across sampling requests @jif-oai - #45445 Attribute command and plugin analytics to the invoking model @jwang-openai - #45454 Preserve tabs in non-bracketed paste bursts @etraut-openai - #45455 Refactor Windows sandbox setup and service helpers @zm-oai - #45457 Fix clipboard routing for tmux and SSH sessions @fcoury-oai - #45459 Resolve enterprise-managed MCP registrations in the catalog @nicksteele-oai - #45461 Label rollout compression failures by stage and I/O error kind @jif-oai - #45463 Allow dedicated listeners for managed network proxies @iceweasel-oai - #45475 Fix fuzzy match scoring within Unicode lowercase expansions @etraut-openai - #45487 Retain thread persistence acquisition through session cancellation @jif-oai - #45489 Update `rustls` and AWS-LC dependencies in Cargo and Bazel lockfiles @zm-oai - #45491 Remove Guardian subagent-spawner plumbing @felixxia-oai - #45492 Split Guardian V2 async scoring into focused modules @felixxia-oai - #45493 Make the Guardian deadline cancellation helper crate-private @felixxia-oai - #45495 Expose effective login methods in config requirements @acrognale-oai - #45496 Trace global user instruction loading @vkg-oai - #45499 Send local TUI images as portable attachments to remote app servers @etraut-openai - #45501 Render inline TeX math as Unicode in the TUI @etraut-openai - #45502 Add managed thread lifetimes with cancellation-safe startup @jif-oai - #45503 Add revocable network policy primitives to the HTTP client @acrognale-oai - #45504 Allow ConPTY output to close after the last console client exits @iceweasel-oai - #45505 Add lifecycle tracing for unified exec @anp-oai - #45506 Allow background persistence for steered user input @bryanashley - #45509 Share MCP tool specs until search results are selected @owenlin0 - #45513 Allow setting `daybreakEnabled` when starting a thread @faizan-oai - #45515 Filter plugin-install test analytics by event type @zm-oai - #45516 Allow configuring the Guardian prompt template @won-openai - #45517 Use a dedicated mock server in the provider enforcement test @zm-oai - #45518 Route Guardian reviewers through ThreadManager for inline parents @jif-oai - #45519 Restore collaboration mode when resuming threads @etraut-openai - #45520 Add dependencies to the Windows sandbox service @zm-oai - #45521 Move Guardian reviewer startup into the pool @jif-oai - #45524 Enable MXC TTY launches and managed networking in the exec server @iceweasel-oai - #45526 Stage Python runtime wheels directly from package directories @charliemarsh-oai - #45528 Compress larger Windows release artifacts first @charliemarsh-oai - #45529 Expose selected workspace routing in app-server account reads @acrognale-oai - #45533 Harden and share Windows sandbox identity helpers @zm-oai - #45534 Honor explicit Unix socket grants in the Linux managed sandbox @viyatb-oai - #45535 Classify tool analytics events by call origin @eddie-openai - #45537 Move Guardian reviewer lifecycle into the extension @jif-oai - #45542 Add service-managed package registration for Windows sandbox accounts @zm-oai - #45543 Refactor image content to use a shared `ImageReference` type @kchainani-oai - #45544 Discourage logging full image generation results @Gan-Tu - #45546 Move daemon packages out of the standalone CLI installation @etraut-openai - #45548 Honor prepared Unix socket permissions in Seatbelt @viyatb-oai - #45549 Preserve streamed answers and plans when turns terminate @etraut-openai - #45550 Add opt-in registered package execution to the Windows sandbox @zm-oai - #45554 Use shared Bazel cache preparation in SDK CI @charliemarsh-oai - #45556 Add attachment upload and resolution APIs and pass stores into sessions @kchainani-oai - #45558 Seed missing daemon installs from complete local CLI packages @etraut-openai - #45559 Resume Windows sandbox registration refresh after service restarts @zm-oai - #45579 Copy current thread attachments into non-ephemeral forks @joeytrasatti-openai - #45580 Add explicit daemon package replacement from the CLI @etraut-openai - #45602 Fix retry classification for throttling and quota errors @sdcoffey - #45612 Render standalone display math in the TUI @etraut-openai - #45649 Add elicitation classification support to app and MCP analytics @priyanshusingh-de - #45669 Centralize child agent configuration in the agent module @jif-oai - #45670 Move V2 agent message delivery into `AgentControl` @jif-oai - #45672 Consolidate Guardian reviewer lifecycle ownership @jif-oai - #45676 Move spawned-agent interruption rules into `AgentControl` @jif-oai - #45677 Move Guardian review reporting and denial accounting into the extension @jif-oai - #45679 Retire the unused Guardian extension prototype API @felixxia-oai - #45680 Restrict guardian assessment parsing and circuit breaker visibility @felixxia-oai - #45683 Consolidate guardian transcript tests in `guardian-context` @felixxia-oai - #45684 Pass `ReviewModel` through guardian review sessions @felixxia-oai - #45693 Move Guardian approval routing into the reviewer extension @jif-oai - #45711 Add startup tool allowlists for threads @jif-oai - #45716 Classify MCP auth and approval outcomes in analytics @priyanshusingh-de - #45729 Move Guardian reviewer configuration into the extension @jif-oai - #45730 Separate executor sandbox selection from Windows sandbox levels @iceweasel-oai - #45736 Route Guardian requests through `/responses` with identifying headers @jif-oai - #45737 Separate Windows sandbox implementations from legacy setup modes @iceweasel-oai - #45739 Add typed account analytics reports to the backend client @fcoury-oai - #45740 Add account analytics data normalization to the TUI @fcoury-oai - #45741 Add token history and credit formatting helpers for analytics @fcoury-oai - #45742 Add account-bound authentication for analytics requests @fcoury-oai - #45746 Explicitly gate DotSlash publishing on release success @chess-oai - #45749 Extract reusable Bash and Zsh startup scripts @jif-oai - #45755 Honor canonical plugin disables for shared connectors @mzeng-openai - #45757 Wire Windows sandbox selection into managed proxy routing @iceweasel-oai - #45760 Disable V8 optimization paths affected by array sort bugs @kliu128 - #45762 Load analytics reports with server plans and account identity checks @fcoury-oai - #45763 Add stacked chart primitives for account analytics @fcoury-oai - #45764 Add an account analytics dashboard to `/usage` @fcoury-oai - #45765 Add Top chats to usage analytics @fcoury-oai - #45766 Add gated plan usage history to TUI analytics @fcoury-oai - #45768 Add consumer Top chats usage analytics @fcoury-oai - #45769 Add an account Summary tab to Analytics @fcoury-oai - #45770 Improve analytics chart readability and navigation @fcoury-oai - #45772 Expose experimental analytics plan history and improve navigation @fcoury-oai - #45779 Use native process identities for PID-managed daemons @etraut-openai - #45780 Allow daemon updates to restore pinned packages to latest stable @etraut-openai - #45781 Normalize bullet glyphs in the image preparation disconnect snapshot @jgershen-oai - #45782 Preserve Guardian authorization evidence across checkpoint migration @felixxia-oai - #45789 Preserve Guardian evidence during checkpoint migration @felixxia-oai - #45794 Support image references by file ID in inputs and tool outputs @kchainani-oai - #45796 Preserve `ImageUserInput` in the Python SDK @kchainani-oai - #45799 Complete Windows sandbox uninstall cleanup @chess-oai - #45805 Preserve MCP App UI metadata in tool-call events and history @victor-openai - #45806 Restrict plugin install requests to the root thread @rennie-openai - #45807 Record interrupted turns in managed daemon recovery snapshots @etraut-openai - #45809 Retire the personality feature flag and document deprecated settings @rhan-oai - #45811 Bound WSL terminal detection and handle inconclusive probes safely @etraut-openai - #45812 Add workspace routing support for Responses requests @acrognale-oai - #45813 Track Windows sandbox policy and per-thread executor hosts in the TUI @etraut-openai - #45817 Add a bounded Mermaid text renderer @etraut-openai - #45820 Continue interrupted work after managed daemon restarts @etraut-openai - #45821 Use app-server state for TUI Windows sandbox decisions @etraut-openai - #45822 Add opt-in response body limits to the HTTP transport @sergio-oai - #45823 Run R2 publishing when release dependencies succeed @dkumar-oai - #45825 Add opt-in nonfatal handling for clock read failures @vivi - #45830 Use app-server configuration for Windows sandbox state in the TUI @etraut-openai - #45831 Allow session-only model and reasoning selection in the TUI @etraut-openai - #45837 Hide WSLg's duplicate root in restricted Linux sandboxes @etraut-openai - #45845 Revert the current thread when editing an earlier TUI prompt @etraut-openai - #45849 Preserve the app-server shutdown signal future across loop iterations @jgershen-oai - #45852 Preserve executor path conventions in permission summaries @seanh-oai - #45854 Add `/daemon` menu for local background server updates @etraut-openai - #45863 Preserve executor path URIs in permission profile workspace roots @seanh-oai - #45865 Reject paths in project documentation fallback filenames @etraut-openai - #45900 Add a hidden HTTP/3 TCP tunnel command @richardopenai - #45915 Make Code Mode wrappers transparent to Guardian model policies @jif-oai - #45928 Bound model catalog decode errors and classify request timeouts @jif-oai - #45933 Avoid redundant model catalog lookups in reused Guardian reviewers @jif-oai - #45956 Record memory storage size after successful consolidation @jif-oai - #45957 Centralize Guardian policy resolution in config and protocol @jif-oai - #45960 Tag memory usage telemetry with the memory version @jif-oai - #45964 Expose partial completion in rollout compression metrics @jif-oai - #45966 Measure rollout read and materialization durations @jif-oai - #45978 Keep selection adjacent when hiding tasks in the agents overview @etraut-openai - #45980 Fall back to summary history for read-only conversations @etraut-openai - #45981 Preserve session config when switching thread permission profiles @etraut-openai - #45982 Use native DNS resolution for the network proxy on macOS @jdkula-openai - #45983 Show a loading message when opening tasks from the agents overview @etraut-openai - #45984 Isolate app-server Unix sockets from filesystem-restricted commands @etraut-openai - #45985 Replace guardian review result tuples with named structs @felixxia-oai - #45987 Centralize Guardian action preparation for review @felixxia-oai - #46002 Extract route-aware HTTP request execution into a separate module @acrognale-oai - #46004 Preserve attachment Unix socket grants when controller policy is omitted @open-matt - #46006 Report clock failures again after recovery @anp-oai - #46008 Route built-in permission selections through the app server @etraut-openai - #46009 Centralize compaction checkpoint selection and validation @felixxia-oai - #46010 Enable app tool result metadata with analytics controls @ningyi-oai - #46011 Enforce managed residency when constructing API providers @andrewgu-oai - #46013 Route permission shortcuts through the shared selection flow @etraut-openai - #46015 Allow callers to disable executor skills per environment @vkg-oai - #46019 Allow hosted Apps MCP contributions to override the protocol mode @teddywyly-oai - #46020 Add an experimental rollout compression endpoint @jif-oai - #46026 Centralize model-message resolution and rendering in `codex-prompts` @rhan-oai - #46027 Document and test `?` wildcards in network proxy domain patterns @viyatb-oai - #46029 Allow browser app cleanup hooks on interrupt @syuan-oai - #46031 Keep Noise relay streams alive after repeated handshake failures @viyatb-oai - #46032 Require forced macOS preferences for managed configuration @joeflorencio-openai - #46033 Preserve orchestrator skill caches across MCP runtime updates @hlevy-openai - #46035 Add per-app tool exposure configuration @ptiet-oai - #46036 Preserve config error causes when saving the approvals reviewer @darius-oai - #46038 Test Windows sandbox bin DACL modification permissions @zm-oai - #46040 Default TUI animations off when a screen reader is detected @etraut-openai - #46041 Tighten request handling in Guardian approval tests @jgershen-oai - #46042 Add read-only policy support to MCP tool requests @rennie-openai - #46043 Repair expired Windows sandbox account passwords during setup @zm-oai - #46044 Include Code Mode tool metadata in compaction prompts @ningyi-oai - #46047 Tag rollout compression metrics by trigger @jif-oai - #46051 Track WebSocket continuation modes and full-input send reasons @vkg-oai - #46054 Render Mermaid code blocks as diagrams in the TUI @etraut-openai - #46058 Attribute analytics events to realtime voice sessions @chrisdong-oai - #46063 Trim Guardian tests and tighten request layout assertions @felixxia-oai - #46064 Consolidate Guardian tests at shared policy and context boundaries @felixxia-oai - #46065 Route prepared images through the attachment store @kchainani-oai - #46066 Keep MCP user interaction on the root thread @rennie-openai - #46067 Remove the `done` prefix from TUI completion timestamps @etraut-openai - #46069 Use syntax theme colors for inline code and file paths @etraut-openai - #46070 Suppress warnings when skill descriptions are shortened @etraut-openai - #46071 Add a configurable F8 shortcut for voice conversations @etraut-openai - #46072 Account for file images in context budgets and Guardian reviews @kchainani-oai - #46073 Bound code-mode output previews across result blocks @etraut-openai - #46075 Use captured step settings when spawning subagents @rhan-oai - #46077 Keep the composer responsive during Command Center session creation @etraut-openai - #46081 Mark finished empty Code Mode tool inventories as complete @nf-openai - #46088 Add `--no-daemon` to bypass the shared background server @etraut-openai - #46096 Add a one-time composer starfield for new Astra tasks @imac-oai - #46104 Pause TUI events in the agents overview regression test @etraut-openai - #46107 Box app-server request handler futures to reduce stack usage @etraut-openai - #46108 Replace Sites migration state with a runtime compatibility guard @jiwon-oai - #46112 Preserve filesystem sandbox policy context when the cwd disappears @anp-oai - #46116 Make TUI web and image activity summaries compact and descriptive @etraut-openai - #46117 Add opt-in automatic background server startup @etraut-openai - #46122 Route filesystem reads and writes by their own sandbox permissions @anp-oai - #46123 Allow model catalogs to override the V2 `spawn_agent` description @rhan-oai - #46125 Fix daemon socket isolation checks for private tmp mounts @open-matt - #46126 Record daemon startup and update telemetry with consent handling @etraut-openai - #46179 Include sender user messages in Guardian delegation reviews @jif-oai - #46230 Preserve configured Flex tiers without catalog or fast-mode support @sdcoffey - #46237 Improve Windows sandbox error details and registry cleanup @chess-oai - #46239 Prefer the provisioning service for automatic Windows sandbox setup @zm-oai - #46241 Repair Windows sandbox access to existing runtime children @chess-oai - #46245 Publish Guardian cached scores and coverage atomically @felixxia-oai - #46258 Preserve uploaded image file IDs in user message display history @kchainani-oai - #46264 Relax delegation guidance in the v2 `spawn_agent` description @surajs-oai - #46266 Expand Unicode math rendering with accents, symbols, and delimiters @etraut-openai - #46268 Add filesystem accessors bound to environment permissions @anp-oai - #46271 Enable MXC selection through Windows sandbox configuration @iceweasel-oai - #46278 Reduce R2 release upload concurrency and enable standard retries @anp-oai - #46279 Preserve Guardian's reusable history prefix across approval requests @jif-oai - #46281 Connect app-server workspace discovery to model request routing @acrognale-oai - #46288 Add opt-in overhead timing to code-mode responses @cassirer-openai - #46291 Filter saved reasoning overrides from requests when disabled @felixxia-oai - #46292 Preserve selected reasoning effort for synchronous Guardian reviews @felixxia-oai - #46293 Route skill discovery and loading through `EnvironmentAccess` @anp-oai - #46294 Separate thread startup metadata from replay history @charliemarsh-oai - #46297 Support catalog descriptions for all multi-agent V2 tools @rhan-oai - #46300 Centralize OAuth login and refresh handling with safer diagnostics @alexsong-oai - #46302 Validate network socket policies using the executor OS @seanh-oai - #46303 Serialize release asset uploads to avoid secondary rate limits @imac-oai - #46305 Avoid cloning turn items for app-server active turn lookups @charliemarsh-oai - #46306 Preserve bio policy errors as a distinct non-retryable error @rennie-openai - #46309 Preserve plugin caches across display metadata refreshes @vkg-oai - #46310 Defer environment selection changes until the next turn @sayan-oai - #46318 Add OAuth credential management for model provider gateways @alexsong-oai - #46319 Preserve web search actions and results in exec JSON output @etraut-openai - #46322 Set the Windows sandbox type in the pending environment test @sayan-oai - #46323 Record active plugin inventory in turn analytics @marksteinbrick-oai - #46324 Broaden compaction fallback to the current model @aibrahim-oai - #46328 Avoid persisting project trust for projectless directories @viyatb-oai - #46330 Move retry backoff into `codex-async-utils` @bolinfest - #46331 Defer environment network policy validation until after composition @seanh-oai - #46332 Dim conversation recaps in the TUI @etraut-openai - #46333 Handle disabled Windows sandbox accounts during cleanup @chess-oai - #46334 Share platform identity across path, network, and sandbox configuration @seanh-oai - #46335 Keep MCP policy evaluation consistent with turn environments @sayan-oai - #46482 Handle unknown error classifications and configure gateway OAuth @etraut-openai - #46486 Make TUI async question replies compatible with desktop @etraut-openai - #46487 Keep TUI exploration grouped across reasoning and nonzero exits @etraut-openai - #46488 Split analytics tests into focused suites @rhan-oai - #46490 Compose gateway OAuth with primary provider authentication @alexsong-oai - #46492 Unify TUI tool output previews with a three-row limit @etraut-openai - #46493 Allow `/review` during MCP startup @etraut-openai - #46494 Keep remote workspace roots under server control @etraut-openai - #46495 Preserve the provisioned macOS CLI's code-signing identity @riley-oai - #46498 Allow worktree sessions to use an existing local daemon @etraut-openai - #46499 Allow approved escalation with environment-owned network policies @sayan-oai - #46500 Block mutating fcntls in restricted macOS Seatbelt policies @nornagon-openai - #46501 Add configuration and feature diagnostics to report metadata @pakrym-oai - #46503 Use catalog model display names throughout the TUI @etraut-openai - #46504 Add six bundled TUI themes and theme-aware accents @etraut-openai - #46505 Support catalog parameter schemas for Multi-Agent V2 tools @rhan-oai - #46506 Share ChatGPT cookies between HTTP and WebSocket transports @jif-oai - #46507 Run Windows sandbox tests exclusively when local @jif-oai - #46508 Refresh the model catalog before turns after auth changes @jif-oai - #46509 Flush completed Guardian reviews before delivering decisions @jif-oai - #46510 Avoid cloning active turn items for metadata-only thread resumes @charliemarsh-oai - #46511 Avoid cloning excluded turn items during thread resume @charliemarsh-oai - #46512 Capture Guardian review checkpoints from live context @jif-oai - #46513 Rename `AgentControl` to `LocalAgentControl` @jif-oai - #46514 Replay guardian checkpoints into a fresh session in tests @jif-oai - #46516 Handle completion timing in the multi-agent resume test @jif-oai - #46517 Stabilize the TUI exit interruption test @jif-oai - #46518 Handle delayed process startup in the Guardian network approval test @jif-oai - #46519 Use paused time in sampler and model catalog timeout tests @jif-oai - #46521 Use macOS member fallback in shared process-group termination helpers @jif-oai - #46522 Enable Guardian parent-compaction reuse by default @felixxia-oai - #46523 Default local binding to true for MXC managed networking @iceweasel-oai - #46524 Retry busy executable launches in packaged daemon tests @felixxia-oai - #46527 Pin WinGet publishing dependencies in the release workflow @imac-oai - #46528 Bind executor plugin measurements to the trusted plugin version @papayo-oai - #46529 Allow compatible feature overrides when starting the shared daemon @etraut-openai - #46530 Gate reasoning effort updates on explicit model support @felixxia-oai - #46531 Preserve request-level reasoning effort for memory and title workers @felixxia-oai - #46532 Remove `com.apple.runningboard` from Seatbelt platform defaults @nornagon-openai - #46533 Disable reasoning summaries by default for new TUI threads @celia-oai - #46534 Support `env_inherit` in `workspace_root_test` @bolinfest - #46535 Allow unrelated namespace mounts in Linux sandbox socket checks @pash-openai - #46539 Add a command-start callback for tool lifecycle extensions @papayo-oai - #46540 Centralize retry decisions and delays in `CodexErr` @anp-oai - #46541 Add opt-in compaction after final responses @hlevy-openai - #46542 Add authenticated remote plugin measurement references @papayo-oai - #46543 Add bounded filesystem path diagnostics to `codex doctor` @etraut-openai - #46544 Expose declared onboarding skills in plugin details @victor-openai - #46546 Skip skill discovery when injecting items into initialized threads @hlevy-openai - #46547 Expose a backend-independent agent control contract @jif-oai - #46548 Advertise the control socket's WebSocket message size limit @konsti-openai - #46551 Add a composite action to build and smoke-test Codex packages @anp-oai - #46552 Move child completion routing into the agent controller @jif-oai - #46553 Return `LiveAgent` records from agent listing @jif-oai - #46554 Always use private desktops for legacy Windows sandboxes @iceweasel-oai - #46555 Track executor registrations across connection refresh and recovery @viyatb-oai - #46556 Keep step settings and approval environments consistent @sayan-oai - #46557 Fix active-turn environment selection lookup @sayan-oai - #46558 Add shared plugin catalog discovery APIs @TAFOYA-OAI - #46559 Encapsulate rollout budget accounting in `LocalAgentControl` @jif-oai - #46560 Fix stale environment config in the network approval test @sayan-oai - #46561 Support explicit provider model catalog URLs @andrewgu-oai - #46562 Add system proxy fallback for login and startup requests @abhinav-oai - #46564 Rename plugin MCP and app extension APIs @TAFOYA-OAI - #46565 Preserve reasoning order in TUI activity groups @etraut-openai - #46566 Allow recovery commands when the current thread is unavailable @etraut-openai - #46567 Separate plugin catalog listing from package resolution @TAFOYA-OAI - #46568 Use captured environment state for permissions and daemon recovery @sayan-oai - #46569 Set explicit turn triggers for exec and TUI requests @eddie-openai - #46570 Tag remote model fetch duration by authentication mode @andrewgu-oai - #46571 Preserve macOS Seatbelt exclusions in scratch directories @nornagon-openai - #46572 Add turn-start cloud plugin discovery to the MCP extension @TAFOYA-OAI - #46573 Add a standalone network proxy binary with JSON configuration @viyatb-oai - #46574 Notify users when asynchronous questions arrive in the TUI @etraut-openai - #46575 Preserve Windows package identity for sandboxed descendants @zm-oai - #46577 Allow thread instruction providers to share updates with subagents @vinh-gpt - #46578 Fix standalone network proxy policy initialization @etraut-openai - #46579 Limit the agent command center to 10 recent sessions on startup @etraut-openai - #46580 Keep Guardian reviews on the applied instruction snapshot @jif-oai - #46583 Deny XPC service lookups in macOS Seatbelt profiles @nornagon-openai - #46659 Move local child-process spawning into `codex-utils-pty` @charliemarsh-oai - #46660 Make local child process launch settings explicit @charliemarsh-oai - #46661 Avoid fork when spawning macOS filesystem helpers @charliemarsh-oai - #46673 Extend server version notices to prerelease and local clients @etraut-openai - #46680 Improve TUI contrast, keyboard hints, and picker layouts @etraut-openai - #46691 Standardize TUI picker presentation and fix wrapping boundaries @etraut-openai - #46692 Unify TUI picker styling and improve compact layouts @etraut-openai - #46694 Unify TUI completion popup styling and preserve result identity @etraut-openai - #46695 Unify TUI prompts with shared picker styling and layouts @etraut-openai - #46697 Unify TUI picker styling and improve compact session layouts @etraut-openai - #46708 Preserve logical source text and styles across TUI wrapping @etraut-openai - #46709 Add compact activity rendering and preserve transcript source text @etraut-openai - #46710 Restore rich tool details in persisted TUI transcripts @etraut-openai - #46711 Align persisted TUI activity groups and reasoning with live output @etraut-openai - #46712 Recover executed tool call metadata under recorder capacity pressure @ningyi-oai - #46714 Skip polling delays in the external queue lifecycle test @charliemarsh-oai - #46715 Split shell snapshot credential tests into focused cases @charliemarsh-oai - #46719 Extract the TUI transcript overlay into its own module @etraut-openai - #46720 Cache transcript layouts across measurement and rendering @etraut-openai - #46721 Anchor transcript scrolling to entries and bound viewport rendering @etraut-openai - #46722 Cancel pending transcript Home jumps on subsequent navigation @etraut-openai - #46731 Render dynamic tool activity and preserve TUI history ordering @etraut-openai - #46732 Add selection and copying to the transcript viewer @etraut-openai - #46733 Integrate the interactive transcript into the alternate-screen TUI @etraut-openai - #46734 Add transcript search and per-activity detail controls @etraut-openai - #46739 Add compact transcript browsing and prompt navigation to the TUI @etraut-openai - #46749 Stabilize transcript and composer interactions in the TUI @etraut-openai - #46750 Preserve startup drafts and submit them when the session is ready @etraut-openai - #46751 Add a warning footer and dedicated warnings viewer to the TUI @etraut-openai - #46752 Add an animated Codex logo to fresh conversations and onboarding @etraut-openai - #46832 Add independent controls for TUI visual effects @etraut-openai - #46835 Respect reduced motion in the voice UI @etraut-openai - #46837 Improve agent command center rows and page navigation @etraut-openai - #46838 Refine the agent command center layout and metadata editing @etraut-openai - #46839 Add status filter tabs to the agent command center @etraut-openai - #46840 Simplify agent command center hints and back navigation @etraut-openai - #46844 Select read-only permissions for temporary structured threads @etraut-openai - #46845 Honor the system clock preference in TUI completion timestamps @etraut-openai - #46849 Move fullscreen transcript control to TUI configuration @etraut-openai - #46855 Increase the default terminal probe timeout from 100 ms to 250 ms @etraut-openai - #46856 Support stadium nodes in Mermaid terminal diagrams @etraut-openai - #46857 Extract shared text selection helpers for the TUI @etraut-openai - #46858 Add mouse selection and editing to the fullscreen composer @etraut-openai - #46859 Limit the welcome logo animation to onboarding @etraut-openai - #46861 Remove analytics TUI snapshots @etraut-openai - #46862 Refresh analytics on identity changes and compact usage menus @etraut-openai - #46863 Stabilize usage dashboard navigation and add keyboard help @etraut-openai - #46864 Improve usage report layouts and preserve reading positions @etraut-openai - #46866 Enable mouse navigation in the TUI usage view @etraut-openai - #46867 Preserve streamed answers when subagents finish @fcoury-oai - #46877 Allow subagents to request MCP elicitation input @rennie-openai - #46879 Count TUI launches by fullscreen transcript configuration @etraut-openai - #46880 Preserve voice playback across pauses and packet bursts @etraut-openai - #46882 Streamline agent command-center shortcuts and layout @etraut-openai - #46883 Add `/tui` to choose the terminal UI mode for the next launch @fcoury-oai - #46884 Enable plain clicks on transcript links and style bare URLs @etraut-openai - #46895 Add right-click copying for transcript and composer selections @fcoury-oai - #46897 Honor the effective terminal color level in activity charts @etraut-openai - #46899 Make transcript list spacing uniform after streaming @fcoury-oai - #46902 Hide Back to bottom when the current transcript tail is visible @fcoury-oai - #46905 Identify local background servers in `/status` @etraut-openai - #46910 Preserve transcript position when opening settings pickers @etraut-openai - #46912 Keep quota warnings visible in the TUI @fcoury-oai - #46917 Enforce current provider requirements for the model catalog @alexsong-oai - #46922 Fix realtime V3 transcript reconciliation for handoffs @etraut-openai - #46929 Remove the `Error` prefix from TUI `config.toml` load errors @etraut-openai - #46931 Use shared, keymap-aware tips in the fullscreen composer @etraut-openai - #46938 Add independent TUI rendering toggles for Mermaid, math, and tables @etraut-openai - #46946 Populate the agents overview from background tool responses @etraut-openai - #46952 Preserve metadata in native user verification requests @teddywyly-oai - #46959 Add shared agent message-board extension interfaces @jif-oai - #46962 Avoid exposing config values in `codex doctor` errors @jif-oai - #46966 Add SQLite storage for local agent message boards @jif-oai - #46978 Implement paginated queries for the local agent message board @jif-oai - #46979 Index channel posts by timestamp for latest-message lookups @jif-oai - #46981 Canonicalize the workspace trust key in the doctor config test @jif-oai - #46985 Add collaboration tools for the agent message board @jif-oai - #46989 Expand agent message board tool integration coverage @jif-oai - #46993 Clarify Bazel lockfile verification failures @jif-oai - #46994 Route agent delivery through captured send requests @jif-oai - #46999 Decouple tool restrictions from session identity with `ToolPolicy` @felixxia-oai - #47010 Add agent inspection without restoring unloaded runtimes @jif-oai - #47017 Wire agent message boards into persistent multi-agent runtimes @jif-oai - #47026 Add diagnostics for rollout compression metadata failures @jif-oai - #47028 Align message-board tools with the multi-agent namespace @jif-oai - #47029 Delete persisted message boards with their root threads @jif-oai - #47030 Preserve ordered assistant context in Guardian reviews @felixxia-oai - #47035 Defer extension tool history materialization until first access @charliemarsh-oai - #47036 Share stored JSON payloads across code mode cells with `Arc` @charliemarsh-oai - #47038 Cache OS discovery for user agents and telemetry @charliemarsh-oai - #47039 Preserve delivered messages through post-tool hook failures @felixxia-oai - #47042 Recover corrupt message-board storage during thread deletion @jif-oai - #47049 Share SQLite pools across local agent message-board handles @jif-oai - #47050 Batch message-board subscriber reads into one SQLite result @jif-oai - #47055 Fetch local message board thread summaries in one query @jif-oai
Codex CLI is a coding agent from OpenAI that runs locally on your computer.
If you want Codex in your code editor (VS Code, Cursor, Windsurf), install in your IDE.
If you want the desktop app experience, run
codex app or visit the Codex App page.
If you are looking for the cloud-based agent from OpenAI, Codex Web, go to chatgpt.com/codex.
Quickstart
Installing and running Codex CLI
Run the following on Mac or Linux to install Codex CLI:
curl -fsSL https://chatgpt.com/codex/install.sh | sh
Run the following on Windows to install Codex CLI:
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
The standalone installers download from https://releases.openai.com/codex by default and fall back to GitHub Releases if a metadata or asset download is unavailable. To force GitHub Releases, set CODEX_INSTALLER_USE_RELEASES_OPENAI_COM to false (0 and no are also accepted):
curl -fsSL https://chatgpt.com/codex/install.sh | CODEX_INSTALLER_USE_RELEASES_OPENAI_COM=false sh
$env:CODEX_INSTALLER_USE_RELEASES_OPENAI_COM='false'; irm https://chatgpt.com/codex/install.ps1 | iex
Codex CLI can also be installed via the following package managers:
# Install using npm
npm install -g @openai/codex
# Install using Homebrew
brew install --cask codex
Then simply run codex to get started.
You can also go to the latest GitHub Release and download the appropriate binary for your platform.
Each GitHub Release contains many executables, but in practice, you likely want one of these:
- macOS
- Apple Silicon/arm64:
codex-aarch64-apple-darwin.tar.gz - x86_64 (older Mac hardware):
codex-x86_64-apple-darwin.tar.gz
- Apple Silicon/arm64:
- Linux
- x86_64:
codex-x86_64-unknown-linux-musl.tar.gz - arm64:
codex-aarch64-unknown-linux-musl.tar.gz
- x86_64:
Each archive contains a single entry with the platform baked into the name (e.g., codex-x86_64-unknown-linux-musl), so you likely want to rename it to codex after extracting it.
Using Codex with your ChatGPT plan
Run codex and select Sign in with ChatGPT. We recommend signing into your ChatGPT account to use Codex as part of your Plus, Pro, Business, Edu, or Enterprise plan. Learn more about what's included in your ChatGPT plan.
You can also use Codex with an API key, but this requires additional setup.
Docs
This repository is licensed under the Apache-2.0 License.
