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 --hardgit clean -f/git clean -fdgit branch -Dgit 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.