New Features
- Add tools for creating and listing managed Git worktrees from trusted local projects when the worktrees feature is enabled. (#50148)
- Pin tasks in the agent Command Center with
pand keep them in a shared Pinned group when supported by the server. (#51500) - Navigate and copy transcript blocks with
/copy, useCtrl+Insertto copy selections, and tune mouse-wheel scrolling withtui.mouse_scroll_speed. (#50434, [#50215], [#50209]) - Make URLs clickable in approval headers, questions, MCP prompts, warnings, banners, and verification prompts, including when links wrap across lines. (#51439, [#51449], [#51450], [#51451], [#51452], [#51458])
- Configure live web access and remote compaction capabilities for custom Responses-compatible model providers. (#50459)
- Add JavaScript helpers for streaming promise results as they settle, plus opt-in ranked tool search in Code Mode. (#51126, [#51209])
Bug Fixes
- Respect server model and reasoning-summary defaults for new TUI threads while retaining explicit launch overrides. (#50013, [#50811], [#50913])
- Preserve existing CRLF line endings in
apply_patchupdates without requiring an opt-in. (#51203) - Fix Linux sandbox startup with multiple denied files, reject writable sandbox-construction executables, and keep ripgrep configuration from weakening deny-glob masks. (#50059, [#51211], [#51407], [#51527])
- Restore ordinary drive-letter file access on Windows 10 and match Windows sandbox temp permissions to the child process environment. (#51511, [#51512])
- Honor server
Retry-Afteradvice for retryable Responses and WebSocket failures. (#50418, [#51440]) - Fix archive checksum verification when installing through Windows PowerShell with PowerShell 7 module paths present. (#51257)
Chores
- Publish a signed PowerShell installer with Windows releases. (#51158)
- Keep older stable releases and prereleases from replacing newer stable download targets or installer aliases. (#51186, [#51425])
Changelog
Full Changelog: https://github.com/openai/codex/compare/rust-v0.161.0...rust-v0.162.0
- [#50013] Honor server model defaults when starting fresh TUI threads @etraut-openai
- [#50018] Use descriptor-safe helpers for executable test fixtures @jif-oai
- [#50019] Protect the guardian decisions API key from environment forwarding @swastik-oai
- [#50026] Preserve user restrictions in Guardian handoff context @jif-oai
- [#50035] Follow MCP tool pagination in legacy protocol mode @jif-oai
- [#50039] Keep transcript Find results readable after closing the query @fcoury-oai
- [#50045] Keep transcript Find expansion scoped to the current match @fcoury-oai
- [#50046] Stabilize Windows voice build cache keys across tool reinstalls @anp-oai
- [#50050] Keep plugin and skill snapshots scoped to each step @sayan-oai
- [#50052] Preserve question context in recovered TUI answer drafts @imac-oai
- [#50054] Check token estimate filtering directly on the tracing subscriber @tamird
- [#50058] Upgrade Windows bindings to
windows-sys0.61.2 @tamird - [#50059] Fix Linux sandbox startup with multiple denied files @yuzhu-oai
- [#50066] Add a bounded Decisions transport for Guardian comparison classification @swastik-oai
- [#50082] Enable dynamic tool inheritance for fresh V2 subagents @ke-oai
- [#50083] Add paginated reverse lookup for thread attachments @joeytrasatti-openai
- [#50087] Preserve queued agent mail across session eviction @jif-oai
- [#50093] Prevent shared instruction providers from delegating to themselves @bryanashley
- [#50094] Add attachment owner lookup to the app-server @joeytrasatti-openai
- [#50099] Add opt-in Decisions comparison for Guardian V2 @swastik-oai
- [#50105] Consolidate chat composer footer logic in
footer_state@imac-oai - [#50109] Keep fullscreen prompts bounded and scrollable @imac-oai
- [#50112] Centralize TUI loading glyphs and frame scheduling @imac-oai
- [#50113] Add a native gRPC client for cloud thread resume and attach @bc-openai
- [#50128] Expose the model selected for a running turn's next step @sayan-oai
- [#50129] Preserve Windows environment variables for remote MCP servers @aidanv-oai
- [#50131] Add opt-in JSON diagnostics for TCP tunnels @richardopenai
- [#50140] Use the server permission catalog for TUI permission shortcuts @etraut-openai
- [#50148] Add managed worktree tools to the TUI @bc-openai
- [#50162] Bound in-flight file opens in exec-server @anp-oai
- [#50166] Upgrade
ageto 0.12.1 and remove the obsolete advisory exception @michaelm-openai - [#50177] Enable writable file streaming in exec-server @anp-oai
- [#50183] Add
dotsto issue labeler guidance @etraut-openai - [#50189] Replace the Figma OAuth exception with Mercado Pago @mzeng-openai
- [#50199] Restore the account email in
/statusafter account updates @etraut-openai - [#50200] Report the configured TUI mode in
codex doctor@etraut-openai - [#50207] Release stable Markdown tables into scrollback during streaming @etraut-openai
- [#50209] Make transcript mouse scroll speed configurable @etraut-openai
- [#50215] Support Ctrl+Insert for copying TUI selections @etraut-openai
- [#50216] Use the shared text editor for command-center task renaming @bc-openai
- [#50219] Bound tmux option probes to one second @etraut-openai
- [#50273] Record Guardian V2 Decisions agreement and latency metrics @swastik-oai
- [#50339] Add end-to-end coverage for MCP sandbox state enforcement @bolinfest
- [#50345] Keep the subagent picker consistent with thread archive state @etraut-openai
- [#50348] Back off automatic remote control reconnects with jitter @cooper-oai
- [#50354] Skip unrelated subtrees during config alias normalization @btraut-openai
- [#50359] Render ANSI styles in TUI hook system messages @etraut-openai
- [#50360] Remove initial messages from session configuration events @owenlin0
- [#50375] Use printable ASCII terminal titles under GNU Screen @imac-oai
- [#50380] Fix thread unloading after disconnect during MCP startup @yuzhu-oai
- [#50384] Allow opting into 16 KiB ARM64 code pages for macOS signing @chess-oai
- [#50389] Honor configured keybindings before transcript navigation @etraut-openai
- [#50396] Honor pager bindings for transcript page keys @bc-openai
- [#50402] Consolidate command execution output into
aggregated_output@owenlin0 - [#50416] Clarify Git worktree choices for new and forked conversations @bc-openai
- [#50418] Honor Retry-After headers in failed Responses events @anp-oai
- [#50427] Cap persisted command output in paginated history at 64 KiB @owenlin0
- [#50431] Preserve terminal hyperlinks in agents overview previews @bc-openai
- [#50433] Allow API-key accounts to use Daybreak in the TUI @etraut-openai
- [#50434] Add keyboard copy selection to the owned transcript @bc-openai
- [#50435] Persist additional tool definitions in rollout history @pakrym-oai
- [#50437] Add a CLI command to uninstall the legacy Windows sandbox @chess-oai
- [#50441] Support ordered response items in world-state context updates @pakrym-oai
- [#50442] Preserve native USD amounts in thread usage responses @asohrabi-oai
- [#50443] Stabilize paused-time code-mode service tests @seanh-oai
- [#50445] Assert that only direct tool calls emit timing events @seanh-oai
- [#50446] Bundle rollout attachments into a gzip tar archive @dkovalenko-oai
- [#50447] Remove the provider capability gate for tool namespaces @pakrym-oai
- [#50454] Measure rollout persistence size reductions @owenlin0
- [#50458] Truncate oversized MCP results in paginated thread history @owenlin0
- [#50459] Add capability overrides for custom model providers @celia-oai
- [#50462] Populate thread previews from delegated task inputs @bc-openai
- [#50464] Add the
incremental_toolsfeature flag @pakrym-oai - [#50465] Retry registry authentication outages and jitter executor reconnects @apanasenko-oai
- [#50467] Copy transcript selections as literal text while preserving rich HTML @fcoury-oai
- [#50470] Account for JSON overhead when truncating MCP tool results @owenlin0
- [#50472] Enable Ultrafast service tiers for Amazon Bedrock Astra models @celia-oai
- [#50477] Use the app-server default output cap for TUI workspace commands @etraut-openai
- [#50480] Skip managed config loading for registered Windows sandbox refreshes @zm-oai
- [#50499] Include installer stderr in daemon update failures @etraut-openai
- [#50503] Use Enter to accept transcript Find results and Escape to cancel @fcoury-oai
- [#50504] Center TUI confirmations over their retained backdrop @bc-openai
- [#50505] Keep Command Center selection adjacent after task removal @bc-openai
- [#50507] Record Windows sandbox service stop diagnostics @zm-oai
- [#50510] Require GovCloud guidance acknowledgment after Bedrock setup @jackz100
- [#50516] Add scenario coverage for remote
/compactcontext preservation @pakrym-oai - [#50525] Reject unknown TUI keys in strict config validation @etraut-openai
- [#50531] Persist realtime transcript tails before closure without inference @guinness-oai
- [#50536] Keep shared MCP types stable in Code Mode exec descriptions @aibrahim-oai
- [#50540] Send incremental tool catalog updates in Responses Lite @pakrym-oai
- [#50546] Keep MCP resource helpers available in code mode @aibrahim-oai
- [#50555] Skip daemon auto-start for Windows-mounted WSL homes @etraut-openai
- [#50558] Avoid reading the current directory when resolving absolute paths @etraut-openai
- [#50559] Distinguish daemon release identity from executable contents @etraut-openai
- [#50562] Keep Code Mode tool discovery guidance stable across catalog changes @aibrahim-oai
- [#50564] Allow transcript selection and copying while bottom modals are open @etraut-openai
- [#50687] Keep third-party tools deferred in strict Code Mode Only @aibrahim-oai
- [#50695] Preserve local Markdown link labels in the TUI @bc-openai
- [#50700] Let the transport create the Windows remote-control socket directory @etraut-openai
- [#50720] Decode Windows Terminal's mapped Shift+Enter sequence @bc-openai
- [#50727] Show model and reasoning effort near the top of task details @etraut-openai
- [#50741] Keep environment-backed tools exposed across readiness changes @won-openai
- [#50756] Show unavailable slash commands when searched in side conversations @bc-openai
- [#50764] Allow
/archivewhile a turn is running @bc-openai - [#50781] Restrict TUI MCP startup notifications to owned threads @etraut-openai
- [#50782] Retry Windows daemon release publication on transient file locks @etraut-openai
- [#50786] Remember Command Center grouping across launches @bc-openai
- [#50788] Open slash commands from empty drafts in Vim Normal mode @bc-openai
- [#50802] Fall back to mklink when Windows daemon junction updates are denied @etraut-openai
- [#50803] Use the managed daemon for eligible remote-control launches @etraut-openai
- [#50804] Preserve review lifecycle ordering on failure @etraut-openai
- [#50808] Prune TUI snapshots and consolidate behavior tests @etraut-openai
- [#50811] Honor server reasoning summary defaults in new TUI threads @etraut-openai
- [#50913] Use server model defaults for connected TUI fresh starts @etraut-openai
- [#50940] Recover malformed Windows deny-read ACL state safely @zm-oai
- [#50962] Gate stable environment tool exposure behind a feature flag @aibrahim-oai
- [#50964] Track inference tool changes in turn analytics @aibrahim-oai
- [#50977] Isolate tracing in the strict third-party tool deferral test @alishobeiri-oai
- [#51061] Gate Guardian continuation tests on classifier request capture @jif-oai
- [#51063] Honor prior cancellation before starting Codex delegates @jif-oai
- [#51064] Ignore stale refresh responses in agents overview tests @jif-oai
- [#51065] Scope Guardian V2 response timing to snapshot sampling @swastik-oai
- [#51067] Use issuing-step context for Guardian MCP elicitation reviews @jif-oai
- [#51070] Preserve trusted-tool context in Guardian Decisions requests @swastik-oai
- [#51117] Install full context in compaction replacement history @pakrym-oai
- [#51119] Clarify incremental tool namespace updates in Responses Lite @akira-oai
- [#51126] Add promise settlement streaming helpers to code mode @cconger
- [#51133] Allow Guardian Decisions to fall back to
OPENAI_API_KEY@swastik-oai - [#51137] Recover Guardian reviews from parent checkpoints @felixxia-oai
- [#51139] Force fresh Guardian sessions for parent-checkpoint recovery @felixxia-oai
- [#51140] Isolate Guardian checkpoint recovery flags per review attempt @felixxia-oai
- [#51156] Send base instructions as Responses input messages @pakrym-oai
- [#51157] Enforce required environment skills before model inference @anp-oai
- [#51158] Sign the PowerShell installer in Windows releases @chess-oai
- [#51184] Remove obsolete Guardian thread-context enables from tests @felixxia-oai
- [#51185] Retry transient gRPC code-mode session admission failures @cassirer-openai
- [#51186] Prevent stable release pointers from moving backward @andrewgu-oai
- [#51188] Record base instructions in incremental tool history @pakrym-oai
- [#51191] Clean up Unix app-server control-socket startup lock files @etraut-openai
- [#51192] Wait for SIGCONT when resuming the TUI @etraut-openai
- [#51193] Test thread archiving before the first turn @btraut-openai
- [#51194] Add browser extension request headers to config requirements @jn-openai
- [#51198] Allow concurrent release builds while serializing publication @andrewgu-oai
- [#51200] Upgrade Bazel to 9.2.0 and refresh the module lockfile @anp-oai
- [#51202] Distinguish namespace removals in incremental tool updates @akira-oai
- [#51203] Make apply_patch preserve line endings unconditionally @charliemarsh-oai
- [#51206] Record initialization analytics for resumed subagents @peilin-openai
- [#51207] Gate CLI Daybreak controls and selection behind an opt-in feature @julee-oai
- [#51209] Add ranked tool discovery to JavaScript code mode @zamoshchin-openai
- [#51211] Reject sandbox-writable bubblewrap executables from PATH @viyatb-oai
- [#51215] Measure raw MCP tool catalog sizes in telemetry @owenlin0
- [#51217] Preserve review targets and scope misalignment continuation metadata @yunhan-wei
- [#51220] Honor the OTLP metrics temporality preference @daniel-oai
- [#51221] Separate environment requests from runtime selections @anp-oai
- [#51223] Remove legacy personality template metadata @rhan-oai
- [#51230] Make session lookup pagination stable and report listing failures @etraut-openai
- [#51235] Remove default model labels from TUI model pickers @etraut-openai
- [#51241] Add a partial answer message phase @rb-oai
- [#51249] Handle partial answers consistently across agent workflows @rb-oai
- [#51253] Enforce Fast and Ultra Fast policies independently @dpatel-oai
- [#51256] Start the Windows sandbox service during registered Core setup @zm-oai
- [#51257] Fix installer checksum verification under Windows PowerShell @zm-oai
- [#51260] Handle partial answers in realtime routing and thread search @rb-oai
- [#51329] Remove partial-history subagent forks @jif-oai
- [#51330] Measure total Guardian approval decision duration @jif-oai
- [#51331] Track sub-agent result delivery outcomes @jif-oai
- [#51332] Record multi-agent wait duration by outcome @jif-oai
- [#51333] Record the multi-agent version in turn analytics @jif-oai
- [#51334] Count Guardian denial-limit interruptions in telemetry @jif-oai
- [#51335] Update collaboration snapshots for full-history fork instructions @jif-oai
- [#51347] Measure shell snapshot use and wait time per command @jif-oai
- [#51350] Allow larger shell snapshots when replaying from a file @jif-oai
- [#51355] Add bounded diagnostics for agent spawn failures @jif-oai
- [#51378] Keep Guardian v2 WebSocket pools warm with concurrent replenishment @jif-oai
- [#51391] Make URLs in asynchronous question titles clickable @charliemarsh-oai
- [#51396] Let late low-risk scores complete pending Guardian reviews @jif-oai
- [#51400] Prevent later Guardian scores from releasing earlier pending reviews @jif-oai
- [#51402] Preserve turn attribution across recovery and compaction @eddie-openai
- [#51407] Protect ripgrep lookup during Linux sandbox construction @viyatb-oai
- [#51411] Suppress repeated image paste presses in legacy terminals @etraut-openai
- [#51415] Expose and persist turn lineage across the app server @eddie-openai
- [#51419] Preserve turn attribution when queued mail wakes durable sleep @eddie-openai
- [#51420] Finish idle thread unloads after slow shutdown @jif-oai
- [#51421] Include root turn IDs in host-owned Apps tool calls @eddie-openai
- [#51422] Accept environment requests at thread and turn settings boundaries @anp-oai
- [#51425] Skip stable installer alias publishing for prereleases @zsol-openai
- [#51426] Remove the Bazel JVM override for Windows ARM64 voice builds @anp-oai
- [#51427] Prevent invalidated wakeups from starting a turn @jif-oai
- [#51433] Show hook status messages as titles in the hooks browser @abhinav-oai
- [#51439] Preserve clickable URLs in TUI approval headers @charliemarsh-oai
- [#51440] Honor Retry-After in WebSocket error events @anp-oai
- [#51441] Fix core integration tests for updated turn APIs @anp-oai
- [#51449] Make URLs clickable in TUI user input questions @charliemarsh-oai
- [#51450] Make URLs clickable in MCP elicitation prompts @charliemarsh-oai
- [#51451] Make URLs in the TUI warnings viewer clickable @charliemarsh-oai
- [#51452] Make banner URLs clickable across wrapped lines @charliemarsh-oai
- [#51457] Preserve status usage hyperlinks when the URL wraps @charliemarsh-oai
- [#51458] Make URLs clickable in user verification prompts @charliemarsh-oai
- [#51459] Preserve wrapped help links in Windows sandbox prompts @charliemarsh-oai
- [#51460] Retry realtime sideband attachment while an existing call activates @bullman-oai
- [#51463] Record resolved model and reasoning effort in sub-agent activity @sdcoffey
- [#51465] Add an optional JSON transcript format for Guardian @felixxia-oai
- [#51466] Keep Guardian transcript records structured through budget recovery @felixxia-oai
- [#51467] Keep submission logs useful without exposing payloads @chess-oai
- [#51470] Raise the managed app-server file descriptor limit on Unix @etraut-openai
- [#51471] Preserve clickable URLs in pending input previews @charliemarsh-oai
- [#51472] Preserve clickable URLs in TUI selection rows @charliemarsh-oai
- [#51473] Preserve URL destinations in wrapped hook details @charliemarsh-oai
- [#51480] Preserve tool declaration mode across resumed context windows @pakrym-oai
- [#51482] Use PathUri for skill identity and path matching @anp-oai
- [#51483] Add correlated, credential-free rendezvous connection diagnostics @alexi-openai
- [#51491] Classify executor capability root ownership independently of parsing @stevenlee-oai
- [#51492] Remove obsolete fields from persisted turn context @pakrym-oai
- [#51493] Bind capability roots to environment selections @anp-oai
- [#51499] Load rollout history on a single blocking worker @charliemarsh-oai
- [#51500] Add shared task pinning to the agent command center @etraut-openai
- [#51502] Bound relay connection attempts and handle pongs during blocked writes @alexi-openai
- [#51503] Expose selected environments to MCP contributors @mtsui-oai
- [#51510] Preserve live TUI settings when configuration reloads fail @imac-oai
- [#51511] Fix Windows 10 drive-letter opens for no-follow filesystem operations @zm-oai
- [#51512] Align Windows sandbox temp permissions with the child environment @zm-oai
- [#51515] Expose detailed agent tree shutdown failure reports @keitht-openai
- [#51517] Pass thread persistence intent to attachment uploads @kchainani-oai
- [#51525] Preserve the CLI MXC preference in executor config reads @zm-oai
- [#51527] Ignore ripgrep configuration when expanding sandbox deny globs @viyatb-oai