@dabit3:这太糟糕了,其实有一个简单的方法可以杜绝此类事情:添加一个 PreToolUse 钩子,硬性阻止任何命令……

X AI KOLs Following 工具

摘要

Bash Guard 是一个简单的钩子,能在本地编码代理运行前阻止危险的 shell 命令(如 sudo、项目外的 rm),防止意外删除文件。支持 Claude Code、Codex CLI 和 Devin CLI。

这太糟糕了,有一个简单的方法可以防止这种情况再次发生: 添加一个 PreToolUse 钩子,硬性阻止任何触及仓库外路径的命令(即使在 yolo 模式下也有效),再加上 permissions.deny 规则作为备份。不妨在所有本地项目上安装它。 https://github.com/dabit3/bash-guard… 或者直接使用云代理,它在一次性机器上运行。
查看原文
查看缓存全文

缓存时间: 2026/07/11 07:25

这太糟糕了,其实有个简单的方法可以完全避免这种情况发生:添加一个 PreToolUse 钩子,硬性阻止任何涉及仓库外部路径的命令(即使在 yolo 模式下也有效),再加上 permissions.deny 规则作为后备。最好在所有本地项目上都装上它。https://github.com/dabit3/bash-guard… 或者直接用云端 agent,它会在一次性机器上运行。


dabit3/bash-guard

来源:https://github.com/dabit3/bash-guard

Bash Guard

一个小型命令钩子,可在本地编码 agent 运行危险 shell 命令前将其阻止。它适用于支持 PreToolUse 钩子的 agent,包括 Claude Code、Codex CLI 和 Devin CLI。

它会阻止:

  • 使用 sudodiskutilmkfs 的命令
  • 针对当前项目外部路径的破坏性命令,如 rmmvrsyncshred

依赖项

  • Bash
  • jq

安装

mkdir -p "$HOME/.local/share/bash-guard"
cp bash-guard.sh "$HOME/.local/share/bash-guard/bash-guard.sh"
chmod +x "$HOME/.local/share/bash-guard/bash-guard.sh"

配置你的 agent

将此钩子合并到 agent 的 JSON 配置中,将 <matcher> 替换为下表中对应的值:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "<matcher>",
        "hooks": [
          {
            "type": "command",
            "command": "$HOME/.local/share/bash-guard/bash-guard.sh"
          }
        ]
      }
    ]
  }
}
Agent用户配置项目配置匹配器 (Matcher)
Claude Code~/.claude/settings.json.claude/settings.json^Bash$
Codex CLI~/.codex/hooks.json.codex/hooks.json^Bash$
Devin CLI~/.config/devin/config.json.devin/config.json^exec$

更新配置后重启 agent。在 Codex CLI 中,打开 /hooks 并信任新钩子。在 Codex 或 Devin 中使用 /hooks 确认钩子已加载。

使用方法

Bash Guard 会在每条 shell 命令执行前自动运行。允许的命令继续正常执行,被阻止的命令会附带说明被拒绝。

你可以直接传入一个钩子 payload 来测试:

echo '{"tool_input":{"command":"sudo rm -rf /tmp/example"},"cwd":"/path/to/project"}' \
  | "$HOME/.local/share/bash-guard/bash-guard.sh"

被阻止的命令退出码为 2,允许的命令退出码为 0

其他 agent 也可以使用 Bash Guard,只要它们的命令钩子能通过标准输入传入 tool_input.commandcwd 的 JSON,并将退出码 2 视为阻止信号。

Matt Shumer (@mattshumer_)
GPT-5.6-Sol 刚刚意外删除了我 Mac 上的几乎全部文件。
这就是为什么我信任 Fable 一千倍。

相似文章

Dicklesworthstone/destructive_command_guard

GitHub Trending (daily)

一个高性能的钩子,用于AI编码代理,在执行破坏性命令前阻止它们,从而保护工作不被意外删除,适用于Claude Code、Codex CLI、Gemini CLI、Copilot CLI等工具。