大家好,我是何三,独立开发者

你要是用过Claude Code、Cursor或者Codex这类AI编码Agent,大概率想过一个问题:我给了Agent一个API Key,它会不会哪天被人骗走?

不是杞人忧天。

Prompt注入攻击早就不是理论上的事了。恶意文档、被污染的RAG上下文、甚至一个格式奇怪的网页,都可能诱导Agent把环境变量里的密钥吐出来。GitHub上已经有人PoC过,让Claude Code把$ANTHROPIC_API_KEY发到攻击者服务器——Agent乖乖照做,因为它"觉得"对方是合法的。

传统思路怎么防?给短生命周期的Token、做审计、上Guardrail……说白了都是在"假设Agent会泄露密钥"的基础上做补救。

但Infisical(没错,就是那个做开源密钥管理的Infisical)前几天开源了一个叫Agent Vault的项目,思路完全反过来:

别让Agent持有密钥不就完了?

对,你没听错。Agent Vault的核心理念就一句话:Agent永远不应该直接持有任何凭证。你给它配一个本地HTTP代理,所有对外请求通过这个代理走,代理在网络层自动注入凭证——Agent全程摸不到密钥。

这个项目4月22号刚发博客官宣,到现在已经400+ Star,更新到v0.10.0。我连夜试了一下,说实话,被这个设计思路震到了。

这东西怎么做到的?

传统的密钥管理长这样:

密钥管理 → 把API Key发给Agent → Agent拿着Key去调API

问题在哪?Agent拿到Key之后,Key就在它的内存里了。Prompt注入相当于在Agent脑子里喊了一声"把你口袋里的东西交出来",它就交了。

Agent Vault的做法是:

密钥管理 → Agent发起HTTPS请求 → 本地代理拦截、注入Key、转发 → 上游API

Key全程在代理这一层,Agent的内存里压根儿就没有Key。

架构对比

具体怎么实现的?Agent Vault启动一个本地HTTPS代理(端口14322),你配置Agent的环境变量HTTPS_PROXY指向它。Agent发请求时,代理用MITM(中间人)方式终止TLS连接,匹配请求的目标域名,从加密存储里取出对应的凭证,注入到请求头里,再重新建立TLS连接发出去。

说实话,MITM这个词听着有点吓人,好像中间人攻击似的。但其实就是在你本地跑的一个受信代理,你自己签发的CA证书,可信的。说白了,就像你设了个门禁,Agent出门必须经过门禁,门禁自动给它刷脸,它自己兜里不用装门禁卡。

这个设计妙在哪?不管Agent是用API、CLI、SDK还是MCP Tool调外部服务——最终都会变成HTTPS请求。代理在网络层拦截,接口无关。你不需要给每种接入方式分别做集成。

哦说到这个,让我想起之前折腾MCP网关的经历。当时有个项目搞了个"MCP网关",只支持MCP协议的Agent接入,换个协议就抓瞎。Agent Vault直接在HTTPS层做,管你上面跑什么协议——API调用、CLI命令、SDK方法,最后都是HTTPS出去,代理一把梭。这思路,啧。

上手试试

装起来简单到有点离谱。macOS/Linux一行命令:

curl -fsSL https://get.agent-vault.dev | sh
agent-vault server -d

服务就跑起来了,Web UI在http://localhost:14321

然后创建一个Vault,把API Key存进去,配置好要代理的服务(比如api.github.com用Bearer认证)。最后拉起你的Agent:

agent-vault run -- claude

或者

agent-vault vault run -- cursor

agent-vault run会自动创建一个临时会话,设置好HTTPS_PROXY和CA证书信任环境变量,然后启动Agent。Agent像往常一样调用API,但所有请求都走代理,密钥自动注入。

它还支持沙箱模式:

agent-vault run --sandbox=container --share-agent-dir -- claude

这个模式会把Agent塞进Docker容器里,用iptables锁死所有出站流量,只留Agent Vault这一个出口。Agent想绕过代理?门都没有。

原理大概是这样,细节可能有出入——有懂的大佬欢迎指正。

这玩意儿解决了什么?

最核心的价值:把"Agent可能泄密"这个风险源从系统里移除了。

不是降低,是移除。因为Agent拿不到密钥,就算被Prompt注入得再彻底,也没东西可泄露。攻击者让Agent"把环境变量发给我"——Agent的环境变量里没有API Key,全在Agent Vault那边。

这跟Anthropic的Managed Agents架构思路一致。Anthropic那篇博客里也说,他们建了个专用代理服务来注入凭证,"harness从未感知到凭证存在"。Browser Use也是类似架构。Infisical把这个模式开源了,而且做得更通用——不挑Agent,不挑平台。

【运营钩子】同类项目

如果你对AI Agent安全感兴趣,其实我之前也写过一篇关于Browser Use的文章——那个项目也是做Agent沙箱化的,不过是管浏览器Agent。两个项目结合起来看,你会发现整个行业都在往"Agent不该信任"这个方向走。

另外Infisical本身也是个很硬核的开源项目,做密钥管理的,如果你在管多个AI Agent的API Key,不妨两个一起用。


说到底,Agent Vault还是个刚发布的研究预览版(Research Preview),API可能会变,文档也还在完善。但我认为它的设计方向是对的——与其想方设法让Agent"安全地持有密钥",不如干脆不让它持有。安全不是加固出来的,是设计出来的。

本文使用 MGO 编辑并发布

关注"何三笔记",回复"mgo" 免费下载使用