git-guardrails-claude-code

Par mkurman · zorai

Configurez des hooks Claude Code pour bloquer les commandes git dangereuses (`push`, `reset --hard`, `clean`, `branch -D`, etc.) avant leur exécution. À utiliser lorsque l'utilisateur souhaite prévenir les opérations git destructives, ajouter des hooks de sécurité git, ou bloquer git push/reset dans Claude Code.

npx skills add https://github.com/mkurman/zorai --skill git-guardrails-claude-code

Configuration des garde-fous Git

Configure un hook PreToolUse qui intercepte et bloque les commandes git dangereuses avant que Claude les exécute.

Ce qui est bloqué

  • git push (toutes les variantes, y compris --force)
  • git reset --hard
  • git clean -f / git clean -fd
  • git branch -D
  • git checkout . / git restore .

Lorsqu'une commande est bloquée, Claude reçoit un message lui indiquant qu'il n'a pas l'autorisation d'accéder à ces commandes.

Étapes

1. Demander la portée

Demander à l'utilisateur : installer pour ce projet seulement (.claude/settings.json) ou tous les projets (~/.claude/settings.json) ?

2. Copier le script du hook

Le script fourni se trouve à : scripts/block-dangerous-git.sh

Le copier à l'emplacement cible selon la portée :

  • Projet : .claude/hooks/block-dangerous-git.sh
  • Global : ~/.claude/hooks/block-dangerous-git.sh

Le rendre exécutable avec chmod +x.

3. Ajouter le hook aux paramètres

Ajouter au fichier de paramètres approprié :

Projet (.claude/settings.json) :

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-dangerous-git.sh"
          }
        ]
      }
    ]
  }
}

Global (~/.claude/settings.json) :

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/block-dangerous-git.sh"
          }
        ]
      }
    ]
  }
}

Si le fichier de paramètres existe déjà, fusionner le hook dans le tableau hooks.PreToolUse existant — ne pas écraser les autres paramètres.

4. Demander la personnalisation

Demander si l'utilisateur souhaite ajouter ou supprimer des motifs de la liste bloquée. Modifier le script copié en conséquence.

5. Vérifier

Exécuter un test rapide :

echo '{"tool_input":{"command":"git push origin main"}}' | <path-to-script>

Doit quitter avec le code 2 et afficher un message BLOCKED sur stderr.

Skills similaires