Claude Code 也能装护栏?这个 Hooks 插件让 AI 执行前先过安检
你有没有遇到过这种情况——让 Claude Code 跑一个命令,结果它直接给你删库跑路了?😱
今天挖到一个超实用的 Claude Code 插件,专门教你怎么给 AI 装上”安全门”。它叫 Claude Code Hooks,来自 emdashcodes 团队,在 Smithery 上有 8 次安装。
这玩意儿是干啥的?
简单说,Hooks 就是 Claude Code 的”拦截器”——在 AI 执行任何操作之前或之后,自动触发你写好的脚本。你可以:
- 验证输入:危险命令(比如
rm -rf /)直接拦截,不让跑 - 自动化工作流:每次写完代码自动格式化、跑 lint、发通知
- 上下文补充:自动注入 git 状态、项目信息到对话里
- 外部集成:对接 API、触发 CI/CD、记录日志
核心原理
Hooks 通过 settings.json 配置,监听这些事件:
| 事件 | 什么时候触发 | 典型用法 |
|---|---|---|
PreToolUse |
工具执行前 | 拦截危险命令、权限检查 |
PostToolUse |
工具执行后 | 自动格式化、lint 通知 |
UserPromptSubmit |
用户发消息时 | 添加上下文、敏感信息过滤 |
SessionStart |
会话启动/恢复 | 加载 git 信息、显示分支 |
SessionEnd |
会话结束时 | 统计保存、清理临时文件 |
脚本通过 exit codes 通信:0 = 成功放行,2 = 拦截并阻断,其他 = 非阻塞错误。
怎么用?
第一步:创建 Hook 脚本
#!/usr/bin/env python3
import json, sys
data = json.load(sys.stdin)
command = data.get("tool_input", {}).get("command", "")
# 拦截危险命令
if "rm -rf /" in command:
print("危险命令已拦截")
sys.exit(2) # 阻断
sys.exit(0) # 放行
第二步:配置到 settings.json
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash",
"hooks": [{
"type": "command",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/validate-bash.py",
"timeout": 60
}]
}]
}
}
第三步:安装插件
在 Claude Code 里运行:
/plugin install emdashcodes-claude-code-plugins
然后选择安装 claude-code-hooks 技能即可。
为什么值得装?
老实说,Claude Code 本身已经很聪明了,但它毕竟是个 AI——你不可能 100% 相信它每次都做对的事。Hooks 让你给它加上一层”护栏”,既不限制它的能力,又能在关键时刻拦住它。
比如你团队要求所有 git push 必须走 PR,用 Hook 就可以在 PreToolUse 里检查当前分支是不是 main、是不是强制推送,是的话直接拦掉并提示走 PR 流程。
这比单纯靠”信任”要靠谱多了🙂
GitHub 链接:
https://github.com/emdashcodes/claude-code-plugins
评论区
0 条评论
登录后可评论。