All
SaaS管理
デバイス管理
セキュリティ対策
脅威・インシデント
IT基盤・インフラ
情シス業務・組織形成
AI / テクノロジー
プロダクト
イベントレポート
その他
ガバナンス

新着記事

もっと見る

>

>

Claude Codeの『今後確認しない』で秘密情報が平文に|情シスが確認するファイルと承認ルール

Claude Codeの『今後確認しない』で秘密情報が平文に|情シスが確認するファイルと承認ルール

Claude Codeの『今後確認しない』で秘密情報が平文に|情シスが確認するファイルと承認ルール

Claude Codeの『今後確認しない』で秘密情報が平文に|情シスが確認するファイルと承認ルール

公開日

Claude Codeで承認画面の「Yes, and don't ask again」(今後確認しない)を選ぶと、承認したコマンドがプロジェクト内の.claude/settings.local.jsonに保存されます。コマンドにパスワードやトークンが含まれていると、その値も平文で残ります。セキュリティ企業のApiiroは2026年11月5日、このファイルが公開GitHubリポジトリに多数置かれ、データベースのパスワードやクラウドのキーが読める状態だったと報告しました。本記事では、情シス・セキュリティ担当・開発部門の管理者向けに、秘密情報が残る仕組み、報告の規模、今週の対応手順、組織で保存を止める設定を整理します。情報は2026年11月10日時点です。

Claude Codeの利用時に秘密情報が平文保存されるリスクと、対象ファイルの点検から認証情報の交換手順までを解説したインフォグラフィック。

Claude Codeの「今後確認しない」で何が起きたか

本記事のポイント

  • 社内のリポジトリとコンテナイメージで.claude/settings.local.jsonを探します

  • 中身に秘密情報があれば、ファイルの削除より先にその認証情報を交換します

  • 組織が配布する設定(managed settings)で、承認ルールの保存そのものを止めます

Claude CodeでBashコマンドなどの承認画面が出たとき、「Yes, and don't ask again」を選ぶと、そのgitリポジトリの直下にある.claude/settings.local.jsonに、permissionsのallowルールとして保存されます。Bashコマンドの承認は、リポジトリとコマンドの組み合わせごとに保存されます。出典:Claude Codeの権限設定のドキュメント

保存されるルールには、「npm test *」のようなパターンの形と、*を含まない形があります。*を含まないルールは1つのコマンドに完全一致する形で、承認したコマンドの全文がそのまま書き込まれます。複合コマンドでは、承認が必要なサブコマンドごとに別のルールが保存されます(最大5つ)。

コマンドの引数にパスワードやAPIトークンを直接書いていると、その値もルールの中に平文で残ります。この挙動は2025年8月11日にGitHubのIssue #5544で報告されていました。このIssueは2026年1月3日、60日間動きがないとしてbotが自動でクローズしています。出典:Claude CodeのIssue #5544

gitの除外は、そのPCにだけ効きます。Claude Codeは、gitリポジトリで初めてこのファイルを書くとき、そのPCのグローバルなgit除外ファイル(core.excludesFileなど)に**/.claude/settings.local.jsonを追加します。リポジトリ自身の.gitignoreには書きません。別のPC、別のclone、コンテナのビルド、コピーしたフォルダでは除外が効かず、ファイルがコミットやイメージに入ることがあります。公式ドキュメントは、ファイルを手で作った場合は自分で.gitignoreに追加するよう案内しています。出典:Claude Codeの設定ファイルのドキュメント

VS Code拡張では、承認の保存先としてプロジェクトの共有ファイル(.claude/settings.json)も選べます。CLIが書き込むのはローカルのファイルだけです。

Claude Codeで「今後確認しない」を選択した際に秘密情報が平文保存され外部へ流出する経路

▲ Claude Codeで「今後確認しない」を選択した際に秘密情報が平文保存され外部へ流出する経路

Apiiroの報告で分かった規模

報告は、ApiiroのShmulik Cohen氏とMatan Giladi氏によるもので、2026年11月5日に公開されました。公開GitHubのデータを11月1日から3日に集め、影響を受けた組織には11月2日と3日に連絡しています。数値は、Apiiroの原典を読んだiTWireの報道とiTnewsの報道によります。

項目

件数

公開されている.claude/settings.local.json

104,185件(103,617リポジトリ)

実際の秘密情報を含むファイル

1,122件(約1.1%)

上記ファイル内のユニークな秘密情報

1,379件

git履歴・共有用のsettings.json・会話ログまで含めたユニークな秘密情報

2,539件(1,994リポジトリ)

秘密情報を含むファイルが既定ブランチに置かれていた期間

中央値217日(2026年11月2日時点)

2,539件は、settings.local.jsonに加えて、git履歴、共有用のsettings.json、エージェントの会話ログまで数えた件数です。ファイル単独の件数とは数えている範囲が違います。

種類の例として、データベースのパスワード379件、Supabaseのservice-roleキー122件、公開サーバーへのSSHログイン43件、GitHub・GitLab・npmのトークン42件、AWSのキー23件が挙げられています。

流出したファイルの多くは個人の開発者のものでした。組織は63あり、学生団体から既存のベンダーまで含みます。例として、データベースベンダー自身の管理権限付きクラウドAPIキー、ソフトウェア会社の本番のSquareトークン、医療記録アプリのクラウドデータベースのオーナーパスワードが挙げられています。

よくあるスキャナーでは見つからないものがあります。秘密情報を含む1,122ファイルのうち、gitleaksが検出したのは564件、TruffleHogは643件で、215件(約19%)はどちらも検出できませんでした。コマンドの中に書かれたパスワードは、既知のキーの形式に当てはまらないためです。スキャンで何も出なかったリポジトリでも、承認ルールの中身は目で確かめます。

追跡できた1,105リポジトリのうち539件では、Claudeを共同作成者とするコミットがこのファイルを変更していました。すべての流出をClaudeが持ち込んだとは言えません。Apiiroは16のコーディングエージェントを文書で比べ、承認したコマンドの全文を既定でプロジェクト内のファイルに書くのはClaude Codeだけだったとしています。出典:GitGuardianによる原典の要約

調査の限界

Apiiroは認証情報を実際に試していません。調べたのは露出のリスクで、侵害が実証されたわけではありません。連絡した組織のうち1社は、露出したキーが有効だったと確認しました。Apiiroはアプリとエージェントのセキュリティ製品を販売する会社で、数字は同社の調査結果であり、第三者が再現したものではありません。

GitGuardianの続報とGitHub以外からの流出

シークレット検出の製品を提供するGitGuardianは2026年11月9日、別の数え方による結果を公開しました。同社製品の宣伝を含む資料です。2025年1月から2026年11月7日までに公開GitHubへpushされたファイルと、Docker Hubのイメージを調べています。出典:GitGuardianのブログ

調べた対象

ユニークな秘密情報

検出時点で有効

.claude/settings.local.json

31,088件(23,276リポジトリ)

5,343件

.claude/settings.json

8,271件

1,283件

CLAUDE.md

6,155件

2,537件

Docker Hubのイメージ

613件

99件

有効だったものには、Postgresの接続文字列1,955件、GoogleのAPIキー941件、SSHのパスワード292件などがあります。月別では2026年4月の12,535件が最多で、10月には959件まで減りました。減った理由はGitGuardianも分からないとしています。認証情報そのものを保存する.claude/.credentials.jsonも、371リポジトリで見つかりました。

コンテナイメージからも流出します。Docker Hubでは、1つの有効なCloudflareのAPIトークンが559のタグに入っていました。リポジトリ側でファイルを消しても、配布済みのイメージには残ります。

Apiiroの数字は「現時点で公開されているファイル」、GitGuardianの数字は「期間中にpushされたもの全体」を数えています。対象が違うため、両社の件数は並べて比べられません。

Anthropic側の反応と修正状況

Anthropicの公式発表やセキュリティ勧告は出ていません。反応は、Claude CodeチームのBoris Cherny氏がHacker Newsに書いたコメント(2026年11月7日 UTC)です。

氏は、これまで秘密情報の除去はしてこなかったが、防ぐ方法を検討していると書きました。Claudeがファイルを作るときは自動でgitの除外に入れるため、今回の例は手で作ってコミットしたものだという見解も示しています。そのうえで、権限ルールよりauto modeを使うこと、どのエージェントを使う場合でもシークレットスキャンを有効にすることを勧めました。

別の返信では、auto modeで検知する、基本的なシークレットスキャンを組み込む、などの案を試作すると書いています。「auto modeでも同じことが起きるのでは」という指摘には、その通りだと認めました。出典:Hacker Newsのコメント(1、2、3)

手で作ってコミットしたという見方には、調査した2社が反論しています。Apiiroは、Claudeを共同作成者とするコミットがこのファイルを変更していた例を挙げています。GitGuardianは、調べた秘密情報がすべて承認画面が書き込む形のルールに入っていたとしています。

修正は入っていません。最新版のv2.1.322まで、承認ルール内の秘密情報を伏せる変更はありません。出典:Claude CodeのCHANGELOG。製品側の変更を待たずに、保存済みのファイルの点検と認証情報の交換を進めます。

今週やること:ファイルの検索と認証情報の交換

Apiiroの推奨(iTnewsの報道)とGitGuardianの推奨をもとに、手順を並べます。

  1. ファイルを探す:社内のリポジトリ(現在のブランチとgit履歴)と、社内で作ったコンテナイメージから.claude/settings.local.jsonを探します。共有用の.claude/settings.jsonとCLAUDE.mdも対象に含めます。履歴はgit log --all --full-history -- .claude/settings.local.jsonで、ファイルが存在したコミットを確認できます。

  2. 中身を確かめる:permissionsのallowに入っているコマンドを読み、パスワード、トークン、接続文字列が引数に含まれていないかを確認します。スキャナーで検出されなかったファイルも目で確認します。

  3. 削除より先に交換する:ファイルに入ったことのある秘密情報は、片付けより先にすべて交換(ローテーション)します。履歴に残っていれば、ファイルを消しても読めるためです。交換の一般的な手順はAPIキー漏洩対策とローテーションの記事にまとめています。

  4. gitの追跡から外す:git rm --cached .claude/settings.local.jsonで、ファイルを追跡の対象から外します。

  5. .gitignoreと.dockerignoreに追加する:各リポジトリの.gitignoreと.dockerignoreに.claude/settings.local.jsonを追加します。PCごとのグローバルな除外に頼らず、リポジトリの側で除外します。

  6. 手元のルールを削除する:開発者の手元のファイルからも、秘密情報を含むルールを削除します。Claude Codeの/permissionsで確認・削除できます。

Claude Codeの承認ルールに残った秘密情報の点検手順(ファイルの検索から除外設定まで)

▲ Claude Codeの承認ルールに残った秘密情報の点検手順(ファイルの検索から除外設定まで)

再発を防ぐ使い方

  • 秘密情報はコマンドに直接書かず、環境変数で渡します。

  • 単発のコマンドではなくパターンで承認します。Bash(curl:*)のような広すぎるパターンは避けます。

  • セキュリティチームは、.claude/、.cursor/、.gemini/、.codex/、.mcp.json、CLAUDE.mdを.envと同じく秘密情報を含みうるファイルとして扱い、コミット前、CI、履歴、コンテナレジストリのスキャン対象に加えます。

パスワードをAIに渡さずに使う仕組みは、1Password for Claudeの解説で扱っています。

組織で承認ルールの保存を止める設定

Claude Codeには、組織が配布する設定(managed settings)があります。配置場所は、macOSが/Library/Application Support/ClaudeCode/managed-settings.json、LinuxとWSLが/etc/claude-code/managed-settings.json、WindowsがC:\Program Files\ClaudeCode\managed-settings.jsonです。MDMやclaude.aiの管理コンソールからも配布でき、反映はClaude Codeの/statusで確認できます。出典:managed settingsのドキュメント

allowManagedPermissionRulesOnlyをtrueにすると、承認ルールの保存が止まります。ユーザー・プロジェクト・ローカルのallow・ask・denyルールが無視され、承認画面から「常に許可」の選択肢が消え、新しいルールは保存されなくなります。この項目はmanaged settingsでのみ設定できます。開発者の手元の許可ルールも効かなくなるので、業務に必要なルールはmanaged settingsの側で配ります。出典:Claude Codeの設定項目の一覧

設定

効果

注意点

allowManagedPermissionRulesOnly: true

手元のallow・ask・denyルールの無効化、新しいルールの保存停止

業務に必要なルールのmanaged settingsでの配布

permissions.deny(Read(./.env)、Read(./.env.*)、Read(./secrets/**)など)

指定したファイルの読み取り禁止

ファイル名を指定しないコマンド・任意のサブプロセスには効果なし

sandbox.enabled、sandbox.credentials.envVars

OSレベルでの実行の制限、環境変数のマスク

既定はオフ、対応OSはmacOS・Linux・WSL2

permissions.disableBypassPermissionsModeを"disable"

すべての確認を飛ばすモードの使用禁止

―

hooks(PreToolUse)、allowManagedHooksOnly

権限ルールの評価前のコマンド検査と停止、組織のフックだけの実行

検査する内容の組織での定義

出典:サンドボックスのドキュメント、権限モードのドキュメント。auto modeは、公開リポジトリへの秘密情報のpushを既定でブロックする操作の一つに挙げられています。承認ルールの保存の件はauto modeでも起きうると、Claude Codeチームの担当者が認めています。auto modeを使うことだけを対策にせず、上の設定と組み合わせます。

GitHub側の設定

機能

内容

利用の条件

シークレットスキャン

リポジトリ内の秘密情報の検出

公開リポジトリでは無料・自動、組織の非公開リポジトリではGitHub Secret Protectionが必要

push protection

push時の秘密情報のブロック

Secret Protectionが前提、リポジトリ単位では既定でオフ、組織のセキュリティ設定(security configurations)で一括有効化

カスタムパターン

正規表現で定義した文字列の検出

push protectionの対象にも設定可能

AIによる検出

パスワードのような形の決まっていない秘密情報の検出

push protectionでのAI検出はパブリックプレビュー

出典:シークレットスキャンの概要、push protectionの概要、カスタムパターンの定義。push protectionでのAI検出はプレビューの段階のため、パスワードの混入はClaude Code側の設定でも防ぎます。Claude Codeを組織で使うときの統制全体は、Claude Codeの企業利用の統制で解説しています。

AIコーディングツールの利用者と認証情報の持ち主を台帳で把握する

見つかった秘密情報を交換するには、その認証情報がどのSaaSの、誰の持ち物かを特定する必要があります。ファイルを書いた開発者と、キーを発行したアカウントの持ち主が同じとは限りません。

  1. 社内で誰がClaude Code、GitHub Copilot、Cursorなどを使っているかを把握します。

  2. 見つかった認証情報ごとに、属するSaaSとアカウントの持ち主を台帳で特定します。

  3. 持ち主に交換を依頼し、完了するまで台帳で追います。

マネーフォワード Adminaは、Google WorkspaceやMicrosoft 365(Entra ID)と連携すると、社員が会社アカウントのログインで使っているSaaSをシャドーITとして検知し、サービスごとの利用者と最終アクセスを一覧で確認できます。GitHub、Claude、Cursorなどの開発系SaaSの利用者を把握する用途に使えます。SaaSの契約・アカウントを台帳で管理し、退職者のアカウントや使われていないアカウントを洗い出すこともできます。

Adminaが扱うのは、SaaSの利用者と契約・アカウントの情報です。リポジトリやファイルの中身の点検は、前章のシークレットスキャンで行います。

連携先のアプリの権限を見直す手順はサードパーティ製アプリの棚卸し、会社が把握していないAIツールの扱いはシャドーAI対策で解説しています。

秘密情報対応と台帳管理における開発部門と情シスの役割分担

▲ 秘密情報対応と台帳管理における開発部門と情シスの役割分担

開発系SaaSの利用者の把握や台帳の作り方は、無料相談・デモで相談できます。

よくある質問

Q:自社も対象ですか?

A:Claude Codeを使っていて、承認画面で「今後確認しない」を選んだことがあるリポジトリは対象です。社内のリポジトリとコンテナイメージで.claude/settings.local.jsonを探し、承認ルールにパスワードやトークンが入っていないかを確認します。

Q:ファイルを消せば済みますか?

A:済みません。git履歴やコンテナイメージに残っていれば、ファイルを消しても読めます。ファイルに入ったことのある秘密情報は、片付けより先にすべて交換します。

Q:auto modeなら安全ですか?

A:auto modeのドキュメントは、公開リポジトリへの秘密情報のpushを、既定でブロックする操作の一つに挙げています。承認ルールの保存の件はauto modeでも起きうると、Claude Codeチームの担当者が認めています。managed settingsのallowManagedPermissionRulesOnlyや、シークレットスキャンと組み合わせます。

Q:Claude Code以外のツールは大丈夫ですか?

A:Apiiroが16のコーディングエージェントを文書で比べた範囲では、承認したコマンドの全文を既定でプロジェクト内のファイルに書くのはClaude Codeだけでした。.cursor/、.gemini/、.codex/、.mcp.jsonも秘密情報を含みうるファイルとして、スキャンの対象に加えるよう推奨されています。

Q:Anthropicは修正しましたか?

A:最新版のv2.1.322まで、承認ルール内の秘密情報を伏せる変更は入っていません。公式発表やセキュリティ勧告も出ていません。Claude Codeチームの担当者は、Hacker Newsで防ぐ方法を検討し、案を試作すると書いています。

まとめ

  • 「今後確認しない」で承認したコマンドは.claude/settings.local.jsonに保存され、含まれるパスワードやトークンも平文で残ります。gitの除外はそのPCにだけ効きます。

  • 社内のリポジトリ・git履歴・コンテナイメージでファイルを探し、秘密情報があればファイルの削除より先に交換します。

  • managed settingsのallowManagedPermissionRulesOnlyで承認ルールの保存を止め、GitHubのシークレットスキャンやpush protectionと組み合わせます。

​

本記事の内容に誤り等がございましたら、こちらからご連絡ください。

監修

Admina Team

情シス業務に関するお役立ち情報をマネーフォワード Adminaが提供します。

SaaS・アカウント・デバイスの管理を自動化し、IT資産の可視化とセキュリティ統制を実現。

従業員の入退社対応や棚卸し作業の工数を削減し、情報システム部門の運用負荷を大幅に軽減します。

中小企業から大企業まで、情シス・管理部門・経営層のすべてに頼れるIT管理プラットフォームです。