我在GitHub Copilot前架起MITM代理

What I learned by putting GitHub Copilot behind a MitM proxy

我在GitHub Copilot前架起MITM代理

最近我注意到GitHub Copilot的额度消耗得越来越快,于是决定用MITM代理深入探究VS Code和Copilot的后台运作。通过拦截网络流量,我发现Copilot在启动阶段就会进行OAuth认证、模型发现和上下文加载。更有趣的是,即便我在.env文件中写入假密钥,只要在其他文件(如pyproject.toml)中打字,Copilot仍会发送包含上下文的请求。此外,Copilot还会调用Chronicle工具查询本地SQLite数据库,获取你本周的工作记录。这次实验不仅揭示了AI助手的内部机制,也提醒我们:隐私泄露往往发生在意想不到的地方。

源代码告诉你一个应用能做什么,但发现它在运行时实际做了什么则更具挑战性,尤其是当你还不清楚自己在寻找什么的时候。
  1. p1llus

    我发现一个挺有趣的补充点,就是用 eBPF 让这事儿变得更容易了。完全不用跟那些用了证书绑定(certificate pinning)、mTLS 或其他技术的家伙们斗智斗勇,你直接就能从线路上拿到明文数据(加密前和解密后),这对大多数 Agent 和 IDE 都适用。

    实际上,这能让你拿到从遥测数据到提示词(prompts)的一切内容,而看到它们收集或运行了多少跟你实际请求完全无关的东西,还挺有意思的。

    当某些应用让部署 MiTM 代理变得困难时,这是个很方便的替代方案;你可以直接把数据转储到你自己的脚本或程序中,按你想要的格式过滤并存储,以便做更深入的分析。

  2. j0selit0

    我很好奇 Copilot 是如何实现其 harness 的,同时也想知道为什么我的配额消耗得那么快。最后我顺着这条路走,用 mitmproxy 拦截了它的网络流量。

    沿途发现了一些有趣的东西:

    - 实时观察了模型/能力发现和路由的过程

    - 查看了哪些内容被注入上下文,并随 ghost completions 一起发送

    - 发现最近的编辑可能会从你当前正在编辑的文件之外的文件中拉取上下文(包括臭名昭著的 .env 文件)

    - 找到了 Chronicle 背后的 SQLite 会话存储,里面包含之前的提示词和回复

    - 观察到模型如何通过工具调用(tool calls)查询这些历史记录

    随后我查看了 VS Code 的源码,将我在网络线上看到的一些现象与实际实现进行了对照。

    总的来说,关于他们 harness 的实现方式,学到了一些有趣的经验。

  3. ameliaquining

    一个小事实纠正:Codex 客户端是开源的。https://github.com/openai/codex

同日更多故事

2026-08-11