用 AI 写代码,你的密钥全被明文发给了大模型厂商。
但是直接给密钥确实方便呀,AI用你的密钥调工具查问题,你自己当工具人快多了
RedAccess 扫了 38 万个 AI 编程应用,40% 在裸奔。
今天推荐一个开源插件,发送前自动脱敏,执行时还原。

VibeGuard,一个开源项目,做一件事:AI 发代码给大模型之前,自动把密钥替换成占位符。
它的原理不复杂,但解决的是真问题。
你代码里写的是:
DB_PASSWORD=myS3cretP@ss
STRIPE_KEY=sk_live_xxxxx发给 OpenAI/Claude 的变成了:
DB_PASSWORD=__VG_SECRET_a1b2c3d4e5f6__
STRIPE_KEY=__VG_SECRET_7g8h9i0j1k2l__大模型厂商看到的永远是占位符。

但 AI 返回的代码需要执行时——比如跑数据库迁移——插件会在本地执行前自动还原。
你不需要手动干预。
两个版本,两种用法
VibeGuard 项目有两个形态:

VibeGuard(独立代理)——用 Go 写的 MITM HTTPS 代理。
不挑工具,Cursor、Claude Code、Codex CLI 都能用。所有发往大模型 API 的请求都经过它,自动脱敏。
自带管理后台,能看到每条请求替换了什么。还支持 NER,用 AI 识别非固定格式的敏感信息。
opencode-vibeguard(OpenCode 插件)——专门给 OpenCode 做的插件。
一行配置搞定,不需要启动代理,不需要配证书。opencode.json 加一行就行。
OpenCode,160K+ GitHub 星的开源 AI 编程工具,支持 Anthropic、OpenAI、Gemini 全系列。
三分钟装好
在项目根目录的 opencode.json 里加一行:
{
"plugins": ["opencode-vibeguard"]
}然后创建 vibeguard.config.json,告诉它你要保护什么:
{
"enabled": true,
"rules": [
"sk_live_*",
"sk_test_*",
"ghp_*",
"AKIA*",
"password=*"
]
}这是最简单的用法——正则匹配你想保护的字符串。
下次用 OpenCode 写代码,密钥就不会被发出去了。
一个安全设计:忘了配 config?插件变 no-op,什么都不做。不会因为装了插件反而搞坏代码。
它怎么保证占位符不被破解
三个设计值得说:
每个会话独立的 HMAC 密钥。 hash 不是 MD5,是 HMAC-SHA256(会话随机密钥, 原文) 的前 12 位。同一个密码,每次启动长得不一样。
上游拿不到会话密钥。 密钥只存在你本地内存里,从不发给任何外部服务。
历史消息也脱敏。 OpenCode 本地数据库记录了工具调用的参数和输出。插件在每次新请求前,对历史消息也做一轮脱敏。不只是当前,之前的上下文里也不会有明文。
不适用的场景
说清楚它做不到什么:
流式输出有窗口期。 AI 回复用流式传输(text-delta),占位符可能短暂出现在屏幕上。等 text-end 时才会一次性还原。
只能保护你配了规则的秘密。 不会自动识别所有敏感信息(独立版的 NER 可以,插件版目前没有)。
不能防止密钥贴到 GitHub。 只保护发给大模型那条路。代码提交 Git 时,该用 .gitignore 还是要用。
为什么这件事值得关注
2026 年 Vibe Coding 已经不是极客玩具了。菜鸟教程出了 OpenCode 入门教程,B站有保姆级视频。越来越多非安全背景的人,用 AI 搭应用、跑数据库、接支付。
AI 工具按你的要求做,但你没要求它保护密钥,它就不会保护。
你不会把 AWS 密钥贴在公司 Slack 里。但你每天都在把同样的密钥,通过 AI 工具发给 OpenAI、Anthropic、Google。
VibeGuard 不是银弹,但它补上了一个很多人没意识到的缺口。
GitHub: github.com/inkdust2021/opencode-vibeguard
VibeGuard 独立代理: github.com/inkdust2021/VibeGuard
你在用什么方式保护 AI 编程时的密钥?评论区聊聊。
点击关注,了解 AI 工具实践经验。
夜雨聆风