V2EX 有人问:「你们会刻意避免让 AI 接触到自己的任何敏感信息吗?」
楼主的担心很实在:AI 用得越深,账号、服务器信息、各种 Key、真实姓名、证件号、地址,甚至密码,好像都难免一点点被模型看到。这些内容不像密码库里存的是哈希,发出去就收不回来了。
用编程 Agent 的时候,这个问题更具体:它能读你的项目目录、能跑命令,.env、~/.ssh、~/.aws/credentials、环境变量里的 Token,它都可能碰到。
你是怎么处理的?有哪些配置和习惯值得推荐?
V2EX 有人问:「你们会刻意避免让 AI 接触到自己的任何敏感信息吗?」
楼主的担心很实在:AI 用得越深,账号、服务器信息、各种 Key、真实姓名、证件号、地址,甚至密码,好像都难免一点点被模型看到。这些内容不像密码库里存的是哈希,发出去就收不回来了。
用编程 Agent 的时候,这个问题更具体:它能读你的项目目录、能跑命令,.env、~/.ssh、~/.aws/credentials、环境变量里的 Token,它都可能碰到。
你是怎么处理的?有哪些配置和习惯值得推荐?
楼主把 V2EX 楼里的做法,和 Claude Code、Codex、1Password 的官方文档对了一遍,整理成能直接照做的清单。
一、楼里的几条共识
二、Claude Code:两层都要配
第一层,权限规则,管内置的读文件工具。 在 ~/.claude/settings.json 里加上:
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)"
]
}
}
改完在 Claude Code 里运行 /status,确认配置已经加载。注意两点:
.claudeignore 文件不起作用,里面的条目要改写成 Read 拒绝规则。cat、head、tail、sed 等命令;但拦不住不点名文件的命令(比如在目录里跑 grep -r),也拦不住自己去打开文件的 Python、Node 脚本。文档原话是:要在系统层面拦住所有进程,请开启沙箱。第二层,沙箱,管 Agent 跑的命令。 沙箱默认仍然能读机器上的大部分文件,包括 ~/.ssh 和 ~/.aws/credentials;环境变量也会原样继承,里面的密钥一样。所以要用 sandbox.credentials 把它们点名保护起来:
{
"sandbox": {
"enabled": true,
"credentials": {
"files": [
{ "path": "~/.aws/credentials", "mode": "deny" },
{ "path": "~/.ssh", "mode": "deny" }
],
"envVars": [
{ "name": "GITHUB_TOKEN", "mode": "deny" },
{ "name": "NPM_TOKEN", "mode": "deny" }
]
}
}
}
deny 的文件在沙箱里读不到,环境变量会在每条命令执行前被清掉。CLAUDE_CODE_SUBPROCESS_ENV_SCRUB 这个环境变量。三、Codex:默认会把带 KEY、TOKEN 的环境变量传下去
workspace-write 模式能读文件,只能改当前工作区,默认不联网;要联网或改工作区以外的文件,会先问你。不联网这一条,本身就挡住了把数据往外发。shell_environment_policy.ignore_default_excludes 默认是 true,也就是名字里带 KEY、SECRET、TOKEN 的环境变量,默认会原样传给 Codex 启动的命令。想让它自动过滤,在 ~/.codex/config.toml 里写:[shell_environment_policy]
ignore_default_excludes = false
danger-full-access,这个模式会去掉文件和网络两道边界。四、密钥本身:别以明文放在项目里
楼里提到的 1Password 做法,官方叫「密钥引用」:
.env 里只写引用、不写真实值,比如 AWS_SECRET_ACCESS_KEY="op://development/aws/Access Keys/secret_access_key";op run --env-file="./prod.env" -- 你的命令 启动,真实值只在这个子进程运行期间以环境变量的形式存在;<concealed by 1Password>。这样就算 Agent 读到了 .env,看到的也只是引用。但要注意前面说的:程序跑起来以后,密钥就在环境变量里了,Claude Code 的沙箱要配 envVars,Codex 要配 shell_environment_policy。
五、几个小习惯
sk-… 这类密钥的帖子会被系统拦下,但最好还是发之前自己检查一遍。参考来源:
楼主补充(11 月 3 日):存在第三方平台上的环境变量也会泄露
11 月 1 日,任务平台 Trigger.dev 发布安全事件说明:攻击者未经授权,拿到了一部分组织存在平台上的环境变量。官方说已经封堵了被利用的漏洞,并给受影响的账号所有者发了邮件,告诉他们怎么处理。
这提醒我们:除了不让本地的 AI 工具读到密钥,存在 CI、任务平台、托管平台上的密钥也一样有风险。几个习惯: