From 6e688705678b65a07c94429d69083bc297cb9723 Mon Sep 17 00:00:00 2001 From: kevin zhao Date: Thu, 20 Nov 2025 19:56:48 -0500 Subject: [PATCH] mutating in memory policy instead of reloading --- codex-rs/core/src/codex.rs | 1 + codex-rs/core/src/exec_policy.rs | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/codex.rs index e83deba8d1..5bfa0f0c38 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/codex.rs @@ -1668,6 +1668,7 @@ mod handlers { } } + /// Propagate a user's exec approval decision to the session /// Also optionally whitelists command in execpolicy pub async fn exec_approval(sess: &Arc, id: String, decision: ReviewDecision) { diff --git a/codex-rs/core/src/exec_policy.rs b/codex-rs/core/src/exec_policy.rs index 44328de14a..4d79016d16 100644 --- a/codex-rs/core/src/exec_policy.rs +++ b/codex-rs/core/src/exec_policy.rs @@ -127,6 +127,7 @@ pub(crate) async fn append_allow_prefix_rule_and_update( .add_prefix_rule(prefix, Decision::Allow)?; Ok(()) + Ok(()) } fn requirement_from_decision( @@ -463,6 +464,20 @@ prefix_rule(pattern=["rm"], decision="forbidden") "hello".to_string(), "world".to_string(), ]); +======= + #[test] + fn append_allow_prefix_rule_updates_policy_and_file() { + let codex_home = tempdir().expect("create temp dir"); + let current_policy = Arc::new(Policy::empty()); + let prefix = vec!["echo".to_string(), "hello".to_string()]; + + let updated_policy = + append_allow_prefix_rule_and_update(codex_home.path(), current_policy, &prefix) + .expect("update policy"); + + let evaluation = + updated_policy.check(&["echo".to_string(), "hello".to_string(), "world".to_string()]); +>>>>>>> 8fb06a9d5 (mutating in memory policy instead of reloading) assert!(matches!( evaluation, Evaluation::Match {