Cómo evitar que Claude Code borre tu proyecto: hooks de seguridad en 5 minutos
Los agentes de código son increíbles… hasta que ejecutan git reset --hard sobre una tarde de trabajo sin commitear. Claude Code tiene una función poco conocida para evitarlo: los hooks . Qué es un hook Un script que Claude Code ejecuta antes o después de usar una herramienta. Si un hook PreToolUse

Los agentes de código son increíbles… hasta que ejecutan git reset --hard sobre una tarde de trabajo sin commitear. Claude Code tiene una función poco conocida para evitarlo: los hooks.
Un script que Claude Code ejecuta antes o después de usar una herramienta. Si un hook PreToolUse termina con código de salida 2, la acción se cancela y Claude recibe tu mensaje de error, así que corrige su plan solo.
#!/usr/bin/env python3 import json, re, sys PATRONES = [ ( r " \brm\s+-[a-zA-Z]*[rR][a-zA-Z]*f?\s+(/|~|\$HOME|\*)(\s|$) ", " rm recursivo sobre /, ~ o * " ), ( r " \bgit\s+push\b.*(--force\b|-f\b)(?!-with-lease) ", " git push --force " ), ( r " \bgit\s+reset\s+--hard\b ", " git reset --hard " ), ( r " (curl|wget)[^|]*\|\s*(sudo\s+)?(ba|z)?sh\b ", " curl | sh " ), ] cmd = ( json. load ( sys. stdin ). get ( " tool_input " ) or {}). get ( " command ", "" ) for p, motivo in PATRONES: if re. search ( p, cmd, re. I ): print ( f " Bloqueado: { motivo } ", file = sys. stderr ); sys. exit ( 2 ) Enter fullscreen mode Exit fullscreen mode Hook 2: que no lea tu.env Mismo patrón, pero mirando tool_input.file_path en las herramientas Read|Edit|Write y bloqueando.env, *.pem, id_rsa … (y permitiendo.env.example ).
{ "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [{ "type": "command", "command": "python3 \" $CLAUDE_PROJECT_DIR \" /.claude/hooks/bloquear.py" }] } ] } } Enter fullscreen mode Exit fullscreen mode Reinicia Claude Code y escribe /hooks para comprobar que está activo.
echo '{"tool_input":{"command":"rm -rf ~"}}' | python3.claude/hooks/bloquear.py; echo $? # 2 echo '{"tool_input":{"command":"npm test"}}' | python3.claude/hooks/bloquear.py; echo $? # 0 Enter fullscreen mode Exit fullscreen mode Código completo Los dos hooks probados y una skill de code review en español, gratis: https://github.com/carlosp5751258-lgtm/claude-code-es. Si quieres la configuración completa (6 skills, comandos /plan y /pr, plantillas CLAUDE.md, autoformato), está el Kit Claude Code en Español.