| name | git-guardrails-claude-code |
| description (EN) | Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code. |
| 說明 (繁中) | 設定 Claude Code hooks 來在執行前阻擋危險的 git 命令(push、reset --hard、clean、branch -D 等)。當使用者想要防止破壞性的 git 操作、新增 git 安全 hooks,或在 Claude Code 中阻擋 git push/reset 時使用。 |
Sets up a PreToolUse hook that intercepts and blocks dangerous git commands before Claude executes them.
設定一個 PreToolUse hook,在 Claude 執行危險 git 命令之前攔截並阻擋它們。
git push (all variants including --force)git reset --hardgit clean -f / git clean -fdgit branch -Dgit checkout . / git restore .git push(所有變體,包含 --force)git reset --hardgit clean -f / git clean -fdgit branch -Dgit checkout . / git restore .When blocked, Claude sees a message telling it that it does not have authority to access these commands.
當被阻擋時,Claude 會看到一則訊息,告訴它沒有權限存取這些命令。
Ask the user: install for this project only (.claude/settings.json) or all projects (~/.claude/settings.json)?
詢問使用者:只為此專案安裝(.claude/settings.json)還是所有專案(~/.claude/settings.json)?
The bundled script is at: scripts/block-dangerous-git.sh
隨附的腳本位於:scripts/block-dangerous-git.sh
Copy it to the target location based on scope:
根據範圍將它複製到目標位置:
.claude/hooks/block-dangerous-git.sh~/.claude/hooks/block-dangerous-git.sh.claude/hooks/block-dangerous-git.sh~/.claude/hooks/block-dangerous-git.shMake it executable with chmod +x.
用 chmod +x 使它可執行。
Add to the appropriate settings file:
加到適當的設定檔:
Project (.claude/settings.json):
專案(.claude/settings.json):
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}
Global (~/.claude/settings.json):
全域(~/.claude/settings.json):
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}
If the settings file already exists, merge the hook into the existing hooks.PreToolUse array. Don't overwrite other settings.
如果設定檔已經存在,將 hook 合併到既有的 hooks.PreToolUse 陣列中 — 不要覆寫其他設定。
Ask if user wants to add or remove any patterns from the blocked list. Edit the copied script accordingly.
詢問使用者是否要從阻擋清單中新增或移除任何模式。據此編輯已複製的腳本。
Run a quick test:
執行一個快速測試:
echo '{"tool_input":{"command":"git push origin main"}}' | <path-to-script>
echo '{"tool_input":{"command":"git push origin main"}}' | <path-to-script>
Should exit with code 2 and print a BLOCKED message to stderr.
應該以代碼 2 結束,並在 stderr 列印一則 BLOCKED 訊息。