48 lines
1.1 KiB
Python
Executable File
48 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""Codex PreToolUse hook: gate file edits to protect critical files.
|
|
|
|
Blocks edits to .trinity/passport.json and other protected paths.
|
|
"""
|
|
import json
|
|
import sys
|
|
|
|
|
|
PROTECTED_PATTERNS = [
|
|
".trinity/passport.json",
|
|
".aipass/registry.json",
|
|
"setup.sh",
|
|
]
|
|
|
|
|
|
def main():
|
|
try:
|
|
input_data = json.loads(sys.stdin.read())
|
|
except Exception:
|
|
print(json.dumps({}))
|
|
return
|
|
|
|
tool_input = input_data.get("input", {})
|
|
file_path = tool_input.get("file_path", "") or tool_input.get("path", "")
|
|
|
|
if not file_path:
|
|
print(json.dumps({}))
|
|
return
|
|
|
|
for pattern in PROTECTED_PATTERNS:
|
|
if pattern in file_path:
|
|
output = {
|
|
"hookSpecificOutput": {
|
|
"hookEventName": "PreToolUse",
|
|
"permissionDecision": "deny"
|
|
},
|
|
"systemMessage": f"Edit blocked: {pattern} is a protected file."
|
|
}
|
|
print(json.dumps(output))
|
|
return
|
|
|
|
print(json.dumps({}))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|