← AIバイブコーディングTips 一覧へ MitM Proxy / GitHub Copilot

GitHub Copilotの通信をプロキシ越しに覗くと、何が見えたか

VS CodeとGitHub Copilotの間にmitmproxyを挟んで通信を傍受した個人ブログの実測記録を読む。直近編集した最大20ファイルが会話ごとに自動でプロンプトへ注入され、.envに置いた偽シークレットが別ファイル編集時のリクエストに紛れ込み、ローカルの会話履歴DBは平文のまま保存されていた。

この記事で手に入るもの

Copilotの補完リクエストに何が自動で乗るかを実測ベースで把握できる要点整理と、Claude Code・Codexなど自分のツールで同種の穴がないか点検する3つの視点。

01 — 何をしたか

VS Codeの設定を1箇所書き換え、Copilotの通信をローカルプロキシに通しただけ

仕掛けは特別な脱獄も権限昇格もいらない。brew install mitmproxyで通信傍受プロキシを立て、VS Codeの設定でHttp Proxylocalhost:8080に、Http Proxy Strict SSLを無効、Http: Proxy Supportoverrideに変更する。拡張ホストのプロセスが古い設定を握ったままのときは「Developer: Restart Extension Host」で再起動すれば、Copilotが送るリクエストがそのままプロキシ側で読めるようになる。

やっていることは、普段は見えない「エディタからモデルに何が送られているか」を素通しにするだけ。だが、これだけでCopilotの補完リクエストに何が自動で乗っているかが丸見えになった。


02 — 核心

「直近編集した20ファイル」がハードコードされ、無条件でプロンプトに乗っていた

ソースのrecentEdits.tsxを追うと、コンテキスト注入の仕様は数字で決め打ちされている。特別な除外ルールは無く、企業向けの「リポジトリポリシー」機能を有効にしない限り、個人の設定では止められない。

01

最大20ファイル・8件の編集サマリー・変更周辺3行がデフォルトで自動注入

直近に編集したファイルは最大20ファイルまで、変更内容は8件の編集サマリーとして、各変更の周辺3行分のコンテキストとともに、リクエストのたびに黙って添付される。読者が明示的に開いてもいないファイルの中身が、会話の背後で毎回プロンプトに乗っている計算になる。

02

.envを一度も開かなくても、別ファイル編集のリクエストに秘密が混入

著者は.envTEST_ENV_VAR_SECRET="mysecretenvvar"という偽トークンを置き、.env自体は編集せずpyproject.tomlだけを編集した。それでも送信されたリクエストの中には"prompt":"TEST_ENV_VAR_SECRET=\"mysecretenvvar\"\n\nT"という文字列がそのまま含まれていた。「直近編集ファイル」の対象選定に.envを除外する例外処理は無く、同じディレクトリで何か別のファイルを触っただけで秘密が巻き込まれる。

03

ローカルの会話履歴DBは、削除もマスキングもされない平文保存

会話履歴を保存するsession-store.dbに偽のGITHUB_TOKENDATABASE_URLをチャット経由で送り、DBを直接クエリしたところ入力した文字列がそのまま平文で格納されていた。sessionStore.tsのINSERT文を読んでも、書き込み経路に削除・マスキング・サニタイズの処理は見当たらなかったという。

ここが核心。どの一手も攻撃ではなく仕様どおりの動作だった。「開発体験を良くするための自動コンテキスト収集」と「秘密情報の取り扱い」は、実装レベルでは別々に検討されがちで、その境目にあった.envとローカルDBが素通しになっていた。


03 — 著者の結論

「コンテキストが製品になりつつある」——モデルの差より、何を渡すかの設計差

著者の結論は明快で、AIコーディングツールの差別化はモデル単体の性能よりも「コード・変更履歴・会話・ツール実行結果をどう統合してモデルに渡すか」というコンテキスト設計そのものに移りつつある、というものだ。同じモデルでもハーネス次第で成績が22ポイント動くという実証データと、狙っている場所は同じに見える——片方はベンチマークで、もう片方はネットワーク傍受で、別の角度から同じ結論に到達している。

同時に著者は、収集するコンテキストが増えるほどプロンプトの肥大化プライバシーリスクという二つの課題が表裏一体で膨らむ点も指摘している。「賢くするために多く渡す」設計は、そのまま「漏れるものも多く渡す」設計と背中合わせだ。


04 — 自分の運用に当てはめる

検証環境はmacOSのCopilot。だが問い自体は自分のツールにもそのまま刺さる

この実測はmacOS・VS Code・GitHub Copilotの組み合わせで行われたもので、筆者自身のWindows環境やClaude Code/Codexでの再現検証はしていない。とはいえ「直近編集ファイルが自動でコンテキストに乗る」「ローカルの会話履歴が平文で残る」という設計上の問いは、ツールが変わっても同じ形で存在する。「許可したURLしか踏めない」はずの防御が破られた実例と同じ、権限・入力の設計はどこで抜けるかという系譜として読める。

.envや秘密情報を、開いているエディタのワークスペース内に置かない「そのファイルを直接編集していない」は、AIツールのコンテキストに含まれない保証にはならない。シークレットは環境変数マネージャなど別経路で扱う。
自分が使っているAIコーディングツールの「直近編集ファイル」注入設定を確認する何ファイルまで・どの範囲を自動で拾うかは製品ごとに違う。ドキュメントか、可能ならこの記事のようにプロキシ経由で実測して確認する。
ローカルの会話履歴・キャッシュファイルの保存形式を一度確認する平文保存が即座に事故になるとは限らないが、共有端末やバックアップ経路がある場合はリスクになる。暗号化オプションの有無を調べておく。

出典: Lighthouse Newsletter — What I learned by putting GitHub Copilot behind a MitM proxy