Commit Graph

8392 Commits

Author SHA1 Message Date
rhan-oai
25af12f7e6 ## New Features
- Added experimental paginated thread history with efficient resume, search, persisted names, sub-agent support, and memories. (#33364, #33907, #34085, #34229, #34386)
- Expanded `/import` to migrate Cursor and Claude Code settings, MCP servers, plugins, sessions, commands, and project-scoped memories. (#31672, #33411, #33426, #33444)
- Added experimental Amazon Bedrock login, custom endpoint and authentication support, and GPT-5.6 Sol as the default Bedrock model. (#31327, #33170, #33175, #32288, #33695)
- Added audio inputs and tool outputs, including common local audio formats, and introduced streaming realtime V3 conversations. (#33261, #33856, #33932, #34080, #34385)
- Stabilized the opt-in multi-agent V2 experience with configurable sub-agent models, reasoning levels, concurrency, restored roles, and improved agent navigation. (#33550, #33631, #33657, #33841, #34383)
- Added secure, clickable inline visualization links in the terminal UI. (#33925, #34217, #34346)

## Bug Fixes

- Editing an earlier prompt or retrying a safety-buffered turn now creates a contextual branch, preserving the original conversation, attachments, and mention bindings. (#33201, #33207, #33211)
- Improved terminal responsiveness for long conversations and streamed output through incremental Markdown rendering, fewer redraws, caching, and bounded command output. (#34045, #34049, #34216, #34223, #34359)
- Prevented slow or conflicting MCP startup and authentication flows by enforcing startup timeouts, avoiding blocking OAuth discovery, serializing refreshes, and reusing tool catalogs safely. (#32229, #32781, #32825, #33184, #33297)
- Improved Windows execution and sandbox reliability, including native exec-server sandboxing, network-proxy enforcement, hidden helper consoles, and correctly quoted hook commands. (#32849, #32857, #33926, #34423)
- Fixed compact release-metadata parsing and macOS code-mode installation, with an in-process fallback when the external code-mode host is unavailable. (#31667, #31876, #31899)
- Strengthened safety and approval handling with better forced-`rm` detection, consistent full-access confirmation, and preserved rejection reasons across tools. (#32989, #33464, #34400)

## Documentation

- Updated the bundled OpenAI Docs skill with current GPT-5.6 model resolution, prompting, and migration guidance across macOS, Linux, and Windows. (#31842, #33121)

## Chores

- Migrated bundled GPT-5.4 selections and internal uses to the corresponding GPT-5.6 Terra and Luna variants. (#33173)
- Reduced startup and large-context overhead with concurrent skill/plugin discovery and more efficient remote compaction. (#31566, #33369, #33423, #34431)
- Updated the packaged ripgrep binary to 15.2.0. (#34384)

## Changelog

Full Changelog: https://github.com/openai/codex/compare/rust-v0.144.0...rust-v0.145.0

- #31667 fix: parse compact release metadata in installer @efrazer-oai
- #31362 core: route realtime and memories through HTTP client factory @bolinfest
- #31566 perf(skills): reuse walk inventory for host loading @jif-oai
- #31576 Bound exec-server process event reordering @jif-oai
- #31756 test(skills): assert symlinked metadata loading @jif-oai
- #31581 Resolve selected capability roots without starting executors @jif-oai
- #31789 Stop persisting RMCP service traces @jif-oai
- #31792 Summarize streamed response item logs @jif-oai
- #31791 Filter routine Hyper logs from SQLite @jif-oai
- #31790 Reduce MCP tool-list trace volume @jif-oai
- #31804 Stabilize the memories feature flag @jif-oai
- #31803 fix(mcp): default Apps product SKU to codex @alecbarber-oai
- #31745 code-mode: retain shared MCP types for deferred tools @sayan-oai
- #31672 Import enabled plugins from known marketplaces @charlesgong-openai
- #31652 fix(tui): hide empty reasoning summaries @fcoury-oai
- #31767 Remove the network proxy config wrapper @jif-oai
- #31481 fix: forward originator to Codex Apps MCP @raquel-openai
- #31363 codex-api: route file uploads through HTTP client factory @bolinfest
- #31813 tui: update safety buffering copy @etraut-openai
- #31830 fix(sandboxing): initialize network proxy config inline @fcoury-oai
- #31431 build: ratchet direct reqwest dependencies @bolinfest
- #31876 code-mode: fix installation on darwin @cconger
- #31842 Update bundled OpenAI Docs skill for GPT-5.6 @kkahadze-oai
- #31637 login: route raw auth flows through HTTP client @bolinfest
- #31686 [codex-apps] Filter optional file fields by tool schema @tsarlandie-oai
- #31899 code-mode: fall back to using in process v8 if we fail to resolve external process @cconger
- #31805 Bound remote MCP stdio lines @jif-oai
- #30293 Resolve and pin MCP OAuth credential stores @stevenlee-oai
- #31892 exec-server: materialize filesystem workspace roots @pakrym-oai
- #31327 feat: add managed Bedrock login API @celia-oai
- #31295 bench: add codex help e2e macrobenchmark @anp-oai
- #31428 bench: add e2e benchmark entrypoints @anp-oai
- #31937 exec-server: expose process helper to outer sandbox @pakrym-oai
- #32093 Remove the legacy exec policy engine @copyberry
- #32106 Reduce startup latency for ancestor discovery @copyberry
- #32112 Bound streamed exec-server HTTP response bodies @copyberry
- #32122 Test the shared exec-server HTTP response byte budget @copyberry
- #32123 Bound exec-server stdio JSON-RPC messages @copyberry
- #32126 Test bounded concurrency in ancestor discovery @copyberry
- #32134 Test stdio JSON-RPC size limits with LF and CRLF @copyberry
- #32135 Propagate tracing subscribers to exec start tasks @copyberry
- #32150 Keep unified exec output collection bounded @copyberry
- #32193 Validate memory consolidation artifacts before succeeding @copyberry
- #32197 Rebind memory consolidation workspace roots @copyberry
- #32200 Add a skill invocation extension contributor @copyberry
- #32206 Always send reasoning parameters in Responses requests @copyberry
- #32213 Generate unique IDs for review rollout messages @copyberry
- #32214 Propagate workspace roots to exec-server sandboxes @copyberry
- #32229 Serialize MCP OAuth credential refreshes @copyberry
- #32231 Support pending remote environment registration @copyberry
- #32232 Let permission hooks resolve strict auto-review requests @copyberry
- #32234 Add dedicated storage for paginated thread history @copyberry
- #32246 Extract reverse JSONL scanning from session indexing @copyberry
- #32256 Improve Responses WebSocket timing telemetry @copyberry
- #32261 Preserve local path conventions in automatic approvals @copyberry
- #32263 Include start times in terminal turn events @copyberry
- #32272 Expose scheduled tasks in plugin details @copyberry
- #32274 Remove the personality migration @copyberry
- #32276 Repair unterminated rollout files before appending @copyberry
- #32277 Honor `personality = "none"` in model instructions @copyberry
- #32280 Include terminal errors in turn completion events @copyberry
- #32286 Clarify waiting behavior in safety buffering prompts @copyberry
- #32288 Make GPT-5.6 Sol the default Bedrock model @copyberry
- #32289 Persist paginated items in the local thread store @copyberry
- #32290 Respect model support for reasoning summaries @copyberry
- #32301 Trust hooks from materialized workspace plugins @copyberry
- #32302 Prefer the Codex home socket for Unix IDE context @copyberry
- #32305 Improve file blob upload diagnostics @copyberry
- #32312 Require prefixes for outbound response item IDs @copyberry
- #32316 Stop falling back to older model availability announcements @copyberry
- #32326 Use canonical links in the moved config notice @copyberry
- #32332 Add ordinals to paginated rollout records @copyberry
- #32441 Preserve parent sandbox enforcement for memory consolidation @copyberry
- #32460 Emit thread-idle lifecycle after guardian interrupts @copyberry
- #32461 Expand tabs when rendering TUI diffs @copyberry
- #32485 Use available width for skill names in the toggle view @copyberry
- #32628 Improve composer completion target resolution @copyberry
- #32698 Extract connector runtime snapshot management @copyberry
- #32744 Log missing personality messages at trace level @copyberry
- #32746 Make advanced reasoning selection explicit in the TUI @copyberry
- #32747 Align Guardian reviews with session configuration @copyberry
- #32749 Expose model overrides for multi-agent v2 spawns @copyberry
- #32751 Restrict spawned-agent models to the active backend @copyberry
- #32761 Add shadow metrics for lexical skill selection @copyberry
- #32768 Align shadow skill selection with observable sources @copyberry
- #32780 Enable skill search shadow selection by default @copyberry
- #32781 Apply MCP startup timeouts during client creation @copyberry
- #32801 Refactor OAuth store lock contention tests @copyberry
- #32822 Make explicit multi-agent mode override proactive delegation @copyberry
- #32825 Avoid blocking thread startup on MCP OAuth discovery @copyberry
- #32835 Forward turn metadata in standalone web search @copyberry
- #32837 Restore V2 agent identities on root thread resume @copyberry
- #32838 Reap exited PID-managed app-server children @copyberry
- #32844 Expand millisecond duration histogram boundaries @copyberry
- #32849 Hide Windows filesystem helper console windows @copyberry
- #32857 Require the elevated Windows sandbox for network proxies @copyberry
- #32858 Persist slash-command popup dismissal @copyberry
- #32864 Coalesce concurrent Windows sandbox setup requests @copyberry
- #32866 Allow responses after image generation @copyberry
- #32867 Include connector IDs in MCP tool call analytics @copyberry
- #32875 Use model catalog policies for Guardian auto review @copyberry
- #32881 Broaden remote compaction model fallback @copyberry
- #32884 Prepare external agent migration for source adapters @copyberry
- #32887 Tag shell tool telemetry by command category @copyberry
- #32891 Attach connector caches to diagnostic uploads @copyberry
- #32894 Serialize plugin install requests @copyberry
- #32896 Load model context from a bounded rollout suffix @copyberry
- #32897 Route blocked network requests to their owning calls @copyberry
- #32898 Expose structured standalone web search results @copyberry
- #32899 Add exec-server environment status checks @copyberry
- #32900 Derive collaboration settings from turn context @copyberry
- #32903 Include session IDs in tool item analytics events @copyberry
- #32905 Timestamp app-server notifications at emission @copyberry
- #32911 Allow injecting the models manager into `ThreadManager` @copyberry
- #32920 Expose environment status through app-server @copyberry
- #32923 Materialize paginated thread history in SQLite @copyberry
- #32928 Resume thread history projection from its SQLite checkpoint @copyberry
- #32945 Restrict Guardian reviewer tools @copyberry
- #32949 Tighten recommended plugin install suggestions @copyberry
- #32952 Scope runtime workspace roots to execution environments @copyberry
- #32985 Expose exact per-response usage in raw app-server events @copyberry
- #32989 Always confirm before enabling full access @copyberry
- #33013 Bound exec-server JSON-RPC decoding complexity @copyberry
- #33026 Include raw response completions in TypeScript envelopes @copyberry
- #33030 Remove task messages from `list_agents` output @copyberry
- #33031 Preserve JSON number precision in exec-server RPC messages @copyberry
- #33035 Use session IDs for prompt cache keys @copyberry
- #33040 Send plugin analytics with API key authentication @copyberry
- #33076 Add an agent extension runner @copyberry
- #33093 Preserve streamed output during capped history replay @copyberry
- #33105 Fix TUI status visibility around streamed output @copyberry
- #33107 Preserve special filesystem subpaths as wire strings @copyberry
- #33109 Reject forks of paginated threads @copyberry
- #33113 Allow injecting the Codex Apps tools cache @copyberry
- #33121 Refine GPT-5.6 prompting and migration guidance @copyberry
- #33147 Support model catalog permission messages @copyberry
- #33149 Build MCP tool runtimes before router planning @copyberry
- #33150 Clarify exec yield timing on Windows @copyberry
- #33152 Support paginated thread history in app-server list APIs @copyberry
- #33155 Trace startup prewarm tasks @copyberry
- #33156 Run detached reviews as review-agent turns @copyberry
- #33159 Move sleep items to the extension-owned lifecycle path @copyberry
- #33166 Defer Noise environment connections until registration @copyberry
- #33167 Document the Windows exec yield time range @copyberry
- #33170 Support Amazon Bedrock login in the app server @copyberry
- #33173 Migrate GPT-5.4 uses to GPT-5.6 variants @copyberry
- #33175 Handle Amazon Bedrock credentials during logout @copyberry
- #33177 Support model catalog templates for Guardian policy prompts @copyberry
- #33180 Serialize concurrent MCP stdin writes @copyberry
- #33182 Preserve plugin install failure subtypes during imports @copyberry
- #33184 Reuse MCP tool catalogs across sessions @copyberry
- #33185 Keep approval test targets in the temporary home @copyberry
- #33187 Honor workspace spend controls in rate-limit handling @copyberry
- #33198 Keep interrupted prompts in conversation history @copyberry
- #33200 Separate exec permission paths from core models @copyberry
- #33201 Branch conversations when editing earlier TUI prompts @copyberry
- #33203 Preserve in-flight state when restoring thread input @copyberry
- #33207 Retry safety-buffered turns on a forked thread @copyberry
- #33209 Separate session state from session I/O @copyberry
- #33211 Preserve thread context when retrying or editing turns @copyberry
- #33213 Prepare Python SDK 0.144.4 stable release @copyberry
- #33223 Instrument environment and plugin resolution paths @copyberry
- #33232 Disambiguate skill mentions from shell parameters @copyberry
- #33237 Fix skill completion around bound mentions with suffixes @copyberry
- #33239 Render TUI composer tabs as single-column spaces @copyberry
- #33243 Add auto-compaction fallback token-budget settings @copyberry
- #33251 Report selected environment connection transitions @copyberry
- #33255 Add a fallback phase before automatic context rollover @copyberry
- #33261 Add Frameless Bidi support for realtime conversations @copyberry
- #33297 Allow MCP servers to opt out of tool catalog caching @copyberry
- #33308 Expand MCP tool catalog cache regression coverage @copyberry
- #33364 Enable paginated thread history in app-server @copyberry
- #33367 Respect final-answer boundaries for queued agent mail @copyberry
- #33369 Scan skill roots concurrently @copyberry
- #33373 Render TUI prompts before submitting user turns @copyberry
- #33411 Migrate plugin commands into skills on install @copyberry
- #33412 Refactor world-state rendering tests into snapshots @copyberry
- #33414 Expose connector candidates from imported sessions @copyberry
- #33421 Fetch workspace connectors concurrently @copyberry
- #33423 Load executor plugin declarations concurrently @copyberry
- #33424 Attribute OpenAI docs MCP requests to Codex @copyberry
- #33425 Refresh host skill catalogs through world state @copyberry
- #33426 Add Cursor support to setup import @copyberry
- #33427 Propagate deferred environment capability roots to MCP @copyberry
- #33430 Avoid creating metadata paths in the Windows sandbox @copyberry
- #33432 Preserve paginated history for spawned subagents @copyberry
- #33435 Warn on conflicting capability root locations @copyberry
- #33441 Shut down Codex threads after approval scenarios @copyberry
- #33444 Add external agent memory migration @copyberry
- #33445 Select the elevated Windows sandbox for network proxies @copyberry
- #33446 Remove the unused network proxy loader @copyberry
- #33454 Track prompt cache write token usage @copyberry
- #33456 Move external agent migration into its crate @copyberry
- #33457 Use final answers in turn history summaries @copyberry
- #33459 Allow more time for image generation in code mode @copyberry
- #33464 Strengthen forced `rm` command detection @copyberry
- #33467 Remove template IDs from MCP tool call metadata @copyberry
- #33500 Add cache-write tokens to the raw response schema @copyberry
- #33509 Preserve encrypted content in MCP tool outputs @copyberry
- #33550 Unify multi-agent settings under `agents` @copyberry
- #33572 Expose spawn agent types only when roles are configured @copyberry
- #33605 Add fielded BM25 to shadow skill selection @copyberry
- #33613 Add character n-gram skill selection @copyberry
- #33614 Add multi-query lexical skill selection @copyberry
- #33631 Honor configured model defaults for spawned agents @copyberry
- #33632 Remove generated-default filesystem path variants @copyberry
- #33633 Clarify when to wait for starting environments @copyberry
- #33636 Clarify when to wait for starting environments @copyberry
- #33639 Remove the unused realtime WebRTC crate @copyberry
- #33640 Avoid duplicate cached app list update notifications @copyberry
- #33645 Run `write_stdin` concurrently across terminal sessions @copyberry
- #33651 Add an app-server API for reading app metadata @copyberry
- #33656 Validate reasoning effort after applying spawn roles @copyberry
- #33657 Restore agent roles when reloading v2 sub-agents @copyberry
- #33658 Keep active-turn environments stable across settings updates @copyberry
- #33659 Require data URLs for code-mode image output @copyberry
- #33665 Refresh step world state for all sessions @copyberry
- #33677 Forward thread originators from standalone extensions @copyberry
- #33680 Reword the apply_patch tool description @copyberry
- #33683 Preserve scope and provenance for imported agent memory @copyberry
- #33684 Extract TUI approval request payloads into structs @copyberry
- #33687 Avoid unnecessary writes during migration repair @copyberry
- #33695 Support custom transports for Amazon Bedrock @copyberry
- #33841 Make parent-owned sub-agent threads read-only in the TUI @copyberry
- #33842 Give the zsh fork decline test more execution time @copyberry
- #33843 Add an API for reading installed app runtime state @copyberry
- #33845 Confirm usage-limit resets before redemption @copyberry
- #33848 Fix the managed Bedrock logout test assertion @copyberry
- #33851 Record web search result payload sizes @copyberry
- #33852 Add batched executor capability discovery @copyberry
- #33855 Tag realtime transcript tail flush delegations @copyberry
- #33856 Stream realtime V3 Codex handoff output @copyberry
- #33858 Isolate core tests from shell and rollout persistence @copyberry
- #33861 Test workspace write isolation across exec servers @copyberry
- #33862 Suppress empty multi-agent mode messages @copyberry
- #33863 Report detailed session import error types @copyberry
- #33864 Keep feature tests focused on behavior @copyberry
- #33866 Remove the redundant tool dispatch wrapper @copyberry
- #33867 Add grace period to code-mode yield timeouts @copyberry
- #33868 Remove stale ignored core tests @copyberry
- #33870 Remove the redundant borrowed line wrapping helper @copyberry
- #33872 Remove unused TUI collaboration mode indicators @copyberry
- #33876 Track collaboration mode instructions in world state @copyberry
- #33883 Report CLI as the external agent config import source @copyberry
- #33889 Centralize thread MCP connections in `McpRuntime` @copyberry
- #33892 Limit rollout metadata reads to headers @copyberry
- #33893 Track realtime conversation state in world state @copyberry
- #33895 Add SessionEnd hooks for thread teardown @copyberry
- #33896 Expose plugin installation interstitial requirements @copyberry
- #33901 Support ChatGPT-branded Desktop app builds @copyberry
- #33902 Add bounded batch lookups for message history @copyberry
- #33903 Route realtime V3 handoffs by response channel @copyberry
- #33905 Batch persistent history reads during reverse search @copyberry
- #33906 Launch managed network proxies on remote executors @copyberry
- #33907 Add occurrence search for paginated threads @copyberry
- #33908 Allow publishing plugins through share updates @copyberry
- #33921 Preserve sub-agent liveness in the agent picker @copyberry
- #33922 Allow selecting path-backed agents in the TUI picker @copyberry
- #33923 Add audio variants to user input protocols @copyberry
- #33925 Render inline visualization links in the TUI @copyberry
- #33926 Fix quoted hook commands on Windows @copyberry
- #33929 Handle audio inputs and Bazel unit test arguments @copyberry
- #33930 Track inherited paginated rollout prefixes @copyberry
- #33932 Forward audio inputs to the Responses API @copyberry
- #33938 Centralize SQLite connection configuration @copyberry
- #33944 Track permission instructions in world state @copyberry
- #33950 Let users remember the working directory for resumed sessions @copyberry
- #33961 Refresh bundled model metadata @copyberry
- #33963 Add context to sampling retry logs @copyberry
- #33982 Gate audio history by model input modalities @copyberry
- #34038 Handle compressed rollouts in doctor thread inventory @copyberry
- #34045 Render streamed Markdown incrementally @copyberry
- #34047 Avoid resending the model for reasoning shortcuts @copyberry
- #34049 Avoid redundant TUI redraws while streaming @copyberry
- #34067 Seed realtime V3 sessions with initial text items @copyberry
- #34080 Add audio output support to dynamic tools and code mode @copyberry
- #34085 Support legacy views for paginated thread history @copyberry
- #34194 Avoid cloning thread data when rendering transcripts @copyberry
- #34197 Use the Markdown collector as the streaming source of truth @copyberry
- #34198 Start side conversations without replaying inherited turns @copyberry
- #34199 Avoid liveness races when starting side conversations @copyberry
- #34204 Avoid cloning buffered TUI history lines @copyberry
- #34206 Avoid retaining decoded MCP images in history cells @copyberry
- #34216 Speed up TUI Markdown layout @copyberry
- #34217 Keep incremental rendering with visualization context @copyberry
- #34218 Track TUI command completion separately from output @copyberry
- #34222 Avoid buffering replay-irrelevant thread notifications @copyberry
- #34223 Cache finalized Markdown history rendering @copyberry
- #34224 Avoid cloning file changes in TUI diff rendering @copyberry
- #34226 Backfill completion items only for the active exec turn @copyberry
- #34229 Persist names for paginated threads @copyberry
- #34232 Remeasure dynamic cells in the transcript overlay @copyberry
- #34234 Avoid redundant TUI subagent metadata requests @copyberry
- #34271 Migrate legacy exec policy allow rules @copyberry
- #34293 Preserve zsh tied PATH exports in shell snapshots @copyberry
- #34344 Reject unsupported history modes when loading rollouts @copyberry
- #34345 Remove unused Rust helpers @copyberry
- #34346 Track inline visualization directives during streaming @copyberry
- #34347 Avoid cloning deferred TUI lifecycle payloads @copyberry
- #34348 Cache TUI flex heights across frame passes @copyberry
- #34355 Parallelize TUI bootstrap requests @copyberry
- #34357 Render streamed command output through preview iterators @copyberry
- #34359 Keep streamed command output bounded in the TUI @copyberry
- #34361 Avoid cloning thread history for token usage replay @copyberry
- #34365 Animate Max and Ultra reasoning effort changes @copyberry
- #34366 Avoid cloning hyperlink text during TUI rendering @copyberry
- #34368 Use app-server skill metadata directly in the TUI @copyberry
- #34371 Clear stale Guardian reviews when turns end @copyberry
- #34375 Extend second-based latency histogram buckets @copyberry
- #34378 Avoid rendering generated images twice @copyberry
- #34380 Stop retrying turns with invalid tool images @copyberry
- #34381 Avoid cloning Responses WebSocket payloads @copyberry
- #34382 Keep paginated thread Git metadata in SQLite @copyberry
- #34383 Mark multi-agent v2 as stable @copyberry
- #34384 Update packaged ripgrep to 15.2.0 @copyberry
- #34385 Preserve audio across history and tool outputs @copyberry
- #34386 Enable memories for paginated threads @copyberry
- #34387 Refresh bundled model metadata @copyberry
- #34389 Route Codex Apps MCP through plugin service @copyberry
- #34390 Use copy-on-write storage for history snapshots @copyberry
- #34392 Ignore inherited ACEs when refreshing Windows write roots @copyberry
- #34393 Add configurable hook context spill limits @copyberry
- #34396 Run compact session-start hooks before turn continuation @copyberry
- #34400 Propagate approval rejection reasons @copyberry
- #34403 Update tests for history and hook API changes @copyberry
- #34407 Resolve paginated rollout lineages @copyberry
- #34408 Support threadless MCP connections without event channels @copyberry
- #34409 Limit the Linux `/proc` preflight filesystem view @copyberry
- #34411 Require absolute paths for test SQLite configuration @copyberry
- #34413 Remove CSV-backed agent jobs @copyberry
- #34416 Show completed hook warnings in TUI headers @copyberry
- #34417 Enrich app/read connector metadata @copyberry
- #34423 Support Windows sandboxing in the exec server @copyberry
- #34429 Move shared skill models into `codex-skills` @copyberry
- #34431 Optimize remote compaction history handling @copyberry
- #34434 Support catalog messages for non-request approval policies @copyberry
- #34435 Resolve outbound proxy routes explicitly @copyberry
- #34436 Honor managed permission profiles in network proxy resolution @copyberry
- #34438 Increase the patch approval test timeout @copyberry
- #34441 Add buffered code-mode exec yields @copyberry
rust-v0.145.0
2026-07-21 10:29:35 -07:00
pakrym-oai
99efeef650 Add buffered code-mode exec yields (#34441)
## What changed

- Add the experimental `code_mode_buffered_exec` feature.
- When enabled, default code-mode `exec` calls without an explicit
  `yield_time_ms` to 30 seconds instead of 10 seconds.
- Report the effective default in the model-visible `exec` tool description.

## Testing

- Verify that the generated tool description advertises the 30-second default
  when the feature is enabled.

GitOrigin-RevId: 0eea4d0105137f09050ce31aad18c25c79df6b2a
2026-07-21 02:07:13 +00:00
Adam Perry @ OpenAI
c0cd337766 Increase the patch approval test timeout (#34438)
## Why

Patch approval events can take longer than the default test event timeout.

## What changed

Wait up to 15 seconds for a patch approval request or turn completion in the
approval test helper, while preserving the existing event checks and assertions.

GitOrigin-RevId: 73a50538482b5a88ccf0be07f8fad21000e54699
2026-07-21 01:16:03 +00:00
viyatb-oai
88fac6fe10 Honor managed permission profiles in network proxy resolution (#34436)
## Why

Permission profiles defined by `requirements.toml` can be selected as active,
but their network configuration was not included when resolving the network
proxy specification for that selection.

## What changed

Merge managed permission profiles from `requirements.toml` with configured
profiles before looking up the active profile's network proxy settings.

## Testing

- Verify config loading retains the proxy settings of an active managed
  profile.
- Verify `turn/start` accepts a managed profile with network settings.

GitOrigin-RevId: 3374f82a8fb0ce8f338fa2cea77c28ea2eb89636
2026-07-21 01:09:37 +00:00
Michael Bolin
c9ef7eff00 Resolve outbound proxy routes explicitly (#34435)
## Why

System proxy discovery can block, and delegating fallback to each transport can repeat discovery or apply inconsistent environment proxy behavior.

## What changed

- Resolve unavailable system proxy decisions to an explicit environment proxy or direct route, including `NO_PROXY` settings and WebSocket-specific fallbacks.
- Add asynchronous system proxy resolution that uses cached decisions first and serializes blocking platform lookups on Windows and macOS.
- Preserve `NO_PROXY` handling for WebSocket connections, including HTTP and HTTPS proxies, and hash proxy cache keys on every platform.

## Testing

- Add coverage for explicit environment fallback, cached asynchronous resolution, and proxied or bypassed WebSocket connections.

GitOrigin-RevId: 3b7cf170dcfe639eec53c3c1514f92bfcf13e7e9
2026-07-21 00:33:04 +00:00
rhan-oai
2be7d3bcd9 Support catalog messages for non-request approval policies (#34434)
## What changed

- Add model-catalog approval message variants for `never` and `unless_trusted`.
- Select the catalog message that matches the active approval policy, while retaining the existing built-in text when that variant is absent.
- Treat an explicitly empty variant as an instruction to suppress the built-in approval text, consistent with `on_request` messages.

## Testing

- Cover variant selection, fallback and empty-message behavior, catalog deserialization, and the initial permissions message sent to the model.

GitOrigin-RevId: a0f8d41a08645f39b80093be53f200eeee18ca25
2026-07-21 00:22:31 +00:00
Charlie Marsh
fd3c1dc13d Optimize remote compaction history handling (#34431)
## Why

Remote compaction can process large histories. Repeatedly estimating and replacing the full history, and cloning it when tracing is disabled, adds avoidable CPU and memory overhead.

## What changed

- Estimate each history item's token count once, update the total as trailing tool outputs are rewritten, and replace history only after all rewrites are selected.
- Preserve unclamped token totals while calculating removed tokens so saturated estimates do not hide overflow.
- Snapshot compaction input history only when rollout tracing is enabled.
- Reuse the v2 request input instead of cloning it before adding the compaction trigger.

## Testing

- Cover enabled and disabled compaction trace contexts through `is_enabled()` assertions.

GitOrigin-RevId: 8de9c9704ba29532fba05430eb204bbae2e8bf83
2026-07-20 23:30:30 +00:00
felixxia-oai
56c11cf658 Move shared skill models into codex-skills (#34429)
## What changed

- Define and export skill metadata, policy, dependency, interface, and configuration rule types from `codex-skills`.
- Update core, plugin, and extension consumers to use the shared models while retaining compatibility re-exports from `codex-core-skills`.
- Share product-restriction handling between host and environment skill metadata.

## Testing

- Add unit coverage for default and explicit implicit-invocation and product policies.

GitOrigin-RevId: 9093469f8fff8e2d902dc9781235f64709827a87
2026-07-20 23:22:48 +00:00
iceweasel-oai
35c2278dd5 Support Windows sandboxing in the exec server (#34423)
## Why

Sandboxed process launch through the exec server was unsupported on Windows.

## What changed

- Add a shared native process launcher that selects the Windows sandbox session backend when required and otherwise launches PTY or pipe-based processes.
- Pass Windows permission, workspace-root, proxy, filesystem-override, and desktop settings through exec-server process preparation.
- Preserve piped stdin and inherited file descriptors across the shared launch path.

## Testing

- Verify that a remote Windows sandbox process accepts stdin while blocking a write under a read-only policy.
- Enable workspace-root sandbox tests on native Windows while continuing to skip environments that cannot emulate Windows sandbox semantics.

GitOrigin-RevId: 6719ccbe87ad0d5a57af56503e3f23f894c60a71
2026-07-20 22:35:14 +00:00
Matthew Zeng
60272096bc Enrich app/read connector metadata (#34417)
## What changed

- Add `iconUrlDark`, `distributionChannel`, `installUrl`, and
  `pluginDisplayNames` to the experimental `app/read` connector metadata.
- Populate plugin display names from enabled plugins without starting their MCP
  servers.
- Accept both dark-icon field spellings from the batch API and keep the new
  upstream fields optional for compatibility with older responses.

## Testing

- Cover the serialized response fields, legacy batch responses, and plugin
  display-name lookup without MCP startup.

GitOrigin-RevId: 68601a104de839c0f4f4621d33b0e4d08ad88c64
2026-07-20 22:06:50 +00:00
Abhinav
cf821e8ec8 Show completed hook warnings in TUI headers (#34416)
## What changed

- Render the first line of a completed hook warning in the hook header using
  `says:`, with any remaining lines indented below it.
- Keep the existing hook header when no warning is present and avoid rendering
  warning entries a second time in the output body.
- Update hook event snapshots and the multiline warning test for the new layout.

GitOrigin-RevId: 291b556daf3b6fb64a99b090a6df1a222a18a736
2026-07-20 21:41:17 +00:00
jif
687f05cb94 Remove CSV-backed agent jobs (#34413)
## What changed

- Remove the `spawn_agents_on_csv` and `report_agent_job_result` tools and their agent-job runtime and state models.
- Drop the legacy `agent_jobs` and `agent_job_items` tables during state database migration.
- Keep `features.enable_fanout` and `agents.job_max_runtime_seconds` accepted as no-op compatibility settings while omitting them from the generated configuration schema.

## Testing

- Verify upgrades remove both legacy agent-job tables.
- Verify the removed feature and configuration keys still parse without taking effect.

GitOrigin-RevId: 8cc3337da78c67162229f02f40a747f503542646
2026-07-20 21:00:17 +00:00
Adam Perry @ OpenAI
81e89fa5af Require absolute paths for test SQLite configuration (#34411)
## Why

`SqliteConfig` stores its home as an `AbsolutePathBuf`, but its test constructor
previously accepted a `PathBuf` and checked the absolute-path invariant at
runtime.

## What changed

- Make `SqliteConfig::new_for_testing` accept an `AbsolutePathBuf` directly,
  removing its fallible conversion and `expect`.
- Update SQLite test setup to convert temporary directory paths with
  `PathExt::abs` at each call site.

GitOrigin-RevId: 93585b9aea805e2449b3465ac20eeb39417ed555
2026-07-20 20:54:08 +00:00
viyatb-oai
44481a1c45 Limit the Linux /proc preflight filesystem view (#34409)
## What changed

- Run the bubblewrap `/proc` mount probe with the minimal read-only filesystem policy instead of the command's filesystem policy and working directory.
- Preserve the requested network namespace mode during the probe.
- Add coverage that the probe mounts a temporary root and `/proc` without binding the full filesystem.

GitOrigin-RevId: e3bc4352f510980aeebe81dedf3f9211947982ed
2026-07-20 20:50:02 +00:00
stevenlee-oai
19940967bd Support threadless MCP connections without event channels (#34408)
## What changed

- Make the MCP connection manager's event sender optional.
- Skip startup notifications when a caller has no session event stream.
- Decline interactive MCP elicitations in that mode while allowing the
  underlying operation to continue.
- Update threadless resource reads, status snapshots, and connector discovery
  to use the channel-free path.

## Testing

- Extend the app-server MCP resource test to verify that a threadless resource
  read declines an elicitation and still returns the resource contents.

GitOrigin-RevId: 65fea152adbc02a78e09a40cae4134b6dccffd34
2026-07-20 20:43:36 +00:00
Owen Lin
b7e39aa316 Resolve paginated rollout lineages (#34407)
## What changed

- Add a shared local thread-store resolver that follows `history_base` links into ordered, bounded rollout segments, including archived ancestors.
- Support resolving a lineage at an explicit `HistoryPosition`.
- Reject malformed lineages with cycles, missing or mismatched source rollouts, non-paginated sources, or invalid cutoff bounds.

## Testing

- Add unit coverage for nested and archived lineages, explicit history positions, cycles, missing sources, and out-of-bounds offsets.

GitOrigin-RevId: a9063ad87e81d9865bd17fc588ea5d8e9ac74c0a
2026-07-20 20:33:51 +00:00
Charlie Marsh
ec3140db12 Update tests for history and hook API changes (#34403)
## What changed

- Assert truncated audio history through `ContextManager::raw_items()`.
- Initialize `additional_context_limit` in the quoted Windows hook command test.

GitOrigin-RevId: 43c19804e558b7a11fc17590506ec6ec7f3a9897
2026-07-20 20:06:58 +00:00
Dylan Hurd
e52c35b000 Propagate approval rejection reasons (#34400)
## What changed

- Change `ReviewDecision::Denied` to carry a rejection string and update the generated protocol schemas.
- Preserve specific rejection reasons through command, patch, network, MCP, delegated, and automatic approval flows so tool results can return them to the model.
- Distinguish invalid approval responses from user declines and truncate oversized rejection messages before adding them to model context.

## Testing

- Add coverage for denial serialization, invalid app-server approval responses, dropped automatic reviews, network rejection propagation, and rejection-message truncation.

GitOrigin-RevId: d48a55643aa03c7ecfa08a8e4b669913eec5464a
2026-07-20 19:23:21 +00:00
Andrei Eternal
8c41ed33ce Run compact session-start hooks before turn continuation (#34396)
## Why

Mid-turn auto-compaction queued `SessionStart` hooks but continued sampling
before running them. This delayed hook-provided context and ignored requests to
stop the continuation.

## What changed

Drain pending session-start hooks immediately after successful mid-turn
auto-compaction. End the turn when a hook requests a stop; otherwise include
its additional context in the next sampling request.

## Testing

Added coverage for repeated compactions in one turn, context delivery without
leaking hooks into the next user turn, and stop requests that block sampling.

GitOrigin-RevId: c57708a792fb47d98d95c38d7d91bcd9f235be84
2026-07-20 19:08:58 +00:00
Andrei Eternal
e4836f998d Add configurable hook context spill limits (#34393)
## What changed

- Add `additionalContextLimit` to command hook configuration for events that can emit `additionalContext`.
- Apply the limit independently to each hook's context before it is sent to the model. Unset values retain the 2,500-token default, while `0` disables spilling for that hook.
- Expose configured limits through app-server hook and requirements responses, and show them in the TUI hooks browser.

## Testing

- Cover JSON and TOML parsing, discovery and hashing, per-hook spilling behavior, app-server responses, and TUI rendering.

GitOrigin-RevId: 55ddc2dbbdf9067dceee3e1968c03617bbf6bcea
2026-07-20 18:46:02 +00:00
Felipe Coury
bd92b056dd Ignore inherited ACEs when refreshing Windows write roots (#34392)
## Why

An inherited `FILE_DELETE_CHILD` grant can make a write root look stale, but
`SET_ACCESS` cannot replace an ACE inherited from an ancestor. Treating that
grant as explicit causes unnecessary ACL refresh attempts that cannot converge.

## What changed

- Add explicit-ACE filtering to the Windows DACL permission checks.
- Refresh a write root only when `FILE_DELETE_CHILD` is present in an explicit
  allow ACE, while retaining effective-permission checks for required rights.
- Ignore inherited stale rights when deciding whether `SET_ACCESS` must repair
  an allow ACE.

## Testing

Add a Windows regression test covering a write root that inherits
`FILE_DELETE_CHILD`, verifying that repeated refresh checks leave its explicit
write ACE unchanged.

GitOrigin-RevId: d0df9429efcf299da3ff3c1bce92942684803293
2026-07-20 18:28:02 +00:00
Charlie Marsh
45ac251e17 Use copy-on-write storage for history snapshots (#34390)
## Why

Cloning a `ContextManager` deep-copies every `ResponseItem`, even when callers only need a read-only history snapshot.

## What changed

- Store history items in an `Arc<Vec<ResponseItem>>` so cloned snapshots share their items until one is mutated.
- Reuse an owned vector when consuming an unshared snapshot and clone it only when other snapshots still reference it.
- Estimate session token counts from a snapshot after releasing the session-state lock.

## Testing

Added a regression test that verifies cloned histories share their backing items before mutation and diverge without affecting each other afterward.

GitOrigin-RevId: 24605888209ae9ff78cadb04d9c36463f7e2dbe0
2026-07-20 18:03:12 +00:00
Alex Daley
6bf4845b60 Route Codex Apps MCP through plugin service (#34389)
## What changed

- Point the default Codex Apps MCP server at `ps/mcp` instead of the legacy Apps endpoint for both `backend-api` and `api/codex` base URLs.
- Use the same server configuration for Codex Apps and the hosted plugin runtime.
- Update MCP integration tests and test-server routing to expect the plugin-service path.

GitOrigin-RevId: 939f20dcff67ba6f79c11b328bfc624b25e3aac2
2026-07-20 17:55:58 +00:00
Dylan Hurd
5a4f5ee64c Refresh bundled model metadata (#34387)
## What changed

- Add personality instruction variables for the GPT-5.6 model variants.
- Add the GPT-5.5 availability notice.
- Remove the `auto_review` and `permissions` message fields and the legacy `supports_reasoning_summary_parameter` flag from the bundled catalog.

GitOrigin-RevId: 426b0735a78232d2f658e0124db7c45889d08286
2026-07-20 17:47:49 +00:00
Owen Lin
2793c826e8 Enable memories for paginated threads (#34386)
## Why

Paginated threads keep metadata updates in SQLite, while their rollout retains the initial `memory_mode`. Reconciliation could therefore overwrite the current setting with a stale value, and memory processing excluded these threads entirely.

## What changed

- Include paginated threads in stage 1 memory job selection and global memory output lookup.
- Preserve the SQLite `memory_mode` when reconciling or backfilling an existing paginated thread, while continuing to seed missing rows and restore legacy threads from rollouts.
- Omit `memory_mode` alongside Git metadata when flushing resumed paginated history.

## Testing

Added coverage for preserving disabled memory mode during reconciliation and backfill, selecting eligible paginated threads, and omitting initial metadata on paginated resume.

GitOrigin-RevId: 2a6e16068e69680728757fbec27aeefae45b8110
2026-07-20 17:41:33 +00:00
nhamidi-oai
6f785632b0 Preserve audio across history and tool outputs (#34385)
## Why

Audio attachments could be dropped from tool outputs and reconstructed thread history, while inline base64 payload size could overstate their model context cost.

## What changed

- Preserve remote and local audio attachments in legacy user-message events and thread history.
- Keep audio from function and custom tool outputs when the model supports it and the output fits the truncation budget; otherwise replace it with an omission marker.
- Estimate inline audio cost from its duration, with a serialized-size fallback for malformed or unsupported data URLs, so compaction and truncation use model-visible cost instead of raw base64 size.
- Replace audio in messages and tool outputs with an explanatory placeholder for models without audio input support.

## Testing

Add coverage for history round trips, dynamic tool responses, modality filtering, duration-based context estimates, output-budget truncation, and remote compaction.

GitOrigin-RevId: 5ed4628850a668f8383b7cd73db71b144cc02cd1
2026-07-20 17:36:44 +00:00
Michael Bolin
692a0fb7e5 Update packaged ripgrep to 15.2.0 (#34384)
## What changed

- Point the packaged `rg` manifest at ripgrep 15.2.0 archives for all
  supported macOS, Linux, and Windows targets.
- Update each archive's size, SHA-256 digest, and executable path.

GitOrigin-RevId: 6dcfa4fe40597a7591b8413e330d27e6b0b86627
2026-07-20 17:32:25 +00:00
jif
b00c9b2e16 Mark multi-agent v2 as stable (#34383)
## What changed

- Classify `multi_agent_v2` as stable while keeping it disabled by default.
- Exclude structured `multi_agent_v2` configuration from under-development feature warnings.

## Testing

- Update the warning-event test to verify that only the remaining under-development feature is reported.

GitOrigin-RevId: 12cb661dde9bc7b5aeae2f83476cb5ff75e0c959
2026-07-20 17:27:23 +00:00
Owen Lin
19b2273d8a Keep paginated thread Git metadata in SQLite (#34382)
## Why

Paginated rollouts contain only the initial Git metadata tuple. Reusing that
tuple during later reads, reconciliation, or resume can overwrite newer SQLite
values and undo explicit field clears.

## What changed

- Treat SQLite as authoritative for Git metadata once a thread is paginated.
- Apply paginated Git metadata patches directly to SQLite without appending
  compatibility metadata to the rollout.
- Preserve explicit null values when reading by rollout path or reconciling the
  initial session metadata, and ignore the initial Git tuple during resume.

## Testing

Added coverage for updating and clearing paginated Git metadata, preserving the
result through reconciliation and rollout-path reads, and avoiding stale Git
metadata updates on resume.

GitOrigin-RevId: 4d3e68cb24965b93d337d923092a98bac9b352b5
2026-07-20 17:23:18 +00:00
Charlie Marsh
6b9a5592a6 Avoid cloning Responses WebSocket payloads (#34381)
## Why

Building a Responses WebSocket request copied the model, instructions, input
history, tools, and other request settings into a second payload before
serialization.

## What changed

- Make `ResponseCreateWsRequest` borrow shared fields from
  `ResponsesApiRequest`.
- Keep only WebSocket-specific fields owned, and allocate a separate input
  vector only for incremental continuations.
- Restore response item IDs after preparing a full request so the request
  retained for continuation matching keeps its original state.

## Testing

Update the serialization test to verify that the borrowed WebSocket request
produces the same wire payload as the Responses API request plus its
WebSocket-specific fields.

GitOrigin-RevId: b63d746b7f5164b5204ab95b057c914a4aeb71e1
2026-07-20 17:18:25 +00:00
rka-oai
8431dc590a Stop retrying turns with invalid tool images (#34380)
## What changed

Remove the fallback that replaced image content in the latest tool output with
`Invalid image` and retried the model request. Invalid-image responses now use
the existing bad-request error path without modifying conversation history.

GitOrigin-RevId: f4ea782f16c5451feb261694caa73b77f24c3e4e
2026-07-20 16:57:03 +00:00
Won Park
7e51abbbd1 Avoid rendering generated images twice (#34378)
## What changed

- Tell the model that generated images are already displayed to the user and should not be repeated as Markdown images or file links.
- Keep generated-image artifact paths and output hints owned by the image generation extension.
- Centralize the availability check for the image generation tool across feature, provider, namespace-tool, model modality, and authentication requirements.

## Testing

- Verify artifact paths sanitize session and call identifiers.
- Verify the model-facing output hint reports that the generated image is already displayed.

GitOrigin-RevId: 6c865b6a96d6a71bb2c33246d1518a00e7c8b840
2026-07-20 16:47:03 +00:00
keith thornhill
9a7e823e5b Extend second-based latency histogram buckets (#34375)
## Why

Requests longer than 10 seconds were grouped into the overflow bucket, limiting visibility into long-running request latency.

## What changed

Add second-based duration histogram boundaries at 12, 15, 20, 30, 60, and 120 seconds.

## Testing

Extend the duration histogram test to cover every new boundary and a 121-second overflow value.

GitOrigin-RevId: 063a5d397dbd37d3b3940c7a1632b7b479e874a4
2026-07-20 16:25:57 +00:00
Eric Traut
5c18cc0acc Clear stale Guardian reviews when turns end (#34371)
## Why

Pending Guardian review state could outlive an interrupted or completed turn,
leaving stale review details visible during a following goal turn.

## What changed

- Clear pending Guardian reviews during both turn completion and finalization.
- Restore an active MCP startup header after cleanup, falling back to `Working`
  when no MCP server is starting.

## Testing

Added coverage for interrupted and completed turns, including goal continuation
and overlapping MCP startup status.

GitOrigin-RevId: a15ed81a5d6005e9294089f4424a8dedbc6e9cb5
2026-07-20 16:05:14 +00:00
felixxia-oai
b6de5b524c Use app-server skill metadata directly in the TUI (#34368)
## Why

The TUI already receives skill metadata from the app-server protocol, but converted it into the core-skills model before using it.

## What changed

- Use `codex_app_server_protocol::SkillMetadata` throughout skill toggles, mentions, and input submission.
- Remove the protocol-to-core conversion and the TUI's `codex-core-skills` dependency.

GitOrigin-RevId: 43d43d74bfb67fc21ef11a0ca0592aa44b89a122
2026-07-20 15:44:37 +00:00
Charlie Marsh
28aacbb9d9 Avoid cloning hyperlink text during TUI rendering (#34366)
## What changed

Add a borrowed `Line` conversion and use it when rendering and measuring
hyperlink-aware history and pager content. This preserves line styling and
alignment while avoiding clones of the underlying span strings.

GitOrigin-RevId: c9cd6ff5ec63cd29719ea2ae51acede7364f2bd8
2026-07-20 15:39:31 +00:00
Felipe Coury
f944456d81 Animate Max and Ultra reasoning effort changes (#34365)
## What changed

- Add one-shot composer and status-line transitions when the active reasoning effort changes to Max or Ultra.
- Keep a tier-specific prompt accent after the transition, including a distinct Ultra prompt glyph.
- Preserve drafts and footer priority, avoid replaying effects for restored or unchanged settings, and disable motion when animations or sufficient terminal color support are unavailable.

## Testing

- Add unit and snapshot coverage for animation frames, prompt accents, status-line transitions, narrow layouts, terminal palettes, restored sessions, and reduced-motion behavior.

GitOrigin-RevId: 6da1d501d228d0cf1144b3d211d5d1304a06f447
2026-07-20 15:35:12 +00:00
Charlie Marsh
1e20272fa5 Avoid cloning thread history for token usage replay (#34361)
## What changed

- Resolve the turn ID for restored token usage before sending resume and fork responses, avoiding a clone of the full thread history.
- Add `ThreadHistoryBuilder::active_turn_id` so attribution can inspect the active turn without materializing its items.
- Stop history reconstruction at the latest persisted `TokenCount` and verify that a later tail turn does not receive the replayed usage.

GitOrigin-RevId: 69c4a9fe04770d1a938470afc933431e61670094
2026-07-20 14:52:42 +00:00
Charlie Marsh
ef6b597f41 Keep streamed command output bounded in the TUI (#34359)
## Why

Large command streams, including commands that never emit a newline, can make an active TUI cell grow without bound.

## What changed

- Retain live output in full up to 1 MiB, then preserve the first and last 50 completed lines plus the current partial line.
- Bound individual long lines while preserving UTF-8 boundaries, visible head and tail content, and ANSI rendering around omission markers.
- Show omitted line and byte counts in previews and transcripts. Final command output still replaces the bounded live preview when execution completes.

## Testing

Added unit and snapshot coverage for chunk boundaries, split CRLF sequences, newline-free and UTF-8 output, truncated ANSI sequences, retained-output limits, and preview and transcript rendering.

GitOrigin-RevId: 3cf3cc862db686f20ac09b1f6e7f9dc6d264e6eb
2026-07-20 14:44:25 +00:00
Charlie Marsh
20440a0833 Render streamed command output through preview iterators (#34357)
## What changed

- Encapsulate aggregated command output behind APIs for total and retained line
  counts, reversible preview iteration, and full transcript iteration.
- Build truncated command previews from the retained head and tail lines while
  preserving the logical omitted-line count.
- Cover head/tail rendering for long streamed agent and user-shell output.

GitOrigin-RevId: 54b23a19e4639e24c5e4778082edbbc6484ecf80
2026-07-20 14:27:39 +00:00
Charlie Marsh
2661d8577e Parallelize TUI bootstrap requests (#34355)
## Why

During TUI startup, `hooks/list` holds the global config queue while an
uncached `model/list` request may also take time. Waiting for
`configRequirements/read` before submitting the model request prevents these
operations from overlapping.

## What changed

Submit `model/list` and `configRequirements/read` together during bootstrap so
the model fetch can overlap the config requests. Preserve the request-specific
error context and update the session state after both requests succeed.

GitOrigin-RevId: 69a866e6d2fd4798b914dd000456194f49fcfef6
2026-07-20 14:23:15 +00:00
Charlie Marsh
eceb3eeaf3 Cache TUI flex heights across frame passes (#34348)
## Why

Sizing, rendering, and cursor placement can query the same chat widget layout
multiple times in one frame, repeatedly measuring active transcript cells.

## What changed

- Build one chat widget renderable tree per frame and reuse it for sizing,
  rendering, and cursor placement.
- Cache each flex child's desired height by width for the lifetime of that tree.
- Reuse the bottom pane's renderable directly instead of forwarding each
  renderable operation through a wrapper.

## Testing

- Verify flex layouts measure a child once across frame passes and remeasure it
  when the width changes.
- Verify a chat widget frame measures its active transcript cell once.

GitOrigin-RevId: 5ad1a6711f4011c699b5d002b13dc3319cb4db8e
2026-07-20 13:58:17 +00:00
Charlie Marsh
ada5a79ddf Avoid cloning deferred TUI lifecycle payloads (#34347)
## What changed

- Move lifecycle and approval payloads into either the interrupt queue or the
  immediate handler instead of cloning them for both branches.
- Borrow MCP elicitation request metadata while constructing the corresponding
  form, and consume apply-patch changes after collecting notification paths.

## Testing

- Add a history replay test confirming deferred MCP start and completion events
  remain FIFO after streaming finishes.

GitOrigin-RevId: 84ed34f6ff173463a1da016dc140405392c0ba45
2026-07-20 13:54:11 +00:00
Charlie Marsh
2244d11a1d Track inline visualization directives during streaming (#34346)
## What changed

- Record when committed streaming content contains an inline visualization directive and keep using the canonical full-source renderer afterward.
- Restore directive state during full recomputes and clear it when the streaming renderer is reset.
- Cover directive tracking with and without visualization context, including a raw-to-rich render mode switch.

GitOrigin-RevId: 17786851d6dad6805240b79072fcbd0bb441874a
2026-07-20 13:50:06 +00:00
Charlie Marsh
221a341029 Remove unused Rust helpers (#34345)
## What changed

- Remove unused APIs and test helpers across the Rust workspace.
- Route Linux sandbox test setup through the shared exec request path.
- Drop dependencies that became unnecessary after the cleanup.

GitOrigin-RevId: 48fd9b2b1575bad7add0819786b4d8ec88d8486f
2026-07-20 13:45:29 +00:00
Charlie Marsh
86102db5a1 Reject unsupported history modes when loading rollouts (#34344)
## Why

The first session metadata record defines a rollout's history mode. If that
record uses an unsupported mode, skipping it as a parse error can cause later
metadata copied from fork history to be treated as canonical.

## What changed

- Validate session metadata history modes before deserializing rollout lines,
  while continuing to tolerate unknown modes in copied fork history.
- Simplify thread status registration to pass only the thread ID instead of a
  fully materialized `Thread`.

GitOrigin-RevId: 9de4313d4a76b279d32bb49b2016a4f5d07507c1
2026-07-20 13:39:29 +00:00
Anton Panasenko
2deed3fb9c Preserve zsh tied PATH exports in shell snapshots (#34293)
## Why

zsh prints tied scalar/array exports such as `PATH` and `path` with `-T`
metadata. The snapshot filter rejected that syntax, so commands available only
through the configured `PATH` could not be resolved from a restored snapshot.

## What changed

- Recognize writable tied exports and retain them in zsh shell snapshots.
- Skip readonly exports so restoring a snapshot does not make variables such as
  `PATH` immutable.

## Testing

Added macOS coverage for restoring a tied `PATH`, handling entries with spaces,
deduplicating path entries, excluding readonly tied exports, and resolving a
command available only through the restored snapshot.

GitOrigin-RevId: 297cfae3368230c7f6fe5ef84f0a10b35a2c802c
2026-07-20 08:29:12 +00:00
Won Park
bf3c1972b7 Migrate legacy exec policy allow rules (#34271)
## What changed

- On session startup, remove exact `allow` entries from `rules/default.rules`
  for command prefixes that Codex no longer suggests as policy amendments.
- Record the migration in `.sandbox_migration` so it runs only once, preserving
  rules created after the migration.
- Skip the migration when user and project exec policy rules are ignored.
- Expand the protected prefix list across shells, interpreters, package runners,
  and destructive or privilege-related commands.

## Testing

- Cover selective removal, case-insensitive matching, one-time behavior, and the
  startup path with ignored policy rules.

GitOrigin-RevId: a0c60e3f82b9630e621fd034b40462e3ab775102
2026-07-20 06:13:29 +00:00
Charlie Marsh
678157acaa Avoid redundant TUI subagent metadata requests (#34234)
## What changed

- Skip loaded-subagent backfills for fresh and forked threads, which cannot have pre-existing descendants.
- Keep the backfill after resuming a thread so agent navigation is populated immediately.
- Reuse thread status collected during backfill when opening the agent picker, avoiding duplicate `thread/read` requests while preserving liveness from live event channels.

## Testing

- Add a WebSocket-backed session lifecycle test that records app-server requests across fork, fresh-session, resume, and agent-picker flows.

GitOrigin-RevId: 604742b3cb495da12c97908d7a0ffa4ebc6a6da3
2026-07-19 21:39:58 +00:00
Charlie Marsh
a97ae65362 Remeasure dynamic cells in the transcript overlay (#34232)
## Why

The transcript overlay cached every committed cell's height. Cells whose content changes after insertion, such as refreshed status output or newly available visualizations, could outgrow that cached height and be clipped.

## What changed

- Let history cells declare whether their transcript height is stable, and remeasure dynamic cells on later overlay renders.
- Preserve cached heights for stable cells when appending a committed cell instead of rebuilding all renderables.

## Testing

- Cover status output growing after a rate-limit refresh.
- Cover a visualization link replacing its unavailable placeholder.
- Verify that appending a cell preserves cached measurements for stable cells.

GitOrigin-RevId: 03e7166cb94d7353c9b89bff8abb3b7ccb84a6bb
2026-07-19 21:34:05 +00:00