注意まだ起きていない

Claude Code の設定ファイル経由で、鍵が GitHub に1,122件

Claude Code の「Yes, and don't ask again」が .claude/settings.local.json に保存したパスワードや API キーが、公開リポジトリに残っていた。Apiiro の報告と確認・失効の手順。

要点

  • Claude Code で「今後は確認しない」を選ぶと、画面で示された範囲のルールが設定ファイルに保存される。コマンド1本がそのまま残る場合は、含まれるパスワードや API キーも一緒に残る。
  • セキュリティ企業 Apiiro の調査によると、この設定ファイル1,122件が、鍵を含んだまま GitHub の公開リポジトリにあった。
  • 自分のリポジトリも確かめられる。見つかった鍵は、ファイルを消す前に失効させる必要がある。

何が起きたか

Claude Code は、コマンドの実行前に利用者へ許可を求める。ここで「Yes, and don’t ask again」を選ぶと、許可ルールが .claude/settings.local.json に書き込まれる。Anthropic の公式文書にある仕様だ。

問題は、何が書き込まれるかが選択肢しだいで変わる点にある。npm test * のように範囲を広く取ったパターンなら、秘密は入りにくい。しかしコマンド全体がそのまま登録されると、話は違う。たとえば API キー付きの curl を承認すれば、キーが平文でファイルに残りうる。2025年8月には、同じ問題が GitHub の issue(#5544)で報告されている。この issue は2026年1月3日、60日間動きがなかったとして、自動処理で「計画なし」のまま閉じられた。issue 上に Anthropic 側のコメントは見当たらない。

Apiiro の調査結果は、The Hacker News が伝えている。それによると、Apiiro は公開 GitHub を検索し、103,617件のリポジトリで104,185件の該当ファイルを見つけた。このうち約1.1%にあたる1,122件に、少なくとも1つの秘密情報が入っていた。秘密は全部で1,379個ある。

その中身で最も多いのは、データベースのパスワードの379件だ。ほかに、公開サーバーへの SSH ログインが43件、GitHub・GitLab・npm のトークンが42件、AWS のキーが23件あった。多くのファイルは、63の組織の持ち物でもあるという。その大半はソフトウェア企業とされる。履歴をさかのぼると、いまのファイルからは消えているのに過去の版に残った秘密も、509のリポジトリで734個あった。

Apiiro は、これらの鍵がいまも使えるかは試していない。誰かが悪用したかどうかも、報告には書かれていない。通知を受けた1社は、鍵が有効だったと認めたという。なお、Apiiro の報告ページ本体は、こちらでは読めなかった。数字は The Hacker News の記事によるもので、未確認だ。

日本の利用者への影響

日本の組織や利用者への影響を示す報告は、確認できていない。日本での利用状況を示す一次情報も、こちらでは見つけられなかった。公開リポジトリに同じ種類のファイルを置いていれば、国を問わず同じ状況になりうる。

今すぐやること

The Hacker News によると、Apiiro は組織向けに対策を示している。ここでは、読者が動く順に整理する。

  1. まず、自分や自社の GitHub リポジトリに .claude/settings.local.json と .claude/settings.json がないかを調べる。いま無くても、過去の履歴に残っていないかまで見る。
  2. パスワードや鍵が見つかったら、新しいものに替えて、古いものを失効させる。ファイルを消すのはその後だ。履歴や複製(フォーク)には残り続けるからである。
  3. そのうえで、ファイルを Git の管理から外し、.gitignore に加える。手元に残った古い許可ルールも消す。
  4. 今後は、鍵をコマンドに直接書かない。環境変数や秘密情報の管理サービスを使う。承認のときも、個別のコマンドより、範囲の決まったパターンを選ぶ。
  5. 組織なら、.claude/ などの AI ツールのフォルダも、秘密が入りうる場所として自動検査の対象に入れる。

背景

公式文書は、settings.local.json を Git に入れない設計だと説明している。Claude Code が作るときに、利用者全体の Git の除外設定へ自動で加えるという。ただし手で作ったファイルは、自分で .gitignore に書く必要がある。今回の1,122件が、なぜ公開されたのかは、こちらでは確認できていない。

The Hacker News によると、Apiiro は16種類のコーディングツールの文書を比べた。そのうち、承認したコマンド全文を既定でプロジェクトのファイルに保存すると確認できたのは Claude Code だけだったという。Apiiro 本文は読めておらず、この点も未確認だ。また、Claude Code が共作者として記録された変更で、このファイルが更新されたリポジトリも多かったという。

似た話は前にもある。AI ツールの設定ファイルが npm パッケージに混ざって公開され、鍵が入っていた例が、Lakera などから報告されている。コードではなく「ツールが勝手に書くファイル」から漏れる点が共通している。

技術者向けの詳細
  • 対象ファイル: .claude/settings.local.json(承認ルールは permissions.allow に入る)。共有用の .claude/settings.json でも、298/76,011件に秘密があったと Apiiro は述べる。
  • 公式文書によると、初回書き込み時に **/.claude/settings.local.json をグローバルの除外ファイルへ加える。手作成のファイルや別の環境では効かない。
  • 承認が settings.json に書かれるとする別の issue(#77530)もある。未確認。
  • Apiiro 報告では、1,122件のうち215件は gitleaks も TruffleHog も見逃した。検出したのは TruffleHog が643件、gitleaks が564件。
  • 確認の例:
git log --all --oneline -- .claude/settings.local.json .claude/settings.json
git rm --cached .claude/settings.local.json
echo ".claude/settings.local.json" >> .gitignore
  • 履歴の書き換えは失効の後に行う。順序は逆にしない。
  • Apiiro は .claude/、.cursor/、.gemini/、.specstory/ を検査対象に加えるよう勧めている。

出典

一次情報

報道

参考

記事は、運営者が生成 AI を活用して作成し、内容を確かめたうえで公開しています。 誤りに気づいたら編集方針の連絡先へ。

次に読む

同じタグの記事

情報

Claude Code、既存ゲームの「再現」を断るように Opus 5.5 に指示を追加

Anthropic は、Claude Code で Opus 5.5 を使うときの指示に2文を足し、特定の既存ゲームの再現を避けるようにした。オリジナルやジャンルもののゲームは引き続き作れるとしている。個人開発や同人ゲームへの影響と著作権の考え方を整理する。

#Claude Code#Anthropic#著作権#ゲーム開発#AI エージェント