Claude Code 弹窗烦到我了,我把这个钩子装上了

Claude Code 用得越深,开发者越会被一个细节气到——每次执行 ls、git status、cat,它都要停下来问一句「Are you sure?」。去趟茶水间回来,agent 还卡在那个红框框里等许可。一天下来,被这种「无害命令拦截」打断的节奏,足以让任何想进入心流的人破防。

大多数人最后只会在 ~/.claude/settings.json 里写一个 --dangerously-skip-permissions,把安全网整个撕掉。Dippy 是第三条路——一个 6KB 的 Python 钩子,专门为 Claude Code(顺带 Cursor、Gemini CLI、Codex CLI)做精细化的 shell 命令授权。

它到底在做什么

Dippy 接管的是 Claude Code 的 PreToolUse 钩子,每次 Bash 工具被调用前,它会先用自己的 AST 解析器把命令拆开,再走一套白名单判断。它不是简单地「grep -v 危险词」,而是真的理解 git $(echo rm) foo.txt 这类子 shell 注入,也认得出 curl https://x.com > script.sh 这种 redirect 到脚本的危险姿势。

判断结果分三档:

  • allow:纯只读命令直接放行(pipelines、git status && git log、aws ec2 describe-*、docker logs、ls &>/dev/null)
  • ask:模糊地带照常弹窗问人
  • deny:破坏性命令直接拒绝,并且可以把人类写的「改用 trash 删文件」「别往 .env 写东西」等纠偏建议回写给 agent

最妙的是 deny 的反馈:拒绝 rm -rf 不是冷冰冰的「Permission denied」,而是「Use trash instead」——Claude 看完会自己改写命令继续干活,不浪费一次 turn。

技术含金量

作者 Lily Dayton 没依赖任何现成的 shell 解析库,直接手写了一个叫 Parable 的 Python bash parser。整个 Dippy + Parable 跑 14,000+ 单元测试,纯 Python,零外部依赖。MIT 协议,已经在 brew 上开官方 tap(brew tap ldayton/dippy && brew install dippy)。

项目目前 243 stars、21 forks,最近一周还在动(Sep 18, 2026 有提交)。从 issue 区和社区反馈看,作者号称能把开发节奏提 ~40%——这个数字来自被拦截的「无害 prompt」占比,不是拍脑袋写的。

上手配置

两步搞定。在 ~/.claude/settings.json 加:

  • 匹配 Bash 工具调用
  • 命令指向 dippy(brew 安装)或 /path/to/Dippy/bin/dippy-hook(手动 clone)

可选:在项目根目录加 .dippy 文件做项目级规则——比如这个 repo 只允许 uv run、禁用 pip install,可以一次性写死。

适用场景

  • 每天重度使用 Claude Code / Cursor,被弹窗搞到分心的人
  • 团队统一安全基线,又不想一刀切关掉所有防护的 DevOps 负责人
  • 在共享机器上跑 agent,需要 ~/.dippy/config 集中管控的高安全场景

装上跑两天你会发现一个微妙的变化:Claude Code 不再「小心翼翼地每一步都问」,开始敢一次性跑完 ps aux | grep python | awk '{print $2}' | head 这种长管道。它知道这些事情是安全的,agent 才敢真正放手干活。

GitHub: https://github.com/ldayton/Dippy


GitHub: https://github.com/ldayton/Dippy

评论区

0 条评论

登录后可评论。

江望 549 阅读