Preserve Windows proxy settings in Guardian sessions (#40641)

## Why

Guardian sessions can run alongside another Windows sandbox launch and should not reconcile the persistent proxy settings established by that launch.

## What changed

- Start internal Guardian sessions with `WindowsSandboxProxySettingsMode::Preserve`.
- Continue using `Reconcile` for other sessions.

## Testing

Added a thread manager test that verifies a parent session reconciles proxy settings while its internal Guardian session preserves them.

GitOrigin-RevId: c6a31637ecdf828548cfd7153da7e9405abe34fa
This commit is contained in:
Won Park
2026-08-25 16:53:47 +00:00
committed by copyberry
parent 5ce04789fb
commit da4cf1cdea
2 changed files with 55 additions and 2 deletions
+10 -2
View File
@@ -55,6 +55,7 @@ use codex_protocol::mcp::OPENAI_STANDARD_FORM_INPUT_EXTENSION_ID;
use codex_protocol::openai_models::ModelPreset;
use codex_protocol::protocol::Event;
use codex_protocol::protocol::EventMsg;
use codex_protocol::protocol::InternalSessionSource;
use codex_protocol::protocol::MultiAgentVersion;
use codex_protocol::protocol::Op;
use codex_protocol::protocol::SessionConfiguredEvent;
@@ -1938,6 +1939,14 @@ impl ThreadManagerState {
starting.retain(|runtime| runtime.strong_count() != 0);
starting.push(Arc::downgrade(&source_changed_during_startup));
}
let windows_sandbox_proxy_settings_mode = if matches!(
&session_source,
SessionSource::Internal(InternalSessionSource::Guardian)
) {
codex_sandboxing::WindowsSandboxProxySettingsMode::Preserve
} else {
codex_sandboxing::WindowsSandboxProxySettingsMode::Reconcile
};
let (session, io) = Box::pin(Session::spawn(SessionSpawnArgs {
config,
allow_provider_model_fallback,
@@ -1977,8 +1986,7 @@ impl ThreadManagerState {
external_time_provider: self.external_time_provider.clone(),
inherited_multi_agent_version: multi_agent_version,
git_enrichment_policy: GitEnrichmentPolicy::Fresh,
windows_sandbox_proxy_settings_mode:
codex_sandboxing::WindowsSandboxProxySettingsMode::Reconcile,
windows_sandbox_proxy_settings_mode,
}))
.await?;
// Enable Full Access form input only after session startup so a required MCP server cannot