diff --git a/rust/crates/runtime/src/permission_enforcer.rs b/rust/crates/runtime/src/permission_enforcer.rs index 03c63ab..3164742 100644 --- a/rust/crates/runtime/src/permission_enforcer.rs +++ b/rust/crates/runtime/src/permission_enforcer.rs @@ -32,6 +32,12 @@ impl PermissionEnforcer { /// Check whether a tool can be executed under the current permission policy. /// Auto-denies when prompting is required but no prompter is provided. pub fn check(&self, tool_name: &str, input: &str) -> EnforcementResult { + // When the active mode is Prompt, defer to the caller's interactive + // prompt flow rather than hard-denying (the enforcer has no prompter). + if self.policy.active_mode() == PermissionMode::Prompt { + return EnforcementResult::Allowed; + } + let outcome = self.policy.authorize(tool_name, input, None); match outcome {