Skip to content

Reuse Windows filesystem helper within apply_patch on 0.153.0 - #23

Open
hirsaeki wants to merge 4 commits into
mainfrom
perf/stable-0.153.0-apply-patch-fs-helper-reuse-p1r
Open

Reuse Windows filesystem helper within apply_patch on 0.153.0#23
hirsaeki wants to merge 4 commits into
mainfrom
perf/stable-0.153.0-apply-patch-fs-helper-reuse-p1r

Conversation

@hirsaeki

@hirsaeki hirsaeki commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Summary

Cleanly restack P1R on the stable rust-v0.153.0 baseline.

  • reuse one lazily-created filesystem sandbox helper only within one logical Windows apply_patch filesystem phase
  • bind reuse to the SandboxedFileSystem runner identity plus the full FileSystemSandboxContext
  • keep Linux/macOS on the existing one-request-per-helper behavior
  • keep the Windows Open / handle-transfer path one-shot
  • invalidate the scoped helper on parent-side transport/framing failure
  • propagate helper cleanup failure without misclassifying it as a sandbox denial
  • retain the targeted Windows regression asserting one helper start per representative apply_patch

Base / patch shape

  • base: 41e22fee981a63b3698df7ed36bad393cda24715 (rust-v0.153.0)
  • one fork commit: ea1a73b351ad8da8fbfd421ac0bbb92da9999bee
  • five changed files, all P1R production code or its targeted regression
  • no P0 measurement code, P2 implementation, benchmark docs, generic helper pool, or CI workaround

The previous P1R base (c4ea7294b989827862eed6972d130233459161f4) and stable 0.153.0 diverge as release histories, so this was not rebased wholesale. The four existing files touched by P1R were compared across those bases and are unchanged; the reviewed final P1R blobs were therefore restacked directly onto the stable release tree without overwriting stable-specific source changes.

Validation

The fork-only repository-bundle workflow is no longer present on the stable-only main, and direct network access from the Sandbox is unavailable. No extra infrastructure patch was reintroduced just to run local checks. Repository CI on this PR is used for native build/test validation.

jif-oai and others added 4 commits September 2, 2026 15:22
## What changed

- Skip Guardian prewarming and asynchronous scoring when `approvalsReviewer` is
  `"user"`, including when the reviewer changes during an active turn.
- Automatically accept ordinary `node_repl.js` execution confirmations in this
  mode while continuing to surface sensitive-action checks and requests for user
  input.
- Cover transitions between User approval, automatic review, and Full Access in
  the app-server integration tests.

GitOrigin-RevId: 599c8ebb672728b9bf3d64c34377ddec230325f8
(cherry picked from commit a0dcfe2)
## What changed

- Add the under-development `features.context_management.experimental_mode` configuration and schema.
- For eligible ChatGPT Plus, Pro, and Pro Lite sessions using the Codex backend, enable token-budget context, history notes, and the `new_context` tool when experimental context management is configured.
- Keep the feature disabled for custom providers, provider credentials, non-Codex endpoints, and temporary structured threads.

## Testing

- Cover subscription eligibility, backend restrictions, configuration resolution, token-budget guidance, and temporary-thread overrides.

GitOrigin-RevId: 19402af19c4d69e09a7cdb3687ee7d233f6a562a
(cherry picked from commit cff76fa)
- Vim mode now supports undo with `u` and redo with `Ctrl+R`, preserving complete drafts including pasted content and attachments. ([openai#41941](openai#41941), [openai#42140](openai#42140))
- The plugin CLI can list, install, and remove plugins from remote marketplaces. ([openai#42150](openai#42150))
- Set `tui.auto_recap = false` to disable automatic recaps while keeping manual `/recap` available. ([openai#42101](openai#42101))
- TUI history shows complete patches, input sent to background terminals, and individual completed commands. ([openai#41893](openai#41893), [openai#42107](openai#42107))
- Plus and Team users receive an earlier warning when less than half of their allowance remains in an approximately five-hour usage window. ([openai#42142](openai#42142))

## Bug Fixes

- TUI sessions reconnect after an external app-server connection drops, preserving drafts and transcripts while keeping uncertain or queued submissions paused for review. ([openai#41911](openai#41911), [openai#41916](openai#41916), [openai#41918](openai#41918))
- Full Access skips Guardian reviews for confirmation-only actions. User approval mode skips background Guardian scoring and prewarming, while sensitive-action checks and requests for user input retain their existing handling. ([openai#42147](openai#42147), [openai#42256](openai#42256))
- Guardian review history survives compaction, restarts, and user-created forks while respecting rollback boundaries and isolating subagent history. ([openai#41879](openai#41879), [openai#42065](openai#42065))
- Remembered MCP tool approvals are scoped to the selected app account, and relative MCP executable paths start more reliably on macOS. ([openai#42133](openai#42133), [openai#42117](openai#42117))
- Rollout compression includes shared histories, `codex exec resume` handles compressed rollouts when selecting by working directory, and thread forks work with symlinked session roots. ([openai#42039](openai#42039), [openai#42135](openai#42135))

## Configuration and API Updates

- App-server thread metadata includes nullable `model` and `reasoningEffort` fields. Structured asynchronous questions are supported through `request_user_input_async` when enabled by the model catalog. ([openai#42151](openai#42151), [openai#42178](openai#42178))
- `tui.disable_paste_burst` replaces the top-level setting, which remains supported as a fallback. ([openai#41976](openai#41976))
- Adds the disabled-by-default `features.context_management.experimental_mode` configuration. When enabled for eligible ChatGPT Plus, Pro, or Pro Lite sessions using the Codex backend, it activates token-budget context, history notes, and the `new_context` tool. API-key sessions, custom providers, and temporary structured threads remain excluded. ([openai#42385](openai#42385))

## Changelog

[Full Changelog](openai/codex@rust-v0.152.1...rust-v0.153.0)

- [openai#41870](openai#41870) Use shared transcript collection for Guardian reviews
- [openai#41879](openai#41879) Preserve Guardian review evidence across compaction
- [openai#41884](openai#41884) Add pinned native voice source preparation
- [openai#41890](openai#41890) Add native voice dependency build recipe
- [openai#41892](openai#41892) Retain the MCP client for event streams
- [openai#41893](openai#41893) Show successful TUI commands individually
- [openai#41894](openai#41894) Fix Windows native voice dependency builds
- [openai#41897](openai#41897) Add the voice helper lifecycle foundation
- [openai#41899](openai#41899) Keep MCP event subscriptions alive after task unloading
- [openai#41901](openai#41901) Load bounded context after empty wake turns
- [openai#41902](openai#41902) Add installed voice host lifecycle support
- [openai#41906](openai#41906) Add a manager for MCP event streams
- [openai#41908](openai#41908) Avoid scanning archived rollouts when archiving threads
- [openai#41909](openai#41909) Make permission transforms aware of executor path context
- [openai#41911](openai#41911) Preserve TUI drafts after app-server disconnects
- [openai#41912](openai#41912) Persist response token usage in rollout history
- [openai#41913](openai#41913) Preserve TUI status timing when the status row is hidden
- [openai#41915](openai#41915) Move the config schema generator into a dedicated crate
- [openai#41916](openai#41916) Reconnect TUI app-server sessions automatically
- [openai#41917](openai#41917) Open the agents overview from an empty composer
- [openai#41918](openai#41918) Restore agent navigation after TUI reconnects
- [openai#41923](openai#41923) Allow per-call sideband endpoints for existing realtime calls
- [openai#41924](openai#41924) Record realtime conversation history in Core
- [openai#41925](openai#41925) Test repository-wide Rust formatter discovery
- [openai#41928](openai#41928) Use executor path context for permission preapproval
- [openai#41929](openai#41929) Open the agents overview directly in the reconnect test
- [openai#41933](openai#41933) Report configured sandbox policy consistently
- [openai#41934](openai#41934) Omit undersized WAV output from Code Mode
- [openai#41936](openai#41936) Attach failed Guardian reviews to diagnostic reports
- [openai#41937](openai#41937) Limit background terminal input previews
- [openai#41938](openai#41938) Clarify resume guidance in exit summaries
- [openai#41940](openai#41940) Preserve transcript layout caches during backtrack selection
- [openai#41941](openai#41941) Add Vim undo to the TUI composer
- [openai#41944](openai#41944) Emit turn cost telemetry for ChatGPT sessions
- [openai#41946](openai#41946) Expand extension permission regression coverage
- [openai#41949](openai#41949) Add plugin reconciliation app-server API
- [openai#41950](openai#41950) Improve tracing for nested tool calls and exec processes
- [openai#41953](openai#41953) Enforce marketplace source policy for curated plugins
- [openai#41974](openai#41974) Track TUI starts by app server mode
- [openai#41976](openai#41976) Move `disable_paste_burst` under `[tui]`
- [openai#41980](openai#41980) Preserve raw response usage metadata
- [openai#42003](openai#42003) Report turn trigger and source in turn analytics
- [openai#42031](openai#42031) Share Guardian user-message retention logic
- [openai#42033](openai#42033) Improve Guardian report diagnostics
- [openai#42039](openai#42039) Include shared histories in rollout compression
- [openai#42043](openai#42043) Tag Codex home size metrics with compression state
- [openai#42047](openai#42047) Add per-account approval settings for apps
- [openai#42054](openai#42054) Honor explicit account selectors for Apps tool calls
- [openai#42056](openai#42056) Honor app link settings for MCP tool approvals
- [openai#42065](openai#42065) Preserve Guardian history across thread reconstruction
- [openai#42066](openai#42066) Remove selected core test cases
- [openai#42068](openai#42068) Detect standalone installs from the macOS CLI bundle
- [openai#42069](openai#42069) Remove redundant test coverage
- [openai#42071](openai#42071) Detect Vite+-managed Codex installs
- [openai#42076](openai#42076) Unify Guardian context section collection
- [openai#42082](openai#42082) Attribute nested REPL reviews to their tool calls
- [openai#42085](openai#42085) Centralize Guardian context composition
- [openai#42086](openai#42086) Attribute Guardian reviews to OpenAI app tools
- [openai#42094](openai#42094) Record Windows MXC availability
- [openai#42096](openai#42096) Make diagnostic report uploads resilient to slow networks
- [openai#42100](openai#42100) Prefer remote Sites over the bundled plugin
- [openai#42101](openai#42101) Add a TUI setting to disable automatic recaps
- [openai#42102](openai#42102) Extract OTEL trace WebSocket into a reusable crate
- [openai#42104](openai#42104) Show recent sessions in the agent command center
- [openai#42107](openai#42107) Show full patches and terminal input in TUI history
- [openai#42109](openai#42109) Format Python scripts across the repository
- [openai#42110](openai#42110) Treat bundled cleanup hooks as built-ins
- [openai#42113](openai#42113) Apply remote platform semantics to exec safety checks
- [openai#42114](openai#42114) Centralize remote plugin mutations in `PluginsManager`
- [openai#42117](openai#42117) Fix relative MCP server spawning on macOS
- [openai#42118](openai#42118) Refine hook activity rendering in the TUI
- [openai#42121](openai#42121) Allow updating the approval reviewer for active turns
- [openai#42123](openai#42123) Preserve descriptive labels on local file links
- [openai#42126](openai#42126) Ignore non-JSON files in plugin catalog test helpers
- [openai#42128](openai#42128) Prepare MCP connections for coordinated OAuth refresh
- [openai#42132](openai#42132) Bound Git root discovery for metadata enrichment
- [openai#42133](openai#42133) Scope session MCP approvals to app account links
- [openai#42134](openai#42134) Include app link metadata in MCP approval elicitations
- [openai#42135](openai#42135) Support thread forks from symlinked session roots
- [openai#42137](openai#42137) Prewarm shell snapshots for eligible turns
- [openai#42140](openai#42140) Add redo support to Vim composer history
- [openai#42142](openai#42142) Add early rate-limit warnings for Plus and Team plans
- [openai#42144](openai#42144) Add Guardian V2 analytics events
- [openai#42146](openai#42146) Resolve permission requests in the executor context
- [openai#42147](openai#42147) Skip Guardian reviews in Full Access
- [openai#42149](openai#42149) Upgrade Git marketplaces from merged configuration
- [openai#42150](openai#42150) Support remote marketplaces in the plugin CLI
- [openai#42151](openai#42151) Expose model settings in app-server thread metadata
- [openai#42161](openai#42161) Split tool JSON Schema code into focused modules
- [openai#42164](openai#42164) Record result sources in app tool analytics
- [openai#42173](openai#42173) Support header injections in network requirements
- [openai#42174](openai#42174) Add a cacheable Bazel app-server schema bundle
- [openai#42178](openai#42178) Add structured asynchronous user input requests
- [openai#42256](openai#42256) Skip Guardian scoring in User approval mode
- [openai#42385](openai#42385) Add experimental context management activation
@hirsaeki
hirsaeki force-pushed the main branch 2 times, most recently from 971ae70 to edfe76f Compare September 4, 2026 06:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants