git-guardrails-claude-code
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSetup Git Guardrails
配置 Git 防护机制
设置一个 PreToolUse hook,在 Claude 执行危险 git commands 前拦截并阻止它们。
设置一个 PreToolUse 钩子,在 Claude 执行危险的 git 命令前拦截并阻止它们。
What Gets Blocked
会被阻止的命令
- (包括
git push在内的所有 variants)--force git reset --hard- /
git clean -fgit clean -fd git branch -D- /
git checkout .git restore .
被阻止时,Claude 会看到一条 message,说明它无权访问这些 commands。
- (包括
git push在内的所有变体)--force git reset --hard- /
git clean -fgit clean -fd git branch -D- /
git checkout .git restore .
当命令被阻止时,Claude 会收到一条提示信息,说明它无权执行这些命令。
Steps
步骤
1. Ask scope
1. 询问作用范围
询问用户:只为当前 project 安装(),还是为所有 projects 安装()?
.claude/settings.json~/.claude/settings.json询问用户:只为当前 project 安装(),还是为所有 projects 安装()?
.claude/settings.json~/.claude/settings.json2. Copy the hook script
2. 复制钩子脚本
bundled script 位于:scripts/block-dangerous-git.sh
根据 scope 复制到目标位置:
- Project:
.claude/hooks/block-dangerous-git.sh - Global:
~/.claude/hooks/block-dangerous-git.sh
用 让它可执行。
chmod +x捆绑脚本位于:scripts/block-dangerous-git.sh
根据作用范围复制到对应位置:
- Project:
.claude/hooks/block-dangerous-git.sh - Global:
~/.claude/hooks/block-dangerous-git.sh
用 让它可执行。
chmod +x3. Add hook to settings
3. 将钩子添加到配置文件
添加到对应 settings file:
Project ():
.claude/settings.jsonjson
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}Global ():
~/.claude/settings.jsonjson
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}如果 settings file 已存在,把 hook merge 到现有 array 中,不要覆盖其他 settings。
hooks.PreToolUse添加到对应的配置文件中:
Project ():
.claude/settings.jsonjson
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}Global ():
~/.claude/settings.jsonjson
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}如果配置文件已存在,请将钩子合并到现有的 数组中,不要覆盖其他配置。
hooks.PreToolUse4. Ask about customization
4. 询问自定义需求
询问用户是否要在 blocked list 中添加或移除 patterns。相应编辑复制后的 script。
询问用户是否需要在阻止列表中添加或移除命令模式,并相应编辑已复制的脚本。
5. Verify
5. 验证配置
运行快速测试:
bash
echo '{"tool_input":{"command":"git push origin main"}}' | <path-to-script>应以 code 2 退出,并向 stderr 打印 BLOCKED message。
运行快速测试:
bash
echo '{"tool_input":{"command":"git push origin main"}}' | <path-to-script>脚本应返回状态码 2,并向标准错误输出打印 BLOCKED 信息。