Repository navigation
Conversation
Remove the obsolete `windows_sandbox_private_desktop` field from the `EnvironmentConfig` initializer in the active-turn environment fallback test so it matches the current struct definition. GitOrigin-RevId: 4441dc8ed3d4bfcd4c1de093e829c065d323f41a
## Why Providers need to serve Codex model metadata independently of their inference endpoint. A custom inference `base_url` alone should not opt API-key sessions into remote catalog discovery. ## What changed - Add `model_catalog_url` to provider configuration and thread-config serialization. Fetch the full catalog URL with provider authentication, headers, query parameters, and `client_version`, while preserving inference routing. - Require an explicit catalog URL for API-key discovery with a custom base URL. Keep default OpenAI discovery on the Codex backend, and apply `api_key_model_discovery` gating to provider API keys and cached catalogs. - Include the catalog URL in cache identity so different catalogs do not share cached metadata. - Limit explicitly configured catalog responses to 1 MiB, reject redirects, and suppress URL and response diagnostics that could expose credentials. ## Testing Add coverage for catalog configuration round-trips, query encoding, authentication and header reuse, cache identity and discovery gating, oversized responses, and redirect rejection without credential forwarding. Add an integration test verifying that catalog model metadata and instructions reach conversation requests. GitOrigin-RevId: 7f6ac5eec257278685e1867a6bcebae6514a365a
## Why Login and enterprise configuration bootstrap can fail when their endpoints are reachable only through the system proxy, before cloud configuration can enable `respect_system_proxy`. ## What changed - Enable `features.system_proxy_fallback` by default, honor managed feature requirements, and prevent project configuration from changing it. - Retry account discovery and cloud configuration GETs through the system proxy after connection failures or timeouts, bounding the initial request and body read to five seconds. - Retry OAuth authorization-code exchange only on connection failures before any redirect, with a ten-second connection timeout. Reuse the successful client for the subsequent API-key exchange to avoid changing routes. - Increase workspace discovery and cloud configuration timeouts to 15 and 20 seconds, respectively, to accommodate fallback. ## Testing Add coverage for proxy-only browser login through the first completed turn, including cloud configuration enabling `respect_system_proxy` without a restart. Cover stalled GET bodies, preserved request headers, disabled fallback, managed requirements, and project configuration restrictions. Verify that OAuth HTTP errors, redirects followed by connection failures, and failures after sending the POST do not trigger proxy retries, while successful redirects remain supported. GitOrigin-RevId: 854eeeac186bb4865218ce645019c1e4bff85425
## What changed - Rename the extension providers to `PluginMcpProvider` and `PluginAppProvider`, and use app terminology for plugin app declarations. - Rename the MCP contributor to `PluginContributor` and its installation entry point to `install_plugins`; update the app-server call site and existing tests. - Move the corresponding modules and tests to plugin-based names, change the contributor ID to `plugin`, and update tracing spans and log messages to match. GitOrigin-RevId: 7106d2965675265f39e186e57cc334161bdb90d3
## Why Reasoning summaries need to retain their position among computer actions and exploration commands, including when they arrive before a running call completes. ## What changed Share ordered call and reasoning storage through `ActivityGroup` and let history cells accept reasoning through `append_reasoning`. Computer activity and exploration groups now retain reasoning while calls are running, showing it in order in the expanded transcript while keeping compact previews and raw output free of reasoning. ## Testing Add regression snapshots for reasoning during a follow-up exploration command and for computer activity with multiple intervening and trailing summaries. Verify identical live and replayed computer activity across compact, expanded, and raw output. GitOrigin-RevId: 92607b38fd4b0379616c1ae50b5da1068c8534c3
…i#46566) ## Why An unavailable thread blocked slash commands even while the server remained connected, preventing users from starting or resuming a conversation and accessing local commands. ## What changed - Allow explicitly supported recovery and local commands, including `/new`, `/clear`, `/resume`, `/status`, and `/copy`, through configured submit keys when the current thread is unavailable. - Keep other drafts and attachments intact, require commands to occupy a single line, and expand collapsed pastes without dispatching them on the same keypress. Disconnected input remains restricted to editing. - Clear stale review and MCP startup activity and recover prompts awaiting turn start into the retained input queue so recovery commands can proceed. ## Testing Add composer and app tests for command routing, custom submit bindings, blocked draft preservation, paste expansion, and `/new` and `/clear` creating writable sessions despite stale activity. GitOrigin-RevId: 2f5589d615276eb50c69490829dc042bba3f12a9
## What changed - Move catalog types and the `PluginProvider` listing interface into `codex-core-plugins`, with a concrete `PluginListQuery` carrying thread, turn, and MCP resource context. - Remove root resolution from `PluginProvider`; keep executor package access in `ExecutorPluginProvider::resolve_bound`, which retains the filesystem used to resolve the package. - Add shared provider result and error types, and re-export the listing API from `codex-mcp-extension`. ## Testing Update executor and manifest tests to use `resolve_bound`, and assert that malformed manifest errors preserve the underlying `serde_json::Error` as their source. GitOrigin-RevId: c6cd5a0269ed3b8ac9b93f306a70821e63e3671e
…penai#46568) ## Why When a selected environment is unavailable, permission fallbacks can use the turn's initial environment and workspace roots. Daemon recovery can also miss a local environment that finishes starting after the turn begins. ## What changed - Resolve fallback permissions from thread defaults using the captured selection's workspace root URIs, including when setup is starting or has failed. - Apply this resolution to Guardian reviews, permission instructions, and sandbox context selection. - Capture daemon recovery from the latest step inputs and refresh environment readiness before checking recovery eligibility. ## Testing Add regression tests for Guardian resolving project-root restrictions against an unavailable captured environment's workspace and for daemon recovery including a local environment that finishes starting during a turn. GitOrigin-RevId: c76d83d786fdc9c444b78ecbc335b02a20805c58
## What changed Set `turn_trigger` to `exec` for exec turns and `user` for TUI turns when sending `turn/start` requests. ## Testing Extend exec resume and embedded TUI tests to check `x-codex-turn-metadata`, including thread IDs, the TUI turn ID, and the expected triggers. Update the active-turn steering test to verify that user steering preserves the original `goal` trigger. GitOrigin-RevId: 56125f64b5c47e7c538663d748b3a5f404e68316
## What changed Add an `auth_mode` tag to `codex.remote_models.fetch_update.duration_ms`: `api_key` when a provider API key is configured or API key authentication is active, `chatgpt` for other available authentication, and `none` when neither applies. Start the timer after retrieving authentication. GitOrigin-RevId: 7aa8f3af4a9fe38fc903fa2c8698b537b692850a
## Why Implicit temporary-directory grants can bypass filesystem restrictions and protected project metadata. Moving an ancestor can also relocate protected paths beyond their pathname exclusions. ## What changed - Route process scratch access through the normal Seatbelt exclusion rules so it respects unreadable paths, read-only paths, and protected project metadata. - Protect the parents of both logical symlink paths and their resolved targets against relocation. - Apply privileged daemon socket protections after all grants, deny access to the socket directory itself, and prevent ancestor removal or renaming while allowing sibling writes. GitOrigin-RevId: f4cbcf5867e204b0cded0812aac1851b3d444328
) ## What changed - Support an optional cloud provider alongside executor plugins, refreshing its thread-scoped catalog at each regular turn when plugins are enabled. - Use cloud connector metadata for app attribution without starting cloud-declared MCP servers. - Scope cached catalogs to authentication and Apps availability. Retain the previous catalog on discovery failure within the same scope, clear stale catalogs on auth changes, and reject results completed under outdated credentials. - Add a cancellable regular-task startup phase that reconciles MCP before discovery and reapplies contributor state afterward without invalidating resource caches. ## Testing Add regression coverage for per-turn refresh, empty catalogs, discovery failures, plugin disabling, auth changes during discovery, MCP reconciliation and cancellation, and cloud app attribution alongside executor MCP tools. GitOrigin-RevId: 8469eb109ea316e21cbc4122c52ad8000caeef03
…#46573) ## Why Allow the network policy proxy to run without a full Codex permissions profile. ## What changed - Add `codex-network-proxy --config <PATH>` to load a standalone JSON file containing a `network` object and run the proxy independently of Codex. - Require `network.enabled = true`, limit configuration size to 1 MiB, and reject unknown fields, including nested MITM hook fields, and trailing JSON values. - Enable HTTPS MITM automatically for limited mode or configured `mitm_hooks`, while supporting explicit `mitm` configuration. - Document the standalone configuration and invocation. ## Testing Add tests for MITM defaults, dynamic policy keys, unknown fields, and trailing JSON values. Add a regression test that verifies `wait()` promptly returns an error when either the HTTP or SOCKS listener fails. GitOrigin-RevId: ba20b9c3022b16abaa5597f473c418cfc06c18ee
) ## What changed Send an `async-question` notification when new unanswered questions arrive, honoring existing notification settings and taking priority over turn completion. Show a shortened question title for a single question or a count for a batch. Empty batches, duplicate deliveries, and replayed history do not trigger notifications. ## Testing Add tests covering live arrival, replay and duplicate suppression, notification settings, priority over turn completion, batch summaries, and long-title truncation. GitOrigin-RevId: 205dc3ff5461c2166159af5143b0ca7279a87f42
…6575) ## Why Package context propagation was limited to verified `codex-command-runner.exe` processes, preventing other packaged callers from passing their OS-assigned identity to sandboxed children. ## What changed Use the current process's OS package identity to decide whether to preserve desktop app context in both regular and ConPTY sandbox launches. Remove executable-name and staged-runner verification from this decision. Reject callers without package identity when `CODEX_WINDOWS_REGISTERED_CORE=1`; otherwise, unpackaged callers continue without preserving app context. GitOrigin-RevId: 52eb2fe33c8746d898b5d7ebf53bd001a55b5506
…penai#46577) ## Why Subagents inherit applied instruction snapshots, so later provider updates do not reach running descendants. Hosts need an explicit way to share current thread instructions across an agent tree. ## What changed - Add `ThreadInstructionsProvider::share_with_subagents()`, defaulting to `false`. Opted-in descendants refresh instructions at their next model-request boundary. - Retain shared providers across root unloads and descendant reloads. Let a resumed root replace the provider for surviving descendants, or preserve their last shared instructions when it supplies a non-sharing provider. - Keep providers scoped to their root tree and preserve snapshot-only instructions for root forks and isolated sessions, including Guardian reviews. ## Testing Add coverage for child and grandchild instruction updates and clearing, provider replacement after root restart, lazy descendant reloads, default snapshot inheritance, and isolation between roots and Guardian sessions. GitOrigin-RevId: 44c9fb7fe9ae1f96156bdf3c47ab6c4a81bd65e9
Pass `Platform::native()` to `build_config_state` in the standalone network proxy to satisfy its required executor OS argument and validate socket paths for the host platform. GitOrigin-RevId: d3ce8c513a3a6c5ffea6522d8b830deb40f1dfc8
…ai#46579) ## What changed Reduce the initial recent-session seed from 20 to 10, alongside loaded sessions. Use a shared `RECENT_SESSION_LIMIT` for pagination, collection, and final truncation. ## Testing Update the overview test for the 10-session limit and add a snapshot of the recent-session list after restart. GitOrigin-RevId: f315f4848e8d2091eb229cfdc3c02932aaf7ba8c
## Why Shared thread instructions can change after an action is generated but before Guardian reviews it. Polling the live provider during review can give the reviewer different instructions from those applied to the action. ## What changed Initialize Guardian reviewers with the user and thread instructions captured in the review session reuse key, keeping the review tied to the applied snapshot. ## Testing Add a regression test that updates and removes shared instructions between action generation and review in a running descendant thread. Verify that the worker picks up each change, Guardian uses the applied instructions, and instruction changes create new reviewer sessions even while ancestor threads remain idle. GitOrigin-RevId: 4980762bc7b6646a1691a43be93c71a7dc611ec6
GitOrigin-RevId: 76d9deb2ea5ddf32b165b42d538e797c38bcdfc1
## What changed Expose the shared `Child` type and `spawn_child` function from `codex-utils-pty`, and update the MCP stdio transport to use them. Move the existing macOS spawning implementation and its tests into the utility crate, preserving platform-specific spawning, piped stdio, and kill-on-drop behavior. GitOrigin-RevId: 26c2fb2f22cdba907aa9d18cab7dc8c4ac1c909e
## Why The native macOS backend cannot inspect every setting or callback on a Tokio command. A shared, constrained launch API makes the supported settings explicit for both backends. ## What changed - Replace `spawn_child` with `codex_utils_pty::Command`, enforcing an explicitly supplied environment, piped stdio, and kill-on-drop behavior. - Add `ProcessMode::Inherit` and `ProcessMode::NewGroup`, honoring the selected mode in native macOS and Tokio spawning. - Share the `Child` wrapper across platforms and migrate local MCP server launching to the new API, retaining its new process group and Windows suspended-spawn support. ## Testing Adapt the existing macOS spawn compatibility and child lifecycle tests to the new API. Add a regression test that checks inherited and new process groups with both backends. GitOrigin-RevId: 3e7a401659e3a8a94a13c4ff58d67bdcd2eea33d
## Why Filesystem helpers use a `pre_exec` callback to close inherited descriptors on macOS, forcing a fork before execution. Native spawning needs to preserve that isolation and support the socket used for file descriptor transfer. ## What changed - Launch filesystem helpers through `codex_utils_pty::Command`, using `posix_spawn` with `POSIX_SPAWN_CLOEXEC_DEFAULT` on macOS and returning native launch errors without a fork fallback. - Extend the shared command wrapper with explicit descriptor and fallback policies, socket-backed stdin, and custom `argv[0]` support. - Add `Child::wait_with_output` to drain stdout and stderr concurrently, retain kill-on-drop behavior on cancellation, and keep output pipes open until the child exits. ## Testing Add regression tests for fork-free sandboxed reads, writes, and file descriptor transfers; sandbox denial of outside paths and symlink escapes; descriptor isolation; bidirectional socket stdin; custom `argv[0]`; executable-format errors; and output-pipe lifetimes. GitOrigin-RevId: d49c00787f30ec0bc196f9e066a0770fc8151152
…#46673) ## Why Server version notices previously required both versions to be stable releases, leaving prerelease and local clients without notices about differing background services. ## What changed - Use semantic version parsing to distinguish older servers from version mismatches. - Compare stable clients against older releases, including prereleases. Compare prerelease clients by precedence within the same release line and report other release lines as different. - Report differing versions for local clients (`0.0.0` or versions with build metadata). Ignore malformed versions. - Show the corresponding `older than` or `different from` notice and `<` or `≠` overview indicator, while preserving `/daemon` guidance and the `show_server_version_notice` setting. ## Testing Add version-policy tests and notice snapshots covering prerelease ordering, local builds, mismatches, and malformed versions. Add daemon tests for notice suppression and manual update guidance without scheduling an update. GitOrigin-RevId: 29df4713a7dbcbddcf30d56995a8496e7e8d0c6a
## Why Theme colors and dimmed text can lose contrast against terminal and shaded backgrounds. Pickers also need to keep controls and the selected result visible when space is limited. ## What changed - Add shared blue accents and contrast-aware foregrounds that account for painted backgrounds and terminal color depth, with terminal-default fallbacks for limited palettes. - Apply readable colors to footer text, status lines, prompt attachment labels, and diff content. Remove dimming from syntax-highlighted diff text so it does not undo contrast correction. - Use compact shortcut labels such as `ctrl+c`, emphasize complete key combinations, and separate composer footer actions with ` · `. - Add an opt-in picker presentation with full-width selection, filled tabs, separate overflow indicators, and navigation based on visible rows. Enable it for `/keymap`, reserving result space to keep controls stable across filtering and tab changes. ## Testing Add regression tests and snapshots for contrast after palette conversion, shaded diff backgrounds, shortcut typography, picker resizing and pagination, Unicode tab truncation, and stable `/keymap` geometry. GitOrigin-RevId: f3c71879d3bcc4e3b29d70e63cf377dea5914916
…ai#46691) ## Why Menu layouts and hints vary across TUI flows, and mismatched measurement and rendering widths can clip subsequent choices when descriptions wrap. ## What changed - Apply shared picker styling across selection menus, with stable columns, descriptions hidden when space is tight, and compact hints derived from configured key bindings. - Measure rows at their actual rendering width, including caller insets, so wrapped options receive enough space. - Wrap model menu headers and shortcut capture content, and use the shared panel surface for shortcut capture. - Indicate clipped headers in non-searchable menus and show the configured `view all` shortcut only when the view supplies one. ## Testing Add regression tests and snapshots for wrapping boundaries, narrow picker layouts, configured selection and cancellation keys, and clipped approval headers. Verify that copy/export actions retain complete payloads and composer drafts. GitOrigin-RevId: 8416bcd3c66b6cd15db3f9c1804f5f005b7964c1
## What changed - Apply shared picker styling to apps, plugins, settings, skills, hooks, and multi-select views, with full-width selection highlights and compact key hints. - Share row measurement and layout helpers, show scroll indicators, and let optional spacing yield on short screens to keep selected rows visible. - Wrap headers and footers, simplify search fields, and use a compact hooks event table at narrow widths. - Reserve plugin result rows while filtering and cap the plugin name column width. ## Testing Add regression coverage for selected rows in short multi-select views, compact hooks navigation, and checkbox, preview, and overflow rendering. Extend experimental-feature and memory-reset wrapping snapshots to narrower widths and update affected popup snapshots. GitOrigin-RevId: 0eedbbff307c84cc858629e578091bbbd59b2423
…ai#46694) ## Why Narrow completion popups can hide distinguishing filenames, parent paths, or category tags. Unified mentions also need a stable result viewport across searches and filters. ## What changed - Use shared selection styling and `›` markers across command, file, skill, and unified mention popups. - Give unified mentions a fixed-height picker layout with a header, filter tabs, query display, scroll indicators, and keyboard hints. - Bound mention name columns to leave room for parent paths and measure alignment in terminal cells. - Truncate file paths while retaining filenames and recalculating visible fuzzy highlights, preserving the full path for insertion. - Keep category tags visible when skill and app descriptions are hidden. ## Testing Add snapshots and assertions for narrow and clipped layouts, scrolling, empty filters, full-row selection styling, Unicode column alignment, long paths, preserved file selections, and category tags. GitOrigin-RevId: 54c34cc2472b43bac22011206efed3041eb77308
## Why Prompt layouts use inconsistent selection styles, and long content can crowd out choices and keyboard hints in small terminals. ## What changed - Apply shared picker surfaces, selection highlights, accent colors, and shortcut styling across approval, question, startup, and session prompts. - Reuse numbered picker rows with wrapping and selected-item visibility. Bound folder paths to preserve trust disclosures and choices, prioritizing the repository root when space is limited. - Give multiline prompts a shared layout for rendering and cursor placement, with Escape hints that reflect Vim mode. - Present local providers as vertical choices with inline status, adding arrow-key and `j`/`k` navigation plus `1`/`2` selection shortcuts. ## Testing Add snapshots and regression tests for narrow and short viewports, long trust paths, multiline cursor placement after resizing, selection styling, provider shortcuts, and confirmation behavior. GitOrigin-RevId: 89bb133dfa0d085d568a3a84473afd9e2fb20838
…46697) ## What changed - Remove the legacy selection-list appearance and use shared full-width selection, filled tabs, wrapped hints, and separate overflow rows throughout. - Give resume and fork pickers separate toolbar and search rows. Collapse spacing on short screens, keep the focused toolbar control visible on narrow screens, and prioritize labeled primary actions in the footer. - Apply shared selection styling and contrast-aware text colors to session rows and metadata. Clear inherited selection colors and reversal from the transcript loading overlay. - Preserve clipped-header notices alongside results in small approval dialogs. ## Testing Add rendering assertions and snapshots for session selection contrast, reversed selection, loading overlay styles, compact metadata and action labels, and keyboard-focused toolbar visibility. Extend approval clipping snapshots to shorter terminal heights. GitOrigin-RevId: 6e34b14f5528baf33e97ff6cf746107a1bbe69ab
…#47381) ## Why Switching threads stopped the active voice conversation. Users should be able to view another task while continuing the call on its original thread. ## What changed - Retain the voice owner's live widget and subscription in the background, routing voice controls, speech, and connection callbacks to that owner. - Restore the live call and transcript when returning to its thread, without duplicating captions or letting background UI events affect the visible task. - Preserve undelivered speech and defer background errors until the owning thread is shown. - Stop background voice on shutdown, disconnect, or removal of the owning session. ## Testing Extend regression and end-to-end coverage for thread switching during delegated speech, voice control routing, transcript restoration, caption deduplication, and cleanup on disconnect or archive/delete. GitOrigin-RevId: ce010dce6fa8cd6fa44949a131f3f16e8cb80c4d
## What changed Display a `voice` badge on the task whose session owns the running voice conversation, including when a child thread owns it. Refresh the overview after voice controls and realtime conversation resets so the badge clears when background voice closes asynchronously. ## Testing Add snapshot coverage for a child thread owning voice and a regression test for clearing the badge after an asynchronous background voice close. GitOrigin-RevId: 815dfad4ce1a31945d2dd0d3f9cecc5abfa419d6
…tom (openai#47384) ## Why Selecting text can pause following while the final transcript row remains visible. Clearing that selection could leave an unnecessary `esc latest` hint in place of the composer hints. ## What changed Only show the return-to-latest footer for paused navigation when the transcript tail is out of view. At the bottom, show selection shortcuts without the earlier-history status, then restore composer hints when the selection is cleared, even if following remains paused. Preserve loading and retry hints. ## Testing Add regression coverage for selection, clicking away, and scrolling at the bottom with partial and complete history, plus selection above the bottom. Verify retry hints with selected text and update activity expectations and the composer-gap snapshot. GitOrigin-RevId: aeb2109244d6c3214c945abb51cf469087d03074
…#47389) ## Why Destination restrictions and policy revocation must remain effective during redirects, response body reads, and established WebSocket traffic. Policy denials must also survive error handling so callers do not retry them or report a revoked operation as successful. ## What changed - Route managed HTTP clients through a shared `RequestBuilder` and policy-aware execution, checking each redirect destination before route resolution and retaining a network permit while consuming response bodies. - Guard WebSocket connection setup, reads, and writes with revocable permits, including independent wakeups for split readers and writers. - Preserve `TransportError::Policy` through HTTP, SSE, and realtime error handling, and treat policy denials as non-retryable. - Keep the supplied network policy in plugin startup HTTP requests and propagate response body failures from backend and plugin requests. ## Testing Add regression coverage for rejection before connecting, revocation during redirect routing and streamed body reads, split WebSocket revocation, realtime writer error propagation, and revoked plugin upload responses. GitOrigin-RevId: fba36700444c98a8364c09b4dc5452c4d78a90fb
## Why A single blob upload failure previously aborted the file upload, even for a temporary `503` response or an interrupted stream. ## What changed - Retry `503` responses and timeout, connection, body, or request errors, with at most five attempts within a shared five-minute deadline. - Honor `x-ms-retry-after-ms` and `Retry-After`, falling back to backoff when no valid server delay is available. - Reopen the contents for each retry while reusing the same file record and upload URL. Preserve the initial read permission check and reopen MCP file streams under the same sandbox policy. - Record retry, recovery, and terminal failure events with a fresh client request ID for each attempt. ## Testing Add coverage for recovery after `503` responses and interrupted streams, attempt and deadline limits, non-retryable responses, retry delay parsing, and unique request IDs. Extend the restricted-read MCP upload test to verify that both attempts send the complete file contents. GitOrigin-RevId: 78089ecfd5076313f5784cbbc864df12d082e3b1
## What changed - Switch the GPT-6, GPT-5.6, GPT-5.5, and auto-review catalog entries to `shell_command` and expand their plan availability. - Mark `gpt-6-astra` as supporting reasoning-effort updates and disable its experimental-context flag. Add explicit capability and instruction defaults to other entries. - Update Astra's messaging guidance to recognize authorization from explicitly invoked skills or plugins, with attribution in the final response, and simplify its Default-mode clarification instructions. - Revise auto-review guidance on autonomy, assumptions, and actions within the user's requested scope. - Refresh seven scenario snapshots to reflect the updated prompts. GitOrigin-RevId: b7ed8c413f6451008c982024506009b170e6311e
## Why Codex could enable mouse capture even when the containing tmux session had mouse support turned off. ## What changed - Probe tmux's `mouse` and `extended-keys-format` settings together, targeting `TMUX_PANE` when available. - Suppress mouse capture when tmux explicitly reports `0` or `off`, and apply that policy across fullscreen and overlay input changes. Refresh the policy when entering or restoring the alternate screen. - Preserve normal mouse behavior when the probe fails or the setting is unknown, and retain the keyboard-format fallback for older tmux versions. ## Testing Add tests for pane targeting, explicit and unknown mouse settings, probe failures, keyboard fallback, and mouse-policy changes across fullscreen and overlays. GitOrigin-RevId: 7bdd2759207b30a3877e983b489462de7c96e692
…#47407) ## What changed - Load `application.network` requirements at startup and explicit config/account reloads, applying local policy before authentication and cloud configuration bootstrap. - Block traffic when policy loading fails, cancel requests that a new policy no longer permits, and reject configuration loads based on superseded policy snapshots. Local requirements edits take effect on the next explicit reload or restart. - Bind authenticated clients to the current account and revoke them when account ownership changes. Carry policy enforcement through backend requests, realtime connections, workload identity exchanges, and code-mode gRPC streams while preserving gRPC trailers. - Treat denied credential refreshes as policy errors without retrying them or invalidating stored credentials. ## Testing Add regression coverage for startup restrictions, reload ordering, cancellation after restrictive or malformed requirements edits, account revocation, gRPC destination denial, workload identity cancellation, and credential preservation after denied OAuth refresh. GitOrigin-RevId: 0cb4c720a906397e9df06675f01ecf60d741101f
…#47408) ## Why AWS credential discovery, analytics, and telemetry used clients that did not share the application's network policy. These requests need to honor destination restrictions and permission revocation. ## What changed - Route AWS credential and region HTTP requests through the shared HTTP client, and check the signing destination before loading credentials. Skip discovery for static access keys with an explicit region. - Apply account-scoped policy to Bedrock authentication. Require unrestricted policy for credential exporters and reauthentication commands, and cancel active work when permission is revoked. Document that AWS profile `credential_process` network traffic remains outside the application's HTTP policy. - Send analytics through the authenticated account's HTTP client factory. - Guard OTLP log, trace, and metric exports with revocable permits, disable them under destination restrictions, and make managed HTTP exports cancellable. Suppress global Statsig settings while managed policy is active. ## Testing Add coverage for metadata credential request cancellation, allowed and denied SigV4 destinations, AWS credential precedence and endpoint configuration, and blocked credential exporter recovery. Update telemetry tests for account transitions and managed-policy Statsig suppression. GitOrigin-RevId: d8a2018bfbbe971ec430699b0d3f86a7a9e1e072
…penai#47410) ## What changed - Route remote-control enrollment, pairing, client management, and WebSocket connections through the authenticated HTTP client factory. Keep policy denials distinct from authentication failures and wait for policy changes before reconnecting. - Preserve policy denials through exec-server connection failures so later connection attempts and capability discovery can recover. Keep direct executors running through temporary policy outages while rejecting permanent policy failures. - Build cached HTTP transports on blocking workers, serialize construction, and retain successful builds after callers time out so request deadlines cover queued construction. ## Testing Add regression coverage for policy recovery during remote startup, direct registration, accepted WebSocket reconnection, and capability discovery; queued transport construction timeouts; and remote-control WebSocket fallback with invalid custom CA files. GitOrigin-RevId: c81db18e83de957175bb213d165281ac701089dd
…#47411) ## Why Application network restrictions need to cover clients created by the TUI and `codex exec` before embedded app-server startup, and remain effective when configuration is rebuilt. ## What changed - Introduce `EmbeddedNetworkPolicy` to share live policy between caller-owned transports and the embedded app-server. - Apply loaded requirements before creating telemetry, background HTTP clients, and executor connections. Limit authentication and cloud configuration bootstrap requests to exact endpoints under local policy. - Preserve the shared policy across TUI session changes, permission-profile rebuilds, and worktree cloud loaders so existing clients observe policy reloads and failures. - Document application network policy behavior and transport coverage. ## Testing Add regression coverage for policy activation, reload failure and recovery, retained policy across TUI rebuilds, rejected OAuth and cloud-policy redirects, and workspace network restrictions with `CODEX_API_KEY`. Also cover retaining the caller-selected project during embedded startup. GitOrigin-RevId: 629009f087b8cb21fc34a1ee7ea6fe95d9e0f2b5
## Why Repeated gateway OAuth credential reads decrypt and deserialize the same unchanged secrets file each time. ## What changed Add a single-entry cache shared by clones of `LocalSecretsBackend` for `GatewayOAuth`. Reuse decrypted secrets only when the file path, ciphertext hash, and keyring passphrase hash match, and invalidate the cache after writes. Omit cached credentials from the backend's `Debug` output. GitOrigin-RevId: 91fa03655f5e233d1649f4c2571c5465dfe57f35
## What changed Extend an existing transcript selection with Shift-click while preserving its original anchor and selection unit. Allow continued dragging and repeated extension in either direction, including whole-word selections made by double-clicking. An ordinary click still starts a fresh selection. ## Testing Add tests for extension in both directions, preservation of selection units, continued dragging, and ordinary-click reset, plus a snapshot of word-selection highlighting. GitOrigin-RevId: e6208c1bc6260ac26e7cd1f81c752b2c0b375f36
…47417) ## What changed - Detect Terminal.app from primary and secondary device attributes during startup on Unix SSH sessions without a detected multiplexer. Ignore signatures inside bracketed paste and leave incomplete replies unknown. - Use inline mode when Terminal.app is detected and `tui.alternate_screen` is `auto`. Apply the decision before the first startup frame and retain it for later configuration loads. Preserve explicit `always`, `never`, and `--no-alt-screen` overrides. - Update the `crossterm` dependency revision and lockfiles. ## Testing Add coverage for terminal signatures, fragmented and pasted replies, probe completion and timeout behavior, screen-mode overrides, and an inline startup snapshot. GitOrigin-RevId: 9b937824b080f9bd6de29df1d9e84f42a698af46
## What changed Clear pending asynchronous questions when a live turn completes, is interrupted, or fails, and append nonblank typed answers to the main composer in question order without submitting them. Preserve existing composer content and input restored after interruption, and retain large answers as paste placeholders. Cancel history previews and pending Vim commands during recovery while preserving undo grouping and dot-repeat behavior. Skip recovery during replay and keep input cleared after a misalignment policy violation. ## Testing Add regression tests and snapshots for open and collapsed drafts, buffered typing, answer ordering, repeated completion notifications, large pastes, interrupted queued input, and Vim undo/redo behavior. Update coverage for terminal errors and realtime question expiration. GitOrigin-RevId: fec109fe8aecb0735a3a5410fbb063b5c5c6e9a1
## Why Recovering question answers or interrupted input can cancel an active `Ctrl+R` search or overwrite its preview. Recovery should preserve the search while keeping the recovered input available on cancellation. ## What changed - Apply background updates to the saved draft without changing the search query or visible preview, including when a query has no match. - Restore the updated draft on `Esc` or `Ctrl+C`; discard it when accepting a history match. Keep search open when `Enter` has no match to accept. - Capture the saved draft rather than the preview in draft snapshots, preserving attachments, mention bindings, and pending pastes. - End search on an explicit fresh draft replacement so cancellation cannot resurrect discarded input. ## Testing Add regression coverage for recovery on turn completion, failure, and interruption; accepting and canceling search after recovery; Vim undo/redo; pending paste preservation; and clearing drafts after a misalignment policy failure. GitOrigin-RevId: d3de19bbbcdab2e461c19d47b2b7dca0b28f6ff3
## Why An async question notification can outlive its unanswered question and suppress the lower-priority turn completion notification. ## What changed Clear pending `AsyncQuestion` notifications when collecting question drafts on completion, interruption, or failure, including the error-handling path. Completed turns can then queue their completion notification. ## Testing Add regression coverage for all three turn outcomes and assertions for error handling and completion after dropped message deltas. GitOrigin-RevId: 647b2b37acced431fc98fd4f5334c8973a0be241
## Why Thread permission updates could affect later steps of a running turn. Keep inherited environment settings consistent throughout the turn and apply saved updates when the next turn starts. ## What changed Store active thread defaults alongside selected environments and refresh them when activating a new turn, even when its environment selections are unchanged. Resolve new selections from those active defaults while preserving owner-provided configuration, selection workspace roots, and the local Windows sandbox type. ## Testing Add a regression test that changes permissions during a paused turn and verifies that both steps retain restricted filesystem access while the next turn receives unrestricted access. Update session and MCP elicitation tests to check that permission changes take effect on the next turn. GitOrigin-RevId: 37ee44198fa40c138d140974dc90c4177d8c1f4c
## What changed - Add `environments` to `TurnSettingsUpdate` to replace the selection for subsequent steps without changing future turns. - Capture model settings and environments together so combined updates apply or reject atomically, while existing steps retain their captured selection. - Validate environment IDs, working directories, configuration ownership, and permission requirements against the running turn's selections. - Preserve executor startup behavior when switching environments and use the step's local working directory for tool hooks. ## Testing Add coverage for workspace switching and restoration on the next turn, atomic model and environment updates, permission validation, executor connection waits, and replacement of pending environment selections. GitOrigin-RevId: 02b5c57a78fd594b2aed84fc09d9e99eb97be28c
## Why Retry timing assertions can fail if the test is descheduled before retry telemetry is emitted, and parallel tests can leave shared tracing callsites disabled for the test subscriber. ## What changed - Measure retry intervals from the failed request, filter HTTP observations to `/responses`, and track WebSocket stream requests as well as connections. - Keep a tracing interest-cache guard alive and rebuild callsite interest when installing the telemetry capture. - Reserve the connection-failure test's port with a bound socket until the recovery server starts listening. - Wait for the WebSocket warmup request and assert `generate: false` before submitting user input in connection-limit, rate-limit, and overload tests. GitOrigin-RevId: bba39ea2ac29ac8553ae6184139382f1e6cdc7ac
## Why The `attribution_error` status does not explain why MCP attribution is incomplete. Preserve a diagnostic reason so callers can distinguish history and recorder errors from request serialization failures. ## What changed - Add optional `error_reason` diagnostics to `McpAttribution`, retaining the first recorder error through checkpoints, compaction, resume, and fork. - Identify missing or invalid checkpoints, conflicting sources, invalid sources, and poisoned recorder state. Use `restored_error_unknown` for older error checkpoints without a reason. - Distinguish `payload_too_large` from `serialization_failed` in request metadata fallbacks. - Tolerate missing, unknown, or malformed diagnostic reasons when reading history, without letting diagnostics determine attribution status. ## Testing Add coverage for reason preservation, recorder poisoning, backward-compatible checkpoint decoding, resume and cold-fork restoration, and request metadata serialization, including oversized payloads. GitOrigin-RevId: 389b9446fae119f793978f3e7e4a926677e84d8c
- Added GPT-6 Sol and Luna, including Amazon Bedrock support and migration prompts for older models. (openai#47332, openai#47347) - Enabled fullscreen transcripts by default and added Shift-click to extend text selections. (openai#47178, openai#47414) - Enabled automatic background-server startup for eligible interactive sessions, with recovery choices when server settings are incompatible. (openai#47179, openai#47318) - Added an `f` shortcut to fork conversations open in another app, preserving drafts and queued prompts. (openai#47185) - Made `/import` available in remote sessions and local background-server sessions. (openai#47317) - Improved terminal rendering with Unicode bullets, checkboxes, aligned equations, and optimization notation. (openai#47191, openai#47322) ## Bug Fixes - Preserved active voice conversations when switching threads. (openai#47381) - Recovered unsent question answers into the composer when turns end, without disrupting active history searches. (openai#47422, openai#47423) - Respected tmux mouse settings and restored native scrollback for Terminal.app over SSH in automatic screen mode. (openai#47399, openai#47417) - Fixed configured proxy routing for realtime connections and standalone web search, including search redirects. (openai#47101, openai#47142, openai#47204) - Added retries for transient file-upload failures and increased the upload timeout to five minutes. (openai#47122, openai#47393) - Enforced network restrictions across redirects and ongoing HTTP and WebSocket traffic, including cancellation when policy changes revoke access. (openai#47389, openai#47407) ## Changelog Full Changelog: openai/codex@rust-v0.156.0...rust-v0.157.0 - openai#47063 Add a partial index for agent message board root posts @jif-oai - openai#47064 Stop redundant message-board reads when limits reach one @jif-oai - openai#47065 Deduplicate deprecation notices in the TUI transcript @etraut-openai - openai#47068 Highlight selected newlines in the transcript view @etraut-openai - openai#47073 Wait for thread idle in Guardian context budget tests @jif-oai - openai#47074 Refresh host-supplied cloud skills at turn startup @TAFOYA-OAI - openai#47075 Include attributed previews in agent message board notifications @jif-oai - openai#47077 Serialize environment updates and cancel removed pending attachments @sayan-oai - openai#47079 Mask daemon socket paths exposed through ancestor bind mounts @nicksteele-oai - openai#47081 Track cumulative MCP attribution across requests and thread history @peilin-openai - openai#47082 Show the voice toggle in the TUI shortcut overlay @etraut-openai - openai#47083 Extract per-thread enrichment into a dedicated async helper @aibrahim-oai - openai#47084 Avoid building a host SQLite driver for SQLx macros @aibrahim-oai - openai#47085 Update model catalog descriptions and GPT-5.6-Sol priority @andrewgu-oai - openai#47086 Format analytics credit usage with consistent decimal precision @fcoury-oai - openai#47088 Disable unused default dependency features @aibrahim-oai - openai#47089 Centralize JSON-RPC response serialization through payloads @aibrahim-oai - openai#47094 Restrict Unix local MCP servers to stdio descriptors @yuzhu-oai - openai#47095 Remove the `rust-release-prepare` workflow @andrewgu-oai - openai#47096 Keep TUI hints immediately above the composer @fcoury-oai - openai#47100 Preserve assistant answers in bounded TUI task responses @etraut-openai - openai#47101 Honor configured proxies for realtime WebSocket connections @celia-oai - openai#47106 Preserve originating turn metadata for yielded skill calls @eddie-openai - openai#47108 Preserve required Windows runtime variables for filesystem helpers @iceweasel-oai - openai#47112 Lowercase the retry hint for conversations open in another app @fcoury-oai - openai#47113 Persist thread creator identity in rollouts and SQLite @nornagon-openai - openai#47114 Preserve and expose thread item lifecycle timestamps @chiam-oai - openai#47116 Honor the configured product SKU in remote plugin requests @jessedu-oai - openai#47118 Support model-catalog overrides for Code Mode tool messages @rhan-oai - openai#47121 Pass thread IDs to attachment uploads @kchainani-oai - openai#47122 Increase OpenAI file blob upload timeout from 60 seconds to 5 minutes @wilkes-oai - openai#47125 Add extra policy configuration for Guardian reviews @won-openai - openai#47129 Preserve foreign working directories in extension tool environments @anp-oai - openai#47130 Remove the `ultrafast` service tier from `gpt-5.6-sol` @andrewgu-oai - openai#47132 Support caller-provided MITM CAs in the network proxy @viyatb-oai - openai#47137 Prevent horizontal transcript selection from triggering autoscroll @imac-oai - openai#47142 Honor system proxy settings for standalone web search @celia-oai - openai#47143 Extract exec-server CLI startup into a dedicated module @anp-oai - openai#47149 Update code mode catalog snapshot hashes @andrewgu-oai - openai#47155 Ignore stale thread-close notifications after resuming a thread @etraut-openai - openai#47158 Harden gateway OAuth credential persistence and error redaction @alexsong-oai - openai#47159 Expose HTTP origins in MCP server status @frantic-openai - openai#47162 Apply workspace routing to Guardian v2 classifier requests @acrognale-oai - openai#47170 Add explicit gateway login control and authentication status @alexsong-oai - openai#47174 Preserve empty cell metadata under pending tool-call pressure @ningyi-oai - openai#47178 Enable the fullscreen transcript by default @etraut-openai - openai#47179 Enable automatic daemon startup by default @etraut-openai - openai#47185 Allow forking conversations locked by another app in the TUI @fcoury-oai - openai#47191 Render aligned equations and optimization notation in TUI math @etraut-openai - openai#47199 Separate thread preparation from execution persistence @dermanyang-oai - openai#47204 Resolve proxy routes for standalone web search redirects @celia-oai - openai#47207 Add explicit gateway OAuth sign-in to app-server @alexsong-oai - openai#47212 Preserve MCP request trace context across transport workers @bromano-oai - openai#47235 Route multi-agent spawning through `SpawnRequest` @jif-oai - openai#47236 Suppress agent message board notifications to the post author @jif-oai - openai#47240 Prevent V2 agent eviction from racing with queued messages @jif-oai - openai#47244 Centralize agent resume handling in `LocalAgentControl` @jif-oai - openai#47248 Add explicit app and account targets to MCP resource reads @victor-openai - openai#47249 Drop descendant channel posts from retained remote compaction v2 history @jif-oai - openai#47252 Return agent snapshots from `close_agent` @jif-oai - openai#47257 Preserve explicit message-board unsubscribes when posting @jif-oai - openai#47258 Test spawn settings reporting after child removal @jif-oai - openai#47259 Subscribe authors to message-board channels created by posting @jif-oai - openai#47263 Expose hosted plugin extensions in app-server summaries @victor-openai - openai#47267 Stream agent snapshots from local status subscriptions @jif-oai - openai#47271 Implement `AgentControl` for `LocalAgentControl` @jif-oai - openai#47272 Allow Guardian sync review across compaction hash differences @felixxia-oai - openai#47275 Enable Guardian thread context by default @felixxia-oai - openai#47281 Add regression coverage for message board unsubscribe persistence @jif-oai - openai#47287 Update the Guardian extra-policy snapshot for retained instructions @felixxia-oai - openai#47292 Consolidate agent operations in the `AgentControl` implementation @jif-oai - openai#47301 Separate local agent runtime state from controller handles @jif-oai - openai#47302 Use compact display metadata for Guardian review threads @charliemarsh-oai - openai#47303 Clean up legacy Guardian thread metadata in SQLite @charliemarsh-oai - openai#47317 Enable `/import` in remote and local daemon sessions @etraut-openai - openai#47318 Offer explicit recovery for incompatible background servers @etraut-openai - openai#47319 Match agent status symbols to the selected row style @etraut-openai - openai#47320 Fix Escape navigation in read-only agent sessions @etraut-openai - openai#47321 Honor the system clock preference across more TUI timestamps @etraut-openai - openai#47322 Render TUI Markdown lists with Unicode bullets and checkboxes @etraut-openai - openai#47323 Persist resume metadata in compaction checkpoints @owenlin0 - openai#47325 Keep report reason tags within Sentry limits @ningyi-oai - openai#47326 Restrict MCP OAuth authorization endpoints to HTTP(S) @viyatb-oai - openai#47327 Preserve image generation request IDs on failure @chrisdong-oai - openai#47329 Standardize TUI menu description wording and punctuation @etraut-openai - openai#47330 Identify failed SQLite databases in `codex doctor` output @dkovalenko-oai - openai#47331 Avoid redundant spacing above the transcript composer @fcoury-oai - openai#47332 Add GPT-6 Sol and Luna to the model catalog @andrewgu-oai - openai#47338 Move the activity inspection hint into keyboard shortcut help @fcoury-oai - openai#47340 Add conditional turn interruption that preserves pending input @pmccrary-oai - openai#47342 Skip stored title lookups for ephemeral forks @keyz - openai#47347 Add GPT-6 Sol and Luna to Amazon Bedrock catalogs @celia-oai - openai#47348 Overlap subagent spawn persistence and clean up cancelled children @owenlin0 - openai#47349 Move plugin recommendations into developer context @adaley-openai - openai#47350 Reuse cloud skill catalogs across turns until invalidated @hlevy-openai - openai#47353 Preserve `invalid_prompt` as a distinct error classification @rennie-openai - openai#47355 Reserve spacing after recaps at the transcript tail @fcoury-oai - openai#47358 Color paths and URLs in `codex doctor` by check status @dkovalenko-oai - openai#47360 Preserve user prompt URL destinations across terminal widths @fcoury-oai - openai#47361 Restrict Windows sandbox default object access to the logon session @viyatb-oai - openai#47362 Bound inbound exec-server requests across client transports @viyatb-oai - openai#47365 Resume model context from the latest compaction boundary @owenlin0 - openai#47369 Overlap agent metadata reads when resuming a V2 root @vkg-oai - openai#47375 Add an opt-in preference for the local MXC sandbox @iceweasel-oai - openai#47377 Add opt-in reasoning status for realtime V3 delegations @guinness-oai - openai#47380 Route TUI voice controls through the app @etraut-openai - openai#47381 Keep voice conversations running across TUI thread navigation @etraut-openai - openai#47382 Show a voice badge in the agents overview @etraut-openai - openai#47384 Restore composer hints after clearing selection at the transcript bottom @fcoury-oai - openai#47389 Enforce network policy throughout HTTP and WebSocket requests @acrognale-oai - openai#47393 Retry transient OpenAI file blob upload failures @mtsui-oai - openai#47397 Refresh bundled model metadata and instructions @andrewgu-oai - openai#47399 Respect tmux mouse settings in fullscreen and overlays @fcoury-oai - openai#47407 Enforce application network policy across app-server requests @acrognale-oai - openai#47408 Enforce application network policy for AWS auth and telemetry @acrognale-oai - openai#47410 Honor network policy in remote control and recover remote execution @acrognale-oai - openai#47411 Apply shared network policy throughout embedded Codex startup @acrognale-oai - openai#47413 Cache decrypted gateway OAuth secrets per backend @charliemarsh-oai - openai#47414 Support Shift-click to extend transcript selections @etraut-openai - openai#47417 Use native scrollback for Terminal.app over SSH in auto mode @fcoury-oai - openai#47422 Recover unsent question drafts when TUI turns end @imac-oai - openai#47423 Preserve history search during background draft recovery @imac-oai - openai#47424 Clear pending async question notifications when turns end @imac-oai - openai#47428 Apply inherited environment settings at turn boundaries @sayan-oai - openai#47435 Allow environment selection updates during an active turn @sayan-oai - openai#47437 Stabilize retry timing and WebSocket tests @anp-oai
…penai#48138) Set `CREATE_NO_WINDOW` when launching the code-mode host on Windows so the child process does not create a console window. GitOrigin-RevId: ce0d04d7f516d137bcaf5206140aaeaa23334022
) ## Why A Windows breakaway launch can leave an outer Job Object attached after escaping an inner job. Job membership alone does not establish whether the daemon will be terminated, so rejecting all remaining membership can block valid launches. ## What changed Remove the job-membership checks from the launch preflight and the spawned daemon. Keep the suspended breakaway probe to verify that launch is permitted before stopping an existing daemon, and terminate and reap the probe afterward. ## Testing Add a Windows regression test with nested jobs that verifies the probe and daemon leave the inner job while retaining the outer job, and that daemon startup succeeds. GitOrigin-RevId: 4c6aafd158300fa428ec398d72dc5d3411c0d8b8
Expose Windows process creation flags on the shared command wrapper and use `CREATE_NO_WINDOW` when launching local stdio MCP servers, including fallback launches without Job Object containment. Preserve `CREATE_SUSPENDED` when assigning the server to a Job Object before execution. Add a Windows regression test covering direct launches and launches through `cmd.exe`. Verify that the server has no console, initializes successfully, returns tools, and exits after shutdown. GitOrigin-RevId: 84475e82999d91a431e09327d4f5639b59c01427
…#48272) Detached Windows daemons can inherit the launcher's output pipes, leaving callers waiting for EOF after the launcher exits. Clear inheritance flags on the launcher's standard handles before spawning managed Windows processes. Leave the flags cleared to protect concurrent launches while preserving the child's configured stdio, and tolerate missing or already-closed handles. - Add a Windows regression test verifying that captured launcher output closes while the detached child remains alive and writes to its configured log. - Give optional MCP startup grace tests more time to complete on slow runners while keeping the pending server's startup timeout longer than the turn timeout. GitOrigin-RevId: 053e0417793db3c961e738476a05c7467978f339
- Release highlights could not be determined: the supplied PR index is empty, and the GitHub tag comparison returned 404. ## Changelog Full Changelog: openai/codex@rust-v0.157.0...rust-v0.157.1
Preserve the chat wire adapter, adapt client and test APIs, and avoid the Code Mode exec alias collision.
# Conflicts: # codex-rs/Cargo.toml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Merge the latest published Codex release,
rust-v0.157.1, into the local-LLM fork while preserving the chat-completions wire adapter. The release tags remain ancestors through merge commits: firstrust-v0.157.0, then its sibling patch releaserust-v0.157.1.Merge resolutions
include_internalargument using the Responses path's destination check; update chat tests for new constructor and provider fields.execalias when Code Mode owns that name.wire_api = "chat"andmodel_apply_patch_tool_typesupport alongside upstream's new provider fields.0.157.1and regenerate workspace versions inCargo.lock; Windows daemon and MCP launch fixes merge intact.The dated recipe and re-derivations are in
codex-rs/chat-completions/MERGE_NOTES.md.Verification
cargo build -p codex-cliandcargo check -p codex-cli --offline: passed.cargo test -p codex-chat-completions: 25 passed.cargo test -p codex-core --test all chat_completions: 6 passed.cargo clippy -p codex-cli -p codex-chat-completions -p codex-core --all-targets -- -D warningsandcargo fmt --check: passed.execshell call completed with exit 0 on bothqwen3.8:27B-mlxandVladimirGav/qwen3.8-27B-14GB-IQ4:latestusing the merged fork binary and Windows sandbox helpers.rust-v0.157.1is an ancestor of HEAD. Diff path subset check: 33 actual paths, zero outside the original fork paths and merge notes.Please merge this PR with a merge commit so the release tag stays in
mainhistory. The default-flags PR is stacked on this branch.