Purpose: Block edits to sensitive files
{
"hooks": {
"PreToolUse": [{
"matcher": "Edit|Write",
"hooks": [{
"type": "command",
"command": "python3 -c \"import json, sys; data=json.load(sys.stdin); path=data.get('tool_input',{}).get('file_path',''); sys.exit(2 if any(p in path for p in ['.env', 'package-lock.json', '.git/']) else 0)\""
}]
}]
}
}
Default patterns to block:
.env - Environment secretspackage-lock.json - Dependency locks.git/ - Git internalscredentials.json - API keys*.pem, *.key - Private keys#!/usr/bin/env python3
import json, sys
PROTECTED = ['.env', 'package-lock.json', '.git/',
'credentials', '.pem', '.key', 'secrets']
data = json.load(sys.stdin)
path = data.get('tool_input', {}).get('file_path', '')
if any(p in path for p in PROTECTED):
print(f"Blocked: {path} is protected", file=sys.stderr)
sys.exit(2)
sys.exit(0)
../../lookup/hook-events.md - Hook events reference./formatting-hook.md - Auto-format exampleReference: https://docs.anthropic.com/en/docs/claude-code/hooks