diff --git a/codex-rs/core/src/exec_policy.rs b/codex-rs/core/src/exec_policy.rs index a2e1e8d40..2ae5a08e4 100644 --- a/codex-rs/core/src/exec_policy.rs +++ b/codex-rs/core/src/exec_policy.rs @@ -248,9 +248,7 @@ pub async fn load_exec_policy(config_stack: &ConfigLayerStack) -> Result anyhow::Result<()> { + async fn ignores_rules_from_untrusted_project_layers() -> anyhow::Result<()> { let project_dir = tempdir()?; let policy_dir = project_dir.path().join(RULES_DIR_NAME); fs::create_dir_all(&policy_dir)?; fs::write( - policy_dir.join("disabled.rules"), + policy_dir.join("untrusted.rules"), r#"prefix_rule(pattern=["ls"], decision="forbidden")"#, )?; @@ -699,7 +697,7 @@ mod tests { dot_codex_folder: project_dot_codex_folder, }, TomlValue::Table(Default::default()), - "trust disabled", + "marked untrusted", )]; let config_stack = ConfigLayerStack::new( layers, @@ -711,16 +709,14 @@ mod tests { assert_eq!( Evaluation { - decision: Decision::Forbidden, - matched_rules: vec![RuleMatch::PrefixRuleMatch { - matched_prefix: vec!["ls".to_string()], - decision: Decision::Forbidden, - justification: None, + decision: Decision::Allow, + matched_rules: vec![RuleMatch::HeuristicsRuleMatch { + command: vec!["ls".to_string()], + decision: Decision::Allow, }], }, policy.check_multiple([vec!["ls".to_string()]].iter(), &|_| Decision::Allow) ); - Ok(()) }