User-Agent: test-session/1 <[email protected]>
2026 年 11 月 5 日,GitHub 仓库出现编号为 107757 的议题。抓包记录显示,官方命令行工具 Claude Code 正在泄露隐私。工具执行网页抓取时,会将登录账号的付费邮箱直接拼入客户端请求头。用户发起调用的同时,个人身份已被同步发送至外部服务器。
抓取一个网页,把付费邮箱送进全网日志
在常规软件工程中,HTTP 请求头中的 User-Agent 主要用于声明客户端类型与运行环境。Claude Code 执行网页抓取时,却生成了形如 my-session-slug/1 <[email protected]> 的标识字段。终端只要调用网页工具,这段明文就会进入目标站点的访问日志。
服务器访问日志属于基础设施的留存记录,默认不对外脱敏。反向代理与目标站点记录下来的,正是活跃开发者的真实邮箱。提交议题的开发者证实了这种后果。频繁使用该工具数周后,其个人邮箱便收到了大量定向诈骗邮件。
图:开发者在 GitHub 议题中展示的抓包记录,出站请求头携带了完整的登录邮箱。来源:GitHub issue 107757
这种数据暴露有别于常规爬虫的流量特征。常规爬虫大多伪装成主流浏览器,Claude Code 却主动附带了真实身份。目标站点查看访问日志,就能筛选出使用付费工具的技术人员。开发者的每一次网络调研,都在被动扩大个人数据的暴露面。
本地认证凭证被直接编译进提示词管道
追溯客户端构建产物可以发现,该问题源自上下文拼接机制的设计缺陷。早在 2026 年 7 月 25 日,社区便有编号为 81138 的议题指出了类似风险。构建产物直接提取本地配置文件 ~/.claude.json 中的 oauthAccount.emailAddress 字段。随后该数据被编译为系统提示词中的 # userEmail 段落,以固定格式常驻内存。
用于校验付费权限的账号凭据,直接被导入了会话上下文。模型在规划网络任务时,顺理成章地将上下文变量填入了出站请求。认证凭据与工具载荷之间缺乏隔离,直接导致了出站标识的实名化。两条数据管道相互交织,让身份凭证一路穿透到了最外层的网络调用中。
图:系统提示词注入与请求头泄露的技术链路拆解。来源:DEV Community
在安全设计规范中,认证数据必须遵循最小权限原则。鉴权凭证仅在与官方服务通信时生效,不应暴露给底层模型。全局提示词一旦混入敏感数据,调用的外部工具都会成为泄密通道。上下文管理机制缺乏字段分级,赋予了下游网络组件过高的信息读取权限。
付费开发者名单沦为恶意邮件精准靶标
相比普通爬虫流量,这些请求头中的数据具备极高的商业价值。付费使用高端 AI 工具的群体,通常掌握着代码提交权或核心业务逻辑。第三方站点无需发起入侵,仅凭访问日志就能捕获目标邮箱。这类高价值开发者线索在黑灰产链条上能够直接用于精准钓鱼。
图:网络请求泄露用户身份的安全风险示意。来源:explainx.ai
对比同类竞品的工程实现,OpenAI 的 Codex CLI 展现了更严密的边界意识。其客户端标识仅包含版本号、操作系统与硬件架构,未夹带任何身份数据。将出站请求保持为匿名形态,是命令行工具遵循数十年的基础共识。主流开发工具在设计之初,就严格遵循了网络出站流量与用户身份解耦的惯例。
敏感信息一旦写入外部日志,后续影响便难以逆转。公网服务器通常长期归档访问日志,本地补丁无法召回流出的记录。部分受困扰的团队不得不更换技术栈,转向自主掌控流量的方案。对于涉及保密业务的团队而言,这种不可控的数据外流构成了实质性的合规风险。
紧急补丁上线后在 Windows 环境再次失效
问题公开后,Anthropic 维护团队迅速在 GitHub 给出回应。官方在 v2.1.317 版本中引入了内置插件 cc-plugin-privacy,声明能够拦截此类请求头泄漏。该插件被设置为默认开启,开发者也可以通过内置命令手动切换状态。
社区的实测很快打破了修复预期。在更新后的 Windows 11 环境中,开发者发现相关防护机制并未生效。即便系统显示插件已成功挂载,出站网络探测依然输出了包含邮箱的请求头。应用层挂钩缺乏底层系统调用的强约束力,面对差异化环境极易漏防。
响应周期的落差也引发了质疑。7 月 25 日提交的提示词漏洞至今 open,直到新议题冲上首页才有人跟进。应急式补丁容易在仓促中留下兼容隐患,社区对 Agent 出站通信的可信度也打了折扣。
出站身份脱敏不该留在应用层
修复以插件形式落地,默认开启、随时可关,源码尚未公开。用户既看不到它拦住了什么,也没有独立的验证手段——目前唯一的证据来自社区抓包,而实测至少在 2.1.318 上没有拦住。把身份脱敏做成一个可以关掉的应用层开关,说明这项防护还没进到传输层。
自动化代理替用户访问网络时,必须强制脱敏。外部网络链路不可信,架构底层绝不能放行个人身份。**Agent 替用户执行网络请求的前提是剥离身份,这是核心安全底线。**任何偏离这条底线的设计,都会将代理行为演变为不受控的数据广播。
修改字段并不复杂,重塑安全边界却需要推倒既有假设。AI 助手一旦开始自主调用网络,出站接口就必须具备清洗机制。如果安全防线依赖事后补丁,类似的身份外泄依然会再次发生。出站流量的强制脱敏,应当从第一天起就成为代理架构不可动摇的基础底座。
参考链接:
- GitHub anthropics/claude-code Issue #107757
- GitHub anthropics/claude-code Issue #81138
- DEV Community: Claude Code Architecture and Privacy Analysis