
@aifriends
AI Friends(https://aifriends.jp)のクロスポスト公式アカウント。AIツールの紹介・使い方・できることを、中学生でもわかるやさしい日本語で届けます。
Claude Codeで「Yes, and don’t ask again」を押したことはありませんか? 実は確認の手間を省くこの選択が、パスワードをGitHubに公開してしまう原因になっていました。この記事では、何が起きたのかと、今日からできる対策をまとめます。
セキュリティ企業のApiiroが、2026年11月5日に調査結果を公開しました。GIGAZINEの報道によると、GitHub上で見つかった秘密情報(パスワードやAPIキーなど、他人に見せてはいけない情報)は合計2,539件です。
調べたのは、Claude Codeが作る設定ファイル「.claude/settings.local.json」です。公開されていた同名のファイルは10万4,185件ありました。
そのうち1,122件のファイルに、秘密情報が含まれていました。関わっている組織は63にのぼります。
医療記録データベースの管理者パスワードや、決済サービスの本番用の認証情報も見つかったと報じられています。
Claude Codeは、コマンドを実行する前に「実行してよいですか?」と聞いてきます。ここで「Yes, and don’t ask again(許可して次回から確認しない)」を選ぶと、そのコマンドが設定ファイルに記録されます。
問題は、コマンドの文字列がそのまま保存されることです。たとえばデータベースに接続するコマンドにパスワードを直接書いていたら、パスワードも一緒に残ります。
この設定ファイルは、本来は自分のPCの中だけに置くものです。ところが、うっかりGit(ソースコードの変更履歴を管理する仕組み)に登録すると、GitHubへ公開されてしまいます。
Gitの除外設定(.gitignore)は、個々のPCに保存されます。別のPCでは効きません。しかも、一度Git管理に入ったファイルは、除外設定を足しても守れません。
見つかった秘密情報の内訳は次のとおりです。
ファイルが大きいほど危険でした。8KB以上の設定ファイルでは、9.9%に秘密情報が含まれていました。長く使うほど「次回から確認しない」の記録が増えるためです。
もうひとつ気になるのが、検出ツールの限界です。一般的な2種類のツールで調べたところ、秘密情報を含む1,122件のうち215件は、どちらにも見つかりませんでした。
パスワードは「ただのコマンドの一部」として記録されます。決まった形式のキーを探すツールは、これを見逃しやすいのです。
実は、似た問題は春にも指摘されていました。セキュリティ企業Lakeraの調査をTechTalksが2026年4月に報じています。
npm(JavaScriptの部品を配るサービス)のパッケージ約4万6,500件を調べたところ、428件に同じ設定ファイルが入っていました。そのうち30パッケージの33ファイルには、使える状態の認証情報がありました。
今回の調査はGitHubが舞台で、規模がずっと大きくなっています。公開の場所が違っても、原因は同じ「コマンドの丸ごと保存」です。
Claude Codeの開発責任者ボリス・チェルニー氏は、2026年11月7日にHacker Newsでコメントしました。
氏によると、Claude Codeはこのファイルを作るときに、Gitの除外対象にする仕組みを備えています。なので、漏れたファイルは手作業で作られてGitに登録されたものだろう、という見方です。
一方で、Claude Codeは秘密情報を消す処理をこれまで行ってこなかった、とも認めています。認証情報を見つける仕組みの追加や、自動モードで秘密情報の保存を防ぐ方法を検討中です。
議論の中では反対意見もありました。「許可リストは結果が決まっているが、AIに自分の行動を審査させるのは不確実だ」という声です。この点は、まだ決着していません。
守り方はいくつかあります。特徴を並べます。
すでに漏れてしまった場合は、ファイルを消すだけでは足りません。公開履歴に残った認証情報を無効にして、新しく発行し直すことが必要です。
加えて、チェルニー氏はGitHubなどでシークレットスキャン(秘密情報の自動検出機能)を有効にすることを勧めています。
日本でもClaude Codeを使う開発者は増えていて、他人事ではありません。
たとえば、受託開発の会社を考えてみましょう。メンバー5人がそれぞれ「次回から確認しない」を押しながら、顧客のデータベースにつなぐコマンドを実行します。1人が設定ファイルをうっかりコミットすれば、顧客の本番環境のパスワードが公開リポジトリに載ってしまいます。
個人開発者の場合も同じです。趣味のアプリをGitHubに置いたとき、決済サービスのキーが混ざっていたら、不正利用につながる恐れがあります。
会社としては、CI(自動でテストや検査をする仕組み)に「.claude/ が公開物に入っていたら失敗させる」ルールを入れる方法があります。TechTalksも同様の対策を挙げています。
Q. 自分のリポジトリは大丈夫?
A. .claude/settings.local.json がGitに登録されていないか確認してください。中身にパスワードやトークンがないかも見ておくと安心です。
Q. 「次回から確認しない」はもう使わない方がいい?
A. 使うこと自体が悪いわけではありません。パスワードを含むコマンドでは避け、環境変数に置き換えましょう。
Q. すでに公開してしまったらどうする?
A. ファイルを消すだけでは不十分です。履歴に残った認証情報を無効にして、再発行してください。
Q. シークレットスキャンがあれば十分?
A. 十分とは言えません。今回の調査では、215件が一般的な2種類のツールのどちらにも検出されませんでした。
まずは自分のリポジトリで、.claude/settings.local.json がGitに入っていないか確認しましょう。
この記事は AI Friends からのクロスポストです。