开发者开源claude-code-guardrails工具,通过PreToolUse钩子在Bash执行前拦截敏感文件访问,防止.env、.pgpass等密钥在对话中被打印。
如果你高频使用 Claude Code,应该见过这种场景:
"Let me inspect the configuration."
cat .env
你的数据库密码或 API key 就这样暴露在对话里了。
多来几次之后:
grep SOMETHING ~/.pgpass
次数多了以后,我就懒得再靠这句嘱咐了:
"Claude,记得不要打印敏感信息。"
于是我写了一个 claude-code-guardrails。
它是一套面向 Claude Code 的用户级钩子,以开源形式发布。
核心钩子 deny-secrets 会在 Bash 工具调用执行前进行拦截。
如果 Claude 试图执行类似这样的操作:
cat .env
或者试图访问 .pgpass、私钥、凭据文件、环境变量或其他看似敏感的数据,钩子可以在 Bash 运行之前拒绝该命令。
Claude Code
↓
Bash command
↓
PreToolUse hook
↓
secret?
↓
NOPE.
它不是安全沙箱,也绝非 100% 防护。
但它能阻止一大类意外发生:
"糟了,我不该把它打印出来的。"
第二个钩子是 session-heartbeat。
长时间运行的 Claude Code 会话在上下文压缩后,可能会逐渐丢失早期的指令。
危险之处在于:Claude 不会突然停止工作。
它继续回答,继续听起来自信满满,继续写代码。
只是决策开始变得……奇怪。
所以心跳机制充当了上下文退化的预警信号。
它会在每次 prompt 中注入时间戳和轮次计数器。如果 Claude 突然不再返回预期的标记,就说明会话可能已经开始漂移了。
也许是时候关掉这个会话开一个新的了——趁 Claude 还没开始自信满满地产出废话。
它并不打算取代正经的密钥管理器、文件系统权限、gitleaks、trufflehog 或真正的沙箱化方案。
只是一个务实的额外防护层,专门对付我自己反复遇到的问题。
MIT 协议许可。可以下载、修改、添加你自己的规则、把它搞坏、再修好、提交 PR。
完整的文档和安装说明在 GitHub 上:
https://github.com/ineron/claude-code-guardrails
有时候 AI 编程 agent 不需要再增加一条 prompt。