GitHub Copilot を MITM プロキシの背後に置いたことで学んだこと

2026/08/11 19:40

GitHub Copilot を MITM プロキシの背後に置いたことで学んだこと

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

この原文のサマリーは高品質かつ包括的であり、以下を繰り返します:

サマリー:

本テキストの中核的なメッセージは、現代の AI 開発ツールである VS Code や Copilot が、コード、エディット、会話履歴を単一のデータストリームに統合する複雑な「ステートフルシステム」として機能するという点にあります。研究員たちは、技術的なプロキシを使ってネットワークトラフィックをインターセプトすることで、機密のあるユーザーのプロンプトや応答が、適切な削除処理なくプレーンテキストとしてローカルの SQLite データベース内に保存されていることが明らかになりました。このアーキテクチャは、企業ポリシーが

.env
ファイルなどの機密ディレクトリを明示的に除外することを明確にしておらず、ハードコードされた最近のファイル数の制限により意図せず秘密情報が漏洩するリスクを生み出します。クローズドソースモデルとは異なり、オープンソースの代替ツールにおいてもコンテキストアッセンブリ中のデータ漏洩を防ぐために厳格なエンジニアリングが必要です。これらのツールがローカルのワークスペースデータを大量に統合するよう進化していく中、業界の焦点はモデルそのものの能力から、安全なコンテキスト注入戦略へとシフトする必要があります。したがって、ユーザーも企業も、機密情報を能動的にフィルタリングする厳格なリポジトリポリシーを実装することが不可欠であり、AI ネイティブの開発環境においてプライバシー管理が後付けのものではなく基盤となる要件として確立される必要があります。

本文

逆転エンジニアリングで解明:VS Code Copilot の「状態管理」の正体と課題

記事概要

ラファエル氏が公開している週刊ニュースレターの内容です。 既存の AI アプリから内部動作アーキテクチャを学ぶ重要性、および VS Code Copilot の逆転エンジニアリング(リバース・エンジニアリング)を通じて明らかになった「ステートフルなシステムへの変化」について解説しています。

  • 目的: 公開されている AI 機能だけでなく、裏側でどう動いているかを理解し、開発者にとっての教訓を得ること。
  • 手法: VS Code のソースコード(オープンソースだが大規模)への直接アクセスは難しかったため、ネットワークトラフィックのパッシブ監視から推測するアプローチを採用。
  • 結論: 「AI コーディングツールはステートフルなシステムへ移行している」

1. なぜ Electron なのか:逆転エンジニアリングの鍵

AI アプリの多くはElectronという JavaScript フレームワークを使用しています。 これは開発者が単一のコードベースでマルチプラットフォーム(Windows, macOS, Linux)アプリケーションを構築することを可能にする仕組みです。

Electron の特徴と利点

  • アーキテクチャ: Node.js ランタイム + HTML/CSS/JS アセットをパッケージ化し、Chromium でレンダリング。
  • 開発効率: 異なるプラットフォームそれぞれに独立したコードベースを維持する必要がない。主要なロジックは共有される。
  • 調査の利点: アプリ同士でアーキテクチャが共通しているため、一つのアプリから得た知見を他のアプリへ転移しやすくする。

調査対象:VS Code Copilot

  • VS Code はオープンソース(リポジトリ公開)だが、Claude や Slack などは非公開。
  • ソースコードは数百万行規模であり、特定の挙動を検索するには時間的・コスト的に困難なため、ネットワーク監視で情報を集約。

2. ネットワークトラフィックのキャプチャ:mitmproxy を使った設定

アプリとサーバー間での通信(HTTPS)を傍受するため、**MITM(マン・イン・ザ・ミドル)**のプロキシサーバー「mitmproxy」を使用します。

インストール手順(macOS)

  1. Homebrewでツールをインストール。

    brew install mitmproxy mitmweb
    
  2. VS Code の設定変更

    Cmd+Shift+P
    User Settings JSON
    を開き、以下の設定を追加・修正する。

    設定項目理由
    http.proxy
    http://localhost:8080
    mitmproxy の接続先を指定
    http.proxyStrictSSL
    false
    (チェックオフ)
    mitmproxy 発行の証明書を検証除外
    http.proxySupport
    override
    拡張機能も含め全てプロキシ経由にする
  3. mitmproxy の起動と監視

    • コマンド実行後、数秒でトラフィックがキャプチャされる。
    • Web UI (
      mitmweb
      ) を起動し、フィルタ機能でリクエストを絞り込む(例:
      marketplace
      で Marketplace API 関連を探す)。

⚠️注意点: キャプチャされない場合、「拡張機能ホストプロセス」が古い状態(stale)になっている可能性があります。

  • 解決策:
    Cmd+Shift+P
    Developer: Restart Extension Host
    を実行。

3. Copilot の動作分析:起動と意図分類

Copilot が起動後、ユーザーの操作をどのように処理しているかを実証しました。

認証フロー(OAuth)

  • 初期化時に標準的な OAuth フローでトークンを取得・更新。
  • ユーザーの特権レベルを確認する。

モデルとエージェント機能の選択

モデル呼び出し前に行われる重要なチェックプロセスです。

  1. 一般モデルの確認:
    /models
    エンドポイントへリクエストを送信し、利用可能なモデル一覧を取得。
  2. SWE エージェントの確認:
    /agents/swe/models
    へリクエストを送り、ソフトウェアエンジニアリングタスクに特化した専用モデルを選択。

「意図分類(Intent Classification)」の仕組み

ユーザーがメッセージを入力すると、まずは以下のフローを行います。

  • プロンプトを「コード生成」「デバッグ」「推論」「ツール使用」などの意図に対してスコアリング
  • スコアに基づいて、どのモデルがタスクを実行すべきか決定する(
    /models/session/intent
    )。
graph LR
A[ユーザー入力] --> B{意図分類}
B -- コード生成 --> C[コード生成用モデル]
B -- デバッグ --> D[デバッグ用モデル]
B -- ツール使用 --> E[ツール実行用モデル]

重要な発見:ステートフルな動作の証拠

  • 機密情報の漏洩テスト:

    • .env
      ファイルに偽の機密情報を記述しても、編集操作そのものがトリガーされない場合がある。
    • ただし、**
      .pyproject.toml
      **のような他のファイルで入力を行うと、即座にリクエストが送信される(インライン補完が有効なため)。
    • 結論: 機密情報のフィルタリングは意図的に実装されていない可能性が高い。
  • セッションストアの存在 (

    session_store_sql
    ):

    • Copilot が内部で使用するローカル SQLite DB (
      session-store.db
      ) にアクセスしている。
    • ここにはすべてのプロンプトLLM レスポンスツール実行履歴が保存されている。
    • スキーマの可視化:
      user_message
      assistant_response
      プレーンテキスト(暗号化・マスキングなし)で保存されることが確認された。

4. コード検証:なぜ「状態」は永続化されているのか

逆転エンジニアリングの結果、VS Code Copilot のコード(

sessionStore.ts
など)を確認しました。

プレーンテキスト保存の意図

  • コード調査結果: データ流入時にスクレイブ(削除)やマスキングのロジックは存在しない
  • 書き込みパスにおいて、改行、安全性フィルタリングなどが行われていないことを示す。
  • これはバグではなく、意図的な実装である。

コンテキストの肥大化

  • recentEdits.tsx: 最近の編集ファイル(最大 20 ファイル)をコンテキストに含めるようハードコードされている。
  • これにより、触れていない行に含まれる潜在的な機密情報も API に送信されるリスクがある。

5. 結論:AI コーディングツールの将来と課題

今回の調査から、現在の AI ツールが抱える本質的な問題点が浮き彫りになりました。

主要な発見

  • 「コンテキストこそが製品となる」: モデルの精度だけでなく、適切なコンテキストのアセンブリ(コード、履歴、会話など)が差別化要因である。
  • ステートフルなシステムへ移行: ユーザーの状態(State)を保持する仕組みが標準化しつつある。

2 つの重大な課題

  1. エンジニアリングの問題
    • コンテキストが増えるほど、関連性のある情報を選別するのが難しくなる。
    • プロンプト肥大化を防ぎつつ、軽量でキャッシュフレンドリーな設計が必要。
  2. プライバシーと機密性
    • ハネス(フレームワーク)が大量のデータを収集・永続化するため、境界を越えたデータ流出への対策が不可欠。

開発者への提言

  • モデル自体の学習よりも、モデルを取り巻くハネス(アーキテクチャ)を理解することが重要です。
  • AI アプリを開発する際、「ステートフルな設計」や「コンテキスト管理」をどう考えるかが、最も重要な課題の一つとなっています。

Lighthouse ニュースレター(本記事の元ネタ)は無料で購読可能です。興味がある場合はご検討ください。 [購読リンク]

同じ日のほかのニュース

一覧に戻る →

2026/08/12 4:35

Nvidia Nemotron 3.5 Lightning および NeMo Switchyard

## Japanese Translation: NVIDIA は、マルチエージェントシステム内の長期間にわたるエージェント型 AI ワークロードおよび専門的なタスク向けに設計された、300 億パラメータを持つ混合物専門家(MoE)オープンモデル「Nemotron 3.5 Lightning」を発表しました。本モデルは最先端レベルの精度を提供するとともに、出力速度が最大で 4 倍高速化し、エージェント型タスクの完了速度も約 30% 向上しています。これにより、大量の実装が可能になりつつ運用コストを削減できます。本モデルは、NVIDIA NeMo を用いて組織固有のデータを用いた後学習が可能であり、Nemotron Coalitions の貢献に基づいています。また、データのプライバシーと制御を維持するため、ローカル AI システム(NVIDIA RTX PC、DGX Spark、DGX Station、Jetson)、エッジデバイス、ワークステーション、データセンター、クラウド環境への展開をサポートしています。 効率を最大化するため、NVIDIA は開発者がアプリケーションを書き直す必要なく、品質、遅延、予算に基づいて自動的にリクエストを開封モデル、プロプライエタリモデル、または NVIDIA の混合モデルの最も適したものへ導くオープンソースのインテリジェントルーティングライブラリ「NeMo Switchyard」を発表しました。パートナー企業は既に Switchyard を統合し、精度を維持しつつコスト削減を実現しています。具体的な事例としては、Boomi(ドメインルーティング精度 100%)、Ramp(コスト削減 58%)、Classmethod(コスト削減 27%)、Cognition(Devin Desktop のコスト削減 28%)があり、Kong、LangChain、LiteLLM、Nous Research、Siemens による統合も進んでいます。 業界での採用は加速しており、組織はセキュリティ対策(CrowdStrike)、法務サービス、コードレビュー、ソフトウェア開発(Harvey との Trajectory、CodeRabbit との Baseten、Lila Sciences、Fastino Labs など)といったドメイン特化のエージェント型タスクに Nemotron 3.5 Lightning をカスタマイズしています。Nemotron 3.5 Lightning は Hugging Face、ModelScope、OpenRouter、build.nvidia.com(NVIDIA NIM マイクロサービスとして)、ならびに幅広い NVIDIA クラウドパートナーのエコシステムを通じて提供可能です。一方、NeMo Switchyard は GitHub で利用可能で、近々パートナープラットフォームにも展開されます。

2026/08/12 4:49

圧縮とは予測である

## Japanese Translation: ## 概要: Annie Sexton は ngrok で開発者教育担当として在籍し、Heroku、Render、Fly.io など PaaS 企業にて 10 年以上にわたって経験を持つ人物です。彼女は、「nerd-sniping」と呼ばれる遊び心のある用語で表される開発者への情熱——すなわち共有する技術的熱情を即座に惹きつけ、彼らを魅了する能力——によって際立っています。彼女の主な価値は、複雑なクラウドインフラストラクチャとそれを構築する人間クリエイターの間を取り持つことにあります。この深い歴史的文脈とエンジニアリングの craft に対する真摯な共感を活用することで、Annie は抽象的な技術概念をアクセスしやすく魅力的な学習体験へと転換させます。これにより開発者が支えられていると感じることが保証され、混同ではなくつながりを通じて革新が育まられるエコシステムが醸成されます。

2026/08/12 1:56

Mojo 1.0

## Japanese Translation: Mojo言語のバージョン1.0がリリースされ、2023年の初リリース以来確立された安定した、プロダクション対応の基盤へと、急激な実験段階からの移行を象徴しています。1.xシリーズではC++などの成熟した言語の標準に従い、破損を引き起こすシフトを避けるために追加的な変更を優先します。約20万人のコードラインと、ほぼ200人の貢献者から寄せられた1,100以上のプルリクエストを基盤としており、一貫性のある`var`を用いた変数宣言、統合されたクロージャ、単一のPointerType、そして正確な語彙再命名といった主要な簡素化がリリースに含まれています。新しい機能には、Python風のラムダ構文、参照無効化に対する改良されたメモリ安全性診断、より優れた`where`節、VS Code向けのより安定したLSPサーバーが含まれます。開発者は今や、信頼性の高い「1.0対応」のAIスキルを使用でき、`uv pip install --upgrade mojo`または`uv pip install max[all]`などのコマンドでインストールできます。MAXの強化(GLM-5.2およびNemotron-Hへのサポートなど)は`max["serve"]`を通じて利用可能で、skills.shを通じてオープンソースのエージェントスキル7,200以上がダウンロードされ、モデル全体のライフサイクル導入を加速しています。不安定なモジュール化パッケージはバージョン26.6で廃止予定となっており、長期的耐久性に向けた完全なアーキテクチャシフトを示しています。今後の投資には非同期プログラミングモデル、パターンマッチング、ユニオンが含まれ、また2026年までにMojoコンパイラとツールチェーンの段階的なオープンソース化も進められます。Mojo、MAX、オープンソースに関する詳細および計画については、8月18日にサンフランシスコで開催されるModConにて共有され、完全な変更ログの詳細はmojolang.orgおよびGitHubリポジトリで入手可能です。

GitHub Copilot を MITM プロキシの背後に置いたことで学んだこと | そっか~ニュース