diff --git a/codex-rs/core/src/exec.rs b/codex-rs/core/src/exec.rs index fd5cd7bcdc..db1a0e06ca 100644 --- a/codex-rs/core/src/exec.rs +++ b/codex-rs/core/src/exec.rs @@ -482,7 +482,11 @@ async fn get_raw_output_result( >, ) -> Result { #[cfg(target_os = "windows")] - if sandbox == SandboxType::WindowsRestrictedToken { + if should_use_windows_restricted_token_sandbox( + sandbox, + sandbox_policy, + &FileSystemSandboxPolicy::from(sandbox_policy), + ) { return exec_windows_sandbox(params, sandbox_policy, windows_sandbox_filesystem_overrides) .await; } diff --git a/codex-rs/core/src/exec_tests.rs b/codex-rs/core/src/exec_tests.rs index 9d335a81c7..74e528e66b 100644 --- a/codex-rs/core/src/exec_tests.rs +++ b/codex-rs/core/src/exec_tests.rs @@ -377,6 +377,21 @@ async fn process_exec_tool_call_preserves_full_buffer_capture_policy() -> Result Ok(()) } +#[test] +fn windows_restricted_token_skips_danger_full_access_policies() { + let policy = SandboxPolicy::DangerFullAccess; + let file_system_policy = FileSystemSandboxPolicy::from(&policy); + + assert_eq!( + should_use_windows_restricted_token_sandbox( + SandboxType::WindowsRestrictedToken, + &policy, + &file_system_policy, + ), + false + ); +} + #[test] fn windows_restricted_token_skips_external_sandbox_policies() { let policy = SandboxPolicy::ExternalSandbox {