{title="📊 页面导航】

适用角色与上手难度

角色推荐度上手难度
🛠️ 开发★★★★★★☆☆☆☆
🧪 测试★★★★☆★☆☆☆☆
📦 产品★☆☆☆☆★☆☆☆☆

🎯 学习产出: 掌握 Claude Code 危险 git 命令拦截配置,防止 agent 误执行破坏性操作

🚀 AI 能力提升: 安全防护

git-guardrails-claude-code

预计阅读时间: 2 分钟

Git 危险命令护栏。在 Claude Code 里设置 PreToolUse hook,在 Claude 执行前拦截危险 git 命令

概述

防患于未然:Claude 被拦截时看到"没有权限执行这些命令"的消息,而不是真的跑掉 git push --force

日常使用

> 给 Claude Code 加 git 安全护栏,禁止 push 和 reset --hard
> 帮我阻止 agent 执行 git push

实战

被拦截的命令

  • git push(所有变体含 --force
  • git reset --hard
  • git clean -f / git clean -fd
  • git branch -D
  • git checkout . / git restore .

步骤

1. 问作用域:只此项目(.claude/settings.json)还是所有项目(~/.claude/settings.json)?

2. 复制 hook 脚本:把捆绑脚本 scripts/block-dangerous-git.sh 复制到目标位置(项目:.claude/hooks/block-dangerous-git.sh;全局:~/.claude/hooks/block-dangerous-git.sh),chmod +x

3. 加入 settings。项目级:

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

全局级 command~/.claude/hooks/block-dangerous-git.sh。settings 文件已存在就合并进已有 hooks.PreToolUse 数组,不覆盖其它设置。

4. 问定制:要不要增删拦截模式?编辑复制好的脚本。

5. 验证

echo '{"tool_input":{"command":"git push origin main"}}' | <path-to-script>
# 应退出码 2,stderr 打印 BLOCKED

与其它技能的关系

  • 同类setup-pre-commit 管提交前质量,本技能管提交前安全
  • 仅 Claude Code:hook 机制是 Claude Code 特有的