From b23d2e0d3283f397ce2a85765d9e78910e8a36f6 Mon Sep 17 00:00:00 2001 From: viyatb-oai Date: Sat, 9 May 2026 18:40:37 +0000 Subject: [PATCH] fix(windows-sandbox): preserve deny-read ACL ordering Co-authored-by: Codex --- codex-rs/windows-sandbox-rs/src/spawn_prep.rs | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/codex-rs/windows-sandbox-rs/src/spawn_prep.rs b/codex-rs/windows-sandbox-rs/src/spawn_prep.rs index 8b9bcec9f6..b0cf0f3075 100644 --- a/codex-rs/windows-sandbox-rs/src/spawn_prep.rs +++ b/codex-rs/windows-sandbox-rs/src/spawn_prep.rs @@ -233,19 +233,6 @@ pub(crate) fn apply_legacy_session_acl_rules( let mut guards: Vec = Vec::new(); let canonical_cwd = canonicalize_path(current_dir); unsafe { - let applied_deny_read_paths = if persist_aces { - sync_persistent_deny_read_acls( - codex_home, - cap_sid_str, - additional_deny_read_paths, - psid_generic.as_ptr(), - )? - } else { - apply_deny_read_acls(additional_deny_read_paths, psid_generic.as_ptr())? - }; - if !persist_aces { - guards.extend(applied_deny_read_paths); - } for path in additional_deny_write_paths { // Explicit carveouts must exist before the command starts so the // sandbox cannot create them under a writable parent first. @@ -275,6 +262,19 @@ pub(crate) fn apply_legacy_session_acl_rules( guards.push(p.clone()); } } + let applied_deny_read_paths = if persist_aces { + sync_persistent_deny_read_acls( + codex_home, + cap_sid_str, + additional_deny_read_paths, + psid_generic.as_ptr(), + )? + } else { + apply_deny_read_acls(additional_deny_read_paths, psid_generic.as_ptr())? + }; + if !persist_aces { + guards.extend(applied_deny_read_paths); + } allow_null_device(psid_generic.as_ptr()); if let Some(psid_workspace) = psid_workspace { allow_null_device(psid_workspace.as_ptr());