# Cómo evitar que Claude Code borre tu proyecto: hooks de seguridad en 5 minutos

> Source: <https://dev.to/carlosp5751258lgtm/como-evitar-que-claude-code-borre-tu-proyecto-hooks-de-seguridad-en-5-minutos-2p0l>
> Published: 2026-10-28 20:02:56+00:00

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.

`.claude/hooks/bloquear.py`:

``` python
#!/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)
```

`.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`).

`.claude/settings.json`:

```
{
  "hooks": {
    "PreToolUse": [
      { "matcher": "Bash",
        "hooks": [{ "type": "command", "command": "python3 \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/bloquear.py" }] }
    ]
  }
}
```

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
```

Los dos hooks probados y una skill de code review en español, gratis: **[https://github.com/carlosp5751258-lgtm/claude-code-es](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](https://claudecodees.gumroad.com/l/kit-claude-code-es)**.
