powered by TechFeed
表示モード
Anthropic

Claude Codeが設定ファイルにAPIキーやパスワードを書き込み、GitHubにコミットするケースが報告された — 1,100件超の機密情報が公開リポジトリへの流出が判明

11月10日、Ars Technicaが「Claude Code is accidentally exposing secrets all over GitHub」と題した記事を公開した。AnthropicのAIコーディングエージェント「Claude Code」の設定ファイルが、GitHubの公開リポジトリに機密情報を意図せず流出させていた問題について詳しく報告している。

11月10日、Ars Technicaが「Claude Code is accidentally exposing secrets all over GitHub」と題した記事を公開した。AnthropicのAIコーディングエージェント「Claude Code」の設定ファイルが、GitHubの公開リポジトリに機密情報を意図せず流出させていた問題について詳しく報告している。


何が漏れているのか

AIセキュリティ企業Apiiroの研究者が発見したこの問題の核心は、Claude Codeの「Yes, and don't ask again」(次回から確認しない)オプションにある。

Claude Codeはシェルコマンドを実行する際にユーザーへの承認を求める。このとき「次回から確認しない」を選ぶと、その選択内容がローカルマシン上の設定ファイル**.claude/settings.local.json**に記録される。問題なのは、承認したコマンドの内容そのものがこのファイルに書き込まれるケースがある点だ。コマンドにデータベースパスワードやAPIトークンが含まれていれば、それもそのまま設定ファイルに残る。

ただし、すべてのコマンドが無条件に書き込まれるわけではなく、「次回から確認しない」を選択した際に記録対象となるコマンドについて認証情報がインラインで含まれていた場合に問題が生じると元記事は説明している。コマンドの種類や入力内容によって影響範囲は異なるため、設定ファイルの内容を定期的に確認する習慣が重要だ。

なぜGitHubに流出するのか

Anthropicはドキュメント上でこの設定ファイルをグローバルな.gitignoreに追加するよう案内しており、通常であれば公開リポジトリへのアップロードは防がれる。

しかしここに構造的な落とし穴がある。グローバルの.gitignoreはあくまでローカルマシン上の設定であり、リポジトリ自体には含まれない。そのため、別のメンバーがリポジトリをクローンした環境や、CIサーバー、あるいは新しいマシンでは、グローバル設定が引き継がれない。結果として、.claude/settings.local.jsonがコミット対象に含まれてしまう。既存フォルダを後からGitリポジトリに変換した場合も同様のリスクがある。

さらにApiiroは、Claude Code自身がユーザーの明示的な操作なしに設定ファイルへの変更をコミットするケースがあるとも指摘している。AIコーディングエージェントが自律的にGitコマンドを実行できる性質上、機密情報を含む設定ファイルがユーザーの意図しないタイミングでコミットされうるという点は、今回の問題の重要な背景となっている。

なお、Anthropic側の公式コメントや修正対応については元記事公開時点では明示されておらず、引き続き動向が注目される。


Apiiroが発見した機密情報の種別内訳(出典: Apiiro)

被害の規模

Apiiroの調査結果は以下のとおりだ。

  • GitHubの公開リポジトリに.claude/settings.local.jsonがアップロードされていたケース:10万件超
  • そのうち実際に機密情報を含んでいたもの:約1,100件(63の異なる組織から)
  • 流出していた情報の種別:データベースパスワード、公開APIトークン、秘密鍵、rootログイン情報など

さらに厄介なのがフォーク問題だ。問題のファイルが発見されてリポジトリから削除されても、そのリポジトリをフォークしていたプロジェクトには機密情報が残り続ける可能性がある。GitHubのフォークはコミット履歴ごと複製されるため、元リポジトリ側で履歴を書き換えても、フォーク先に残ったコピーを完全に消去することは現実的に困難だ。Apiiroはこの点を、今回の問題が特に深刻な理由として強調している。

他のAIコーディングエージェントとの関係

※編集部の考察:今回の問題はClaude Code固有のものとして報告されているが、自律的なコマンド実行やファイル操作を行うAIコーディングエージェント全般に共通するリスク構造を示唆している。類似の設計をもつエージェント型ツールを利用している開発者も、ローカル設定ファイルの扱いとGitの追跡対象について改めて確認する価値があるだろう。

開発者が今すぐ確認すべきこと

この問題への対処として、各リポジトリの.gitignoreに**.claude/settings.local.jsonを明示的に追加**しておくことが確実な対策となる。グローバルの.gitignoreはあくまで自分のローカル環境にのみ有効であり、チーム開発やクローン先の環境では機能しない。今回の事例はその前提を改めて浮き彫りにした。

すでにClaude Codeを利用しているプロジェクトでは、過去のコミット履歴に.claude/settings.local.jsonが含まれていないかをgit log --all --full-history -- .claude/settings.local.jsonなどで確認しておくことも推奨される。

Claude Codeはここ数ヶ月でエンジニアの間に急速に普及したAIコーディングエージェントであり、自律的なコマンド実行を得意とするツールだ。その「自律性」が今回の流出経路の一端を担っている点は、AIエージェントをローカル開発環境に組み込む際のリスクとして広く認識されるべきだろう。

詳細はClaude Code is accidentally exposing secrets all over GitHubを参照していただきたい。