最近、AIコーディングツールは開発者の日常ツールになりました。Claude Code、Codex、Gemini CLI、Grok Build……どれも手元のコードを読んで賢く補助してくれます。
でも、もし「AIに見せてないはずのファイル」まで勝手にクラウドに送信されていたら?
先日、まさにそれが発覚しました 😱
🔬 何が起きたか
AI安全研究者の Cereblab が、xAIの「Grok Build」(コーディング用CLIツール)の通信を監視したところ、驚くべき挙動を発見しました。
「reply OK, do not open any files.」(OKとだけ返して、ファイルは開かないで)と指示したにもかかわらず、Grok Buildは ——
- 📦 リポジトリ全体を git bundle にまとめて
- ☁️ Google Cloud Storage バケットにアップロードしていた
- 📂 Git履歴全体(過去に削除したファイルも含む)
- 🔐 .envファイルの中身も /v1/responses エンドポイントに送信
つまり、「ファイルを開くな」と言っても、全リポジトリをまるごと送信していたのです。
検証方法が秀逸
Cereblabの検証手順は非常にシンプルかつ確実でした:
- mitmproxy で通信を傍受(HTTPSもローカルCAで復号)
- 「何もしないで」と指示
- それでも
POST /v1/storage → 200が発火 - キャプチャした通信を
git cloneで復元 → 壊れずに復元できた - 別のリポジトリでも再現(269ファイル・219MB)
しかも、「Canary file」(絶対に開かせないテスト用ファイル)の内容まで丸ごと入っていました。
⚖️ 他のAIツールとの比較
Cereblabは主要なコーディングAIツールを同じ条件で検証しています:
- Claude Code → ❌ 送信なし(開いたファイルのみローカル処理)
- OpenAI Codex → ❌ 送信なし(同上)
- Google Gemini → ❌ 送信なし(同上)
- Grok Build → ✅ リポジトリ全体+Git履歴をクラウド送信
つまり、この問題は Grok Build固有のものでした。他の主要ツールは「開いたファイルのみ」を送信する設計になっています。
🛠️ その後の対応
発覚後のタイムライン:
- 2026-07-13: xAI側で
disable_codebase_upload: trueをサーバーから返すよう変更。アップロード停止を確認 - 2026-07-19頃: Grok Build 0.2.99 で
/privacyオプトアウト機能を追加 - イーロン・マスク氏はデータ削除を約束
ただし、いくつか気になる点も 👀
- 公式のインシデントレポートが未公開
- 影響範囲(何ユーザーが対象か)の発表なし
/privacyオプトアウトは「保持しない」だけで、送信自体は変わらない(実際に止めたのはサーバー側のグローバルフラグ)
💡 なぜ重要か
この事件は、AIコーディングツールの信頼モデルに根本的な問いを投げかけます。
私たちは「AIがコードを読んでくれる」と思ってツールを導入します。でも、その裏で何が送信されているかを気にする開発者は意外と少ないです。
特に企業で働くエンジニアにとって、これは致命的になり得ます:
- 📋 顧客コードが意図せず外部に送信される
- 🔐 SSH鍵やパスワードマネージャーまでアップロードされる可能性
- 🗑️ Git履歴から「昔削除した秘密情報」も復元される
自動運転で例えるなら、「走行データを収集しています」と言いつつ、実は車内の会話も全部録音してクラウドに送っていたようなものです。
🛡️ 開発者が取るべき対策
もし Grok Build を使ったことがあるなら、今すぐ:
- SSH鍵をローテーション(古い鍵は無効化)
- パスワードマネージャーのパスワードを変更
- Git履歴にハードコードされた秘密情報がないか監査
今後の予防策として:
- 🔧 AIツールの通信を
mitmproxyで定期的に監視する - 📂 機密プロジェクトではネットワーク分離環境で実行する
- 📋 ツール導入前にプライバシーポリシーと送信仕様を確認する
🎯 まとめ
Grok Buildのデータ漏洩は、AIツールの「透明性」がいかに重要かを示す事例です。
幸い、今回の問題は修正されました。でも、次は別のツールで同じことが起きない保証はありません。
AIコーディングツールは強力な味方ですが、「信頼しすぎない」ことが大事。ツールが裏で何をしているか、時々立ち止まって確認する習慣を持ちたいですね 🤝
出典: Cereblab公式レポート (cereblab.com) — 再現手順と証拠はGitHubで公開されています