跳到正文
DEV Community· carlosp5751258-lgtm·· 3 小時前AI 評分62

Claude Code 如何用安全 hooks 避免刪除專案(5 分鐘)

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

AI 導讀

作者分享兩個 Claude Code 安全 hooks,用來攔截破壞性指令,並阻止 Read、Edit、Write 工具讀取 .env、*.pem、id_rsa 等檔案,同時容許讀取 .env.example。

正文

carlosp5751258-lgtm

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

Hook 1: bloquear comandos destructivos

.claude/hooks/bloquear.py:

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

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

Conectarlos

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

Probarlo sin riesgo

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

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.

來源:DEV Community · dev.to