用途:为 Claude Code 设置 Git 防护栏,通过 PreToolUse 钩子在命令执行前拦截并阻止危险的 git 操作。\n\n主要能力:可阻止的命包括 git push(含 --force 等变体)、git reset --hard、git clean -f / git clean -fd、git branch -D、git checkout . / git restore .。被阻止时,Claude 会收到提示,告知其无权访问这些命令。\n\n使用方式:\n1. 先询问作用范围:仅当前项目(.claude/settings.json)还是所有项目(~/.claude/settings.json)。\n2. 复制自带的钩子脚本 scripts/block-dangerous-git.sh 到对应位置(项目:.claude/hooks/block-dangerous-git.sh;全局:~/.claude/hooks/block-dangerous-git.sh),并执行 chmod +x 使其可执行。\n3. 将钩子加入对应设置文件。项目配置的 command 为 "$CLAUDE_PROJECT_DIR"/.claude/hooks/block-dangerous-git.sh;全局配置的 command 为 ~/.claude/hooks/block-dangerous-git.sh,matcher 为 Bash。若设置文件已存在,应合并到现有的 hooks.PreToolUse 数组中,不要覆盖其他设置。\n4. 询问用户是否增删阻止列表中的规则,并相应编辑已复制的脚本。\n5. 验证:运行 echo '{"tool_input":{"command":"git push origin main"}}' | <path-to-script>,应退出码为 2 并向 stderr 输出 BLOCKED 信息。\n\n适用场景:用户希望防止 Claude Code 自动执行破坏性或强制性的 git 命令时。\n\n限制:仅拦截列出的 git 命令模式;其他命令与具体行为细节暂未提供。
git-guardrails-claude-code
编程与开发
更新于 10-16 05:52