密钥保护 Hook
以下步骤将帮助您设置一个用于密钥保护的 Hook。
-
复制 Hook 脚本:
mkdir -p ~/.claude/hooks
git clone https://github.com/karanb192/claude-code-hooks.git
cp hook-scripts/pre-tool-use/protect-secrets.js ~/.claude/hooks/ -
在
.claude/settings.json中添加配置:{
"hooks": {
"PreToolUse": [
{
"matcher": "Read|Edit|Write|Bash",
"hooks": [
{
"type": "command",
"command": "node ~/.claude/hooks/protect-secrets.js"
}
]
}
]
}
} -
重启 Claude Code 以激活该 Hook 。
💡 提示 :可以结合多个 Hooks 使用,例如block-dangerous-commands和protect-secrets,以实现更全面的安全防护。
保护机密
此 Hook 可防止 Claude Code 读取、修改或窃取敏感文件,包括但不限于:
-
.env 文件
-
SSH 密钥(如
~/.ssh/id_*) -
AWS 凭证(如
~/.aws/credentials) -
Kubernetes 配置文件(如
~/.kube/config) -
匹配常见密钥模式的任意文件
此外,它还会阻止可能泄露密钥的 Bash 命令,例如: -
cat .env -
echo $API_KEY -
curl -d @.env(数据窃取) -
printenv(环境信息导出)
通过上述配置,您可以有效增强 Claude Code 的安全性,确保敏感信息不被未经授权地访问或篡改。{
"hooks": {
"PreToolUse": [{
"matcher": "Read|Edit|Write|Bash",
"hooks": [{
"type": "command",
"command": "node ~/.claude/hooks/protect-secrets.js"
}]
}]
}
}


根据"实际拦截功能"对以下内容进行分类整理:
1. 文件访问控制
当尝试读取、修改或写入下列敏感文件时,系统将直接拒绝访问:
- 关键级别(默认包含高风险)
-
- 环境配置文件:
.env及其变体如.env.*,.envrc - SSH 相关密钥及认证文件:位于
~/.ssh/目录下的id_*文件(例如id_rsa,id_ed25519等),以及authorized_keys - 云服务凭证:包括但不限于
~/.aws/credentials,~/.aws/config,~/.kube/config - 各类证书与密钥:
.pem,.key,.p12/.pfx扩展名的文件
- 环境配置文件:
- 高风险(当前 SAFETY_LEVEL 设置为 'high' 时启用)
-
- 认证信息存储:
credentials.json - 密码管理文件:扩展名为
.yaml,.json, 或.toml的secrets和credentials文件 - 特定于 GCP, Azure, GCloud 的认证文件
- Docker 配置文件:
~/.docker/config.json(可能包含注册表认证信息) - 其他开发工具相关的认证文件:
.netrc,.npmrc,.pypirc,.gem/credentials,.vault-token - Java 应用程序密钥库:
*.keystore,*.jks - Web 服务器和数据库密码文件:
.htpasswd,.pgpass,.my.cnf
- 认证信息存储:
- 严格模式(尚未启用)
-
- 数据库配置文件:
database.json/yaml - 已知主机列表:
.ssh/known_hosts - Git 客户端配置:
.gitconfig - Curl 客户端配置:
.curlrc
- 数据库配置文件:
注释 :模板或示例环境变量文件如 .env.example, .sample, .template 等被加入白名单,默认允许访问。
2. Bash 命令拦截
对于可能引起数据泄露或系统破坏的行为,系统将阻止执行以下命令:
- 直接查看敏感信息
-
- 使用
cat,less,head,tail查看.env文件 - 读取私有密钥文件(如
id_rsa,.pem,.key) - 显示 AWS 凭据
- 使用
- 环境变量暴露
-
- 列出所有环境变量:
printenv,env - 显示特定环境变量值:
echo $TOKEN,printf $PASSWORD - 加载环境变量:
source .env,. .env - 导出环境变量:
export $(cat .env ...)
- 列出所有环境变量:
- 数据外泄
-
- 通过
curl上传或 POST 敏感文件 - 利用
wget --post-file发送敏感信息 - 使用
scp或rsync将敏感文件传输到远程位置 - 采用
nc < .env方式进行 netcat 外传
- 通过
- 敏感文件操作
-
- 复制或移动
.env文件 - 删除重要密钥文件,如
.env,id_rsa,.aws/credentials - 清空敏感文件内容:
truncate
- 复制或移动
- 进程环境读取
-
- 访问
/proc/*/environ获取进程环境变量 - 使用
find ... -exec cat ...或xargs cat ...读取.env文件
- 访问
- 仅在严格模式下启用
-
- 对关键词如
password,token,apikey进行递归搜索 - 对秘密信息执行 Base64 编码
- 对关键词如
3. 适用场景概述
本脚本旨在保护如下应用场景:
- 防止意外读取:避免 AI 或脚本无意中读取本地或项目中的敏感凭据。
- 防止误修改/删除:禁止对关键密钥文件进行未经授权的写入、移动或删除操作。
- 防止数据外泄 :阻止使用
curl,scp,wget,nc等工具将敏感信息发送出去。 - 防止环境变量泄漏 :限制
env,printenv,echo $TOKEN等命令的使用以避免泄露环境变量。 - 可追溯性 :任何触发规则的行为都将记录至
~/.claude/hooks-logs/中,便于后续审计。
补充说明
增加对 .zshrc, .bashrc 等用户配置文件的安全检查与拦截。