diff --git a/plugins/hookify/core/rule_engine.py b/plugins/hookify/core/rule_engine.py index 8244c00591..43afe01c4c 100644 --- a/plugins/hookify/core/rule_engine.py +++ b/plugins/hookify/core/rule_engine.py @@ -69,7 +69,8 @@ def evaluate_rules(self, rules: List[Rule], input_data: Dict[str, Any]) -> Dict[ "reason": combined_message, "systemMessage": combined_message } - elif hook_event in ['PreToolUse', 'PostToolUse']: + elif hook_event == 'PreToolUse': + # PreToolUse can deny the tool before it executes return { "hookSpecificOutput": { "hookEventName": hook_event, @@ -78,7 +79,7 @@ def evaluate_rules(self, rules: List[Rule], input_data: Dict[str, Any]) -> Dict[ "systemMessage": combined_message } else: - # For other events, just show message + # PostToolUse and other events: tool already ran, can only inject a message return { "systemMessage": combined_message } diff --git a/plugins/hookify/hooks/posttooluse.py b/plugins/hookify/hooks/posttooluse.py index a9e12cc797..564f45b3c1 100755 --- a/plugins/hookify/hooks/posttooluse.py +++ b/plugins/hookify/hooks/posttooluse.py @@ -35,11 +35,13 @@ def main(): # Determine event type based on tool tool_name = input_data.get('tool_name', '') - event = None if tool_name == 'Bash': event = 'bash' elif tool_name in ['Edit', 'Write', 'MultiEdit']: event = 'file' + else: + # Unknown tool: only evaluate event=all rules. + event = 'all' # Load rules rules = load_rules(event=event) diff --git a/plugins/hookify/hooks/pretooluse.py b/plugins/hookify/hooks/pretooluse.py index f265c277e3..29f47a549b 100755 --- a/plugins/hookify/hooks/pretooluse.py +++ b/plugins/hookify/hooks/pretooluse.py @@ -42,11 +42,14 @@ def main(): # For PreToolUse, we use tool_name to determine "bash" vs "file" event tool_name = input_data.get('tool_name', '') - event = None if tool_name == 'Bash': event = 'bash' elif tool_name in ['Edit', 'Write', 'MultiEdit']: event = 'file' + else: + # Unknown tool: only evaluate event=all rules to avoid + # bash/file-specific rules running on unrelated tools. + event = 'all' # Load rules rules = load_rules(event=event)