Copilot 把你打的每一句话明文写进本地 SQLite
读源码只能知道一个应用能干什么。挂个中间人代理跑一遍,才知道它实际在干什么。Rafael 对 GitHub Copilot 做了后者,这篇拆解今天上了 Hacker News 首页,139 分。
大家最炸的一条是本地有个 SQLite 库叫 session-store.db。每一条用户消息、每一条助手回复都往里写,明文。他用了最直接的验证方式——把假的 GitHub token、AWS key、数据库密码塞进聊天消息里——一个不落,原样躺在文件里。没有脱敏,没有打码。.env 内容没有任何默认保护规则;密钥过滤只在企业仓库策略下才生效,而个人开发者根本没有这个东西。
拆解剩下的部分很值得看,能看清一个现代 coding agent 实际往外发多少上下文。最多 20 个最近编辑过的文件外加 8 条编辑摘要、对话历史、仓库信息,每个请求都打包带走。而且在生成任何东西之前,Copilot 会先把你的 prompt 归到代码生成、调试、推理这些意图类别里,再据此路由到某个模型。路由这件事大家早就猜到了,这回是抓包实证。
他的结论那句话值得直接抄走:上下文正在变成产品本身。Copilot 是个有状态系统,把工作区、编辑记录、对话、工具、历史缝在一起,差异化已经从模型质量转移到了「你这堆东西缝得好不好」。这也是为什么 SQLite 那条的意义超出了隐私本身——如果上下文组装就是产品,那每一家厂商都在建同样的本地历史库,而几乎没有一家告诉你里面存了什么。Copilot 只是碰巧被人挂了代理的那一个。
https://www.lighthousenewsletter.com/p/i-put-github-copilot-behind-a-mitm
← 返回所有文章
大家最炸的一条是本地有个 SQLite 库叫 session-store.db。每一条用户消息、每一条助手回复都往里写,明文。他用了最直接的验证方式——把假的 GitHub token、AWS key、数据库密码塞进聊天消息里——一个不落,原样躺在文件里。没有脱敏,没有打码。.env 内容没有任何默认保护规则;密钥过滤只在企业仓库策略下才生效,而个人开发者根本没有这个东西。
拆解剩下的部分很值得看,能看清一个现代 coding agent 实际往外发多少上下文。最多 20 个最近编辑过的文件外加 8 条编辑摘要、对话历史、仓库信息,每个请求都打包带走。而且在生成任何东西之前,Copilot 会先把你的 prompt 归到代码生成、调试、推理这些意图类别里,再据此路由到某个模型。路由这件事大家早就猜到了,这回是抓包实证。
他的结论那句话值得直接抄走:上下文正在变成产品本身。Copilot 是个有状态系统,把工作区、编辑记录、对话、工具、历史缝在一起,差异化已经从模型质量转移到了「你这堆东西缝得好不好」。这也是为什么 SQLite 那条的意义超出了隐私本身——如果上下文组装就是产品,那每一家厂商都在建同样的本地历史库,而几乎没有一家告诉你里面存了什么。Copilot 只是碰巧被人挂了代理的那一个。
https://www.lighthousenewsletter.com/p/i-put-github-copilot-behind-a-mitm
评论