git-guardrails-claude-code

git-guardrails-claude-code

熱門

設定 Claude Code 鉤子,在執行前封鎖危險的 git 指令(push、reset --hard、clean、branch -D 等)。當使用者想要防止破壞性 git 操作、新增 git 安全鉤子,或封鎖 Claude Code 中的 git push/reset 時使用。

19萬星標
1.6萬分支
更新於 2026/7/23
SKILL.md
readonlyread-only
name
git-guardrails-claude-code
description

設定 Claude Code 鉤子,在執行前封鎖危險的 git 指令(push、reset --hard、clean、branch -D 等)。當使用者想要防止破壞性 git 操作、新增 git 安全鉤子,或封鎖 Claude Code 中的 git push/reset 時使用。

設定 Git 安全護欄

設定一個 PreToolUse 鉤子,在 Claude 執行危險 git 指令前攔截並封鎖它們。

會被封鎖的指令

  • git push(所有變體,包含 --force
  • git reset --hard
  • git clean -f / git clean -fd
  • git branch -D
  • git checkout . / git restore .

被封鎖時,Claude 會看到一則訊息,告知它沒有權限存取這些指令。

步驟

1. 詢問範圍

詢問使用者:僅安裝於此專案.claude/settings.json)或所有專案~/.claude/settings.json)?

2. 複製鉤子腳本

內附腳本位於:scripts/block-dangerous-git.sh

根據範圍複製到目標位置:

  • 專案.claude/hooks/block-dangerous-git.sh
  • 全域~/.claude/hooks/block-dangerous-git.sh

使用 chmod +x 設定為可執行。

3. 將鉤子加入設定

加入對應的設定檔:

專案.claude/settings.json):

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

全域~/.claude/settings.json):

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

如果設定檔已存在,請將鉤子合併到現有的 hooks.PreToolUse 陣列中——不要覆蓋其他設定。

4. 詢問自訂選項

詢問使用者是否要從封鎖清單中新增或移除任何模式。編輯已複製的腳本以進行修改。

5. 驗證

執行快速測試:

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

應以代碼 2 退出,並在 stderr 中印出 BLOCKED 訊息。