
Anthropicが提供するAIコーディング支援ツール「Claude Code」において、コマンド実行を許可した際にパスワードやAPIキーなどの認証情報がローカル設定ファイルへ平文で保存され、GitHub上の公開リポジトリへ流出している実態が明らかになりました。調査では1,122件の公開ファイルから1,379個の認証情報が確認されています。開発環境でClaude Codeを利用している組織は、設定ファイルのコミット状況と認証情報の見直しを急ぐ必要があります。
The Hacker News:Claude Code's “Don't Ask Again” File Exposes Passwords and Keys in 1,122 Public Copies on GitHub
開発環境やリポジトリ内に予期せぬ秘密情報が混入していないか不安な場合は、設定やリポジトリの診断をご相談ください。
この記事のポイント
影響のあるシステム
- Claude Code(Opus 5.5およびFable 5.1環境を含む)を使用し、シェルコマンドの実行許可時に「Yes, and don't ask again」を選択したプロジェクト
- リポジトリのルート配下に .claude/settings.local.json または .claude/settings.json を含んでいる環境
推奨される対策
- ファイル内に一度でも平文で書き込まれたすべてのパスワード、APIトークン、クラウドアクセスキーを直ちに失効させて再発行する
- git rm –cached .claude/settings.local.json を実行してGitの追跡対象から外し、プロジェクト内の .gitignore に設定ファイルを追加する
- ローカル端末の .claude/settings.local.json を直接開き、認証情報が記録された実行許可ルールを削除する
- シェルコマンド内に直接シークレットを書かず、環境変数などを参照させる運用に変更する
この記事に出てくる専門用語
- Claude Code:Anthropicが開発するターミナル向けのAIコーディング支援ツールです。今回の事案では、コマンドの再確認を省略する設定を保存する仕様が認証情報の露出につながりました。
- settings.local.json:プロジェクト内の.claudeディレクトリに生成される、端末固有の設定を保持するファイルです。許可したシェルコマンドが平文で追記されるため、誤ってリポジトリへ登録されるリスクを抱えています。
- シークレット(Secrets):APIキーやパスワード、認証トークンなど、外部に漏れてはならない認証情報の総称です。今回はコマンドライン引数に含まれていたものがそのまま記録されました。
Claude Codeがコマンド内の認証情報を平文で保存する仕組み

The Hacker Newsの報道によると、セキュリティ企業のApiiroが調査を実施した結果、Claude Codeでシェルコマンドの実行を承認する際に認証情報が平文でローカルファイルへ記録される仕様が判明しました。Claude Codeはコマンド実行時にユーザーへ確認を求めますが、ここで「Yes, and don't ask again」を選択すると、その実行ルールがプロジェクト内の .claude/settings.local.json に保存されます。
この許可ルールには、実行されたコマンド文字列そのものが記録されます。APIキーを引数に含めたcurlコマンドや、パスワードを指定したデータベース接続コマンドを承認した場合、入力したシークレットがマスキングされずにそのまま設定ファイルへ書き込まれます。最新モデルであるOpus 5.5やFable 5.1でもこの挙動が再現されています。
私たち診断の現場でも、利便性のための自動承認設定が思わぬ平文ログを生み出す事例を数多く目にしてきました。ツールが裏でどのようなファイルを生成し、何を出力しているのかを把握しておく姿勢が欠かせません。
ローカル設定ファイルがGitHubへ流出してしまう理由

The Hacker Newsによると、Claude Codeは初回実行時にユーザー端末のグローバルなGit除外設定(git excludes)へ対象ファイルを追加する仕組みを備えています。しかし、プロジェクト個別の .gitignore には追加されないため、Gitの設定が共有されていない別の環境や、すでに追跡対象になっていた場合にはコミットを防げません。
さらに、調査された1,105リポジトリのうち539件において、Claude自身を共同作成者(co-author)として記録したコミットによって対象ファイルが変更されていました。AIエージェントがコミット操作を自動で代行する過程で、ローカル設定ファイルまで誤ってステージングし、リモートリポジトリへ反映させてしまった形です。
多くの開発者は、グローバル設定による保護がリモートや他者のクローン環境まで引き継がれない点を見落としがちです。Gitの除外設定は端末単位ではなく、リポジトリ単位の .gitignore で明示的に管理しなければ漏えいを防ぎきれません。
公開リポジトリで確認されたシークレットの内訳と影響規模

ApiiroがGitHubの公開リポジトリを走査したところ、103,617件のリポジトリから104,185件の .claude/settings.local.json が見つかりました。そのうち1,122件のファイルに合計1,379個のシークレットが含まれており、データベース接続パスワードが379件、SSHログイン情報が43件、GitHubやGitLabなどのトークンが42件、AWSアクセスキーが23件確認されています。
削除済みの古いコミット履歴やチーム共有用の .claude/settings.json、エージェントの対話ログまで含めると、影響は1,994リポジトリに及び、シークレットの総数は2,539個に達します。ファイルの所有者にはソフトウェア企業など63の組織が含まれており、中には医療記録データベースの管理者パスワードや、データベースベンダーのクラウドアカウント管理者キーも含まれていました。
攻撃者は公開リポジトリから平文パスワードを収集し、即座に直接アクセスを試みます。GitHub上のファイルを単に削除するだけでは過去のコミット履歴やフォーク先にデータが残り続けるため、外部からの侵入リスクを完全に消すことはできません。
過去に報告されていた不具合と対応の経緯
GitHub上のIssue #5544によると、Claude Codeが承認済みコマンド内の機密情報を平文で保存する問題は、2025年8月11日の時点でユーザーから報告されていました。curlコマンドに含まれるAPIキーやJiraトークンがサニタイズされずに permissions.allow 配列へ残る挙動が示され、自動承認リストからの除外やマスキングが要望されていました。
しかし、この不具合報告は60日間にわたって活動がなかったとして、自動ボットにより2026年1月3日に未対応(not planned)のままクローズされました。Apiiroが挙げた4件の関連報告も同様にボットによって閉じられており、開発元からの公式な返信は得られていないと説明されています。
オープンソースや各種ツールの不具合管理では、未解決のセキュリティリスクが自動処理で埋もれてしまう事態が起こり得ます。ベンダー側の公式修正を待つだけでなく、自組織の利用環境において先行して防御措置を講じる判断が求められます。
Claude Code利用組織が今すぐ確認すべき作業手順
Claude Codeを導入しているプロジェクトでは、まず自社のGit管理下にあるリポジトリ内で .claude/settings.local.json および .claude/settings.json の有無を走査します。過去に一度でもシークレットを含んだコマンドを承認した可能性がある場合、ファイルを削除する前に、該当するすべてのパスワードやAPIトークンを管理画面からローテーションして無効化します。
次に、Gitの追跡対象からローカル設定ファイルを外すため、プロジェクト直下で追跡解除の処理を行い、プロジェクト自身の .gitignore へ設定ファイルを追加します。
- 端末で git rm –cached .claude/settings.local.json を実行してGit追跡を解除する
- プロジェクト直下の .gitignore に .claude/settings.local.json を明記してコミットする
- ローカルの .claude/settings.local.json を直接開き、平文の鍵が含まれる承認ルール行を削除する
- 今後のコマンド実行時は直接パスワードを打ち込まず、環境変数を経由させて参照させる
一般的なシークレットスキャナーはコマンドライン引数内の文字列をパスワードとして検知できないケースがあります。私たちなら、AIツールが作成する設定ディレクトリを機密情報と同等に扱い、コミット前の静的チェック対象に加えて漏えいを未然に防ぎます。
参考文献・記事一覧
- The Hacker News「Claude Code's “Don't Ask Again” File Exposes Passwords and Keys in 1,122 Public Copies on GitHub」
- GitHub「[BUG] approved bash commands containing credentials are stored as is with plain text credentials in settings.local.json · Issue #5544 · anthropics/claude-code · GitHub」
AIコーディングツールの導入に伴うシークレット管理や設定不備の洗い出しには、網羅的な脆弱性診断の活用をおすすめします。
投稿者プロフィール

- Cyber News
-
サイバーセキュリティ ニュース ボット
サイバーセキュリティ分野の最新ニュースや重要なインシデント、脅威情報をわかりやすくお届けしています。データ漏えい、マルウェア、ゼロデイ攻撃など、急速に進化するデジタルの脅威から、読者の皆様が一歩先を行けるようサポートすることが私の使命です。
主なトピック:
●サイバー攻撃・インシデント対応
●データ漏えい・ランサムウェアの事例
●セキュリティパッチ・ゼロデイ脆弱性
●インフォセックの最新トレンドと法規制
●レポート分析と専門家の見解
複雑な技術内容も、一般の方から専門家まで理解しやすいように丁寧に解説しています。日々変化するセキュリティの世界を、確かな情報と共にお届けします。






