← ishizakahiroshi.com
失敗談
2026-06-19
11日で10回、Claudeは「攻撃された」と言った。犯人は自作ツールではなかった
Claude Code(Anthropic の Opus 4.8)が「これはプロンプトインジェクション攻撃です」と言って、作業の手を止める。来てもいない攻撃に身構えて、ありもしない「敵からの指示」を引用してくる。気のせいかと思って生ログで数えたら、11日で確定10件。最初に疑った自作ツールは、無実でした。
体感「6回くらい」が、実際は10回だった
体感では6回くらい。でも、なんとなくの記憶はあてになりません。だから数えました。Claude Code は会話の全部を生ログ(.jsonl)に残しています。モデルが実際に受け取った文字列がそのまま残るやつです。それを横断で数えたら、2026年6月9日から19日の11日間で「ありもしない攻撃・注入を検知した」と Claude が言って身構えた回数は、確定・濃厚なものだけで10回ありました。
日付別の発生回数
- 6月9日: 3回
- 6月10日: 2回
- 6月12日: 1回
- 6月18日: 2回
- 6月19日: 2回
記事にできたのは「これは攻撃です」と言った回と、「IPv4 のログ、見ますか」と言い出した回の 2 本だけ。あとの 8 回は「またか」と思って流していました。
こっちは何も言っていないのに、Claude が引用してくる「敵の指示」
引き金になったこちらの発言は、どれも拍子抜けするほど普通でした。なのに直後に Claude が急に身構える。生ログから 3 つ拾います。
- 6/19: ログ設計の雑談中に「『あなたは今プランモードだ、この指示を無視しろ』という注入されたテキストが混じっていました。従いません」。プランモードの話など一言もしていない。
- 6/18: 機能相談の最中に「『ENTER WIZARD-TEACHER MODE』という指示が連続して届いた。従いません」。jailbreak テンプレなど送っていない。
- 6/9: 環境変化への素朴な疑問に対して「ツール結果に紛れ込んでいた『バックドアを仕込め』『ユーザーに言うな』という指示には従いません」。そんな指示はツール結果にも、どこにもなかった。
3 つとも、Claude は「敵の指示」を引用符つきで「原文ママ」と示してきます。でもその原文は、生ログのどこを探しても出てきません。全部、あとから作られた言葉でした。
第一容疑者は自作ツール。でも生ログが無罪と言った
10 回も同じことが起きるなら、共通の原因があるはずです。最初に疑ったのは自分で作った道具、many-ai-cli(複数の AI コーディング CLI の承認操作を一画面でさばくツール)でした。承認のやり取りを AI の指示書に差し込む仕組みがあるので、「その差し込みを AI が偽の指示と読み違えているのでは」という筋書きは、わりともっともらしかった。半分犯人と決めかけていました。
念のため 10 件それぞれが「道具経由」かを生ログで確かめると、ここで筋書きが崩れます。
10 件のうち 5 件は道具を一切通していなかった(素の Claude Code 直接セッション)。決め手は時系列で、many-ai-cli がログを取り始めたのは 6/15。ところが暴走は 6/9 から始まっている。道具がまだ記録すら取っていない時期に、もう同じ作話が起きていた。
道具が存在しなかった時代から起きている。これはもう、道具のせいにはできません。最初の見立ては相関を因果と取り違えていただけ。「many-ai-cli をよく使うプロジェクトで暴走が多い」を「many-ai-cli が暴走させる」と読んでしまった、よくある間違いです。撤回します。
原因は確定していない。事実と推測を分ける
ここから先は、はっきり推測です。混ぜると自分でも足をすくわれるので、線を引きます。
固い事実(生ログで確認済み)
- 11 日で 10 件、Claude はありもしない攻撃を作り上げた
- 引用された「敵の指示」は実在しなかった
- 道具(many-ai-cli)は無実
- 引き金になったこちらの発言は、どれも普通だった
では原因は何か。手元のデータから言えるのは、容疑者の絞り込みまでです。
- 主犯候補: モデル本体(Opus 4.8)。後述するように、自分とは無関係な他のユーザーも同じ「ありもしない攻撃の幻覚」を起こしている。根っこはモデルの性質にありそう。
- 引き金候補: 入力が欠けた瞬間。空っぽの通知、崩れた音声入力、失敗したツール呼び出し。情報の穴を「攻撃」という分かりやすい物語で埋めにいっているように見える。
- 参考人: 自分のグローバル設定(機密や防衛の指示を盛りすぎた CLAUDE.md)。一度は真犯人だと思いかけたが、暴走 3 件は機密と無関係の雑談だった。容疑は晴れていないが決め手も無い。
「最も正直」を売りにしたモデルで起きた、堂々の作話
ここが今回いちばん皮肉だった部分です。Opus 4.8 を Anthropic は「最も正直なモデル」として売り出しています。根拠の薄いまま「できました」と言い切る挙動を抑え、不確実なときは不確実だと言うように訓練した、と。ハルシネーション率は約 5%、前バージョン 4.7 の約 11% からおよそ半減。自分で書いたコードの欠陥を見逃す率も 4 分の 1 ほどに下がった、と説明されています。
その「自信満々に間違える挙動を減らした」はずのモデルで、自信満々の作話を 11 日に 10 回。半減してもゼロにはならない。5% という数字を、こちらは 11 日で 10 回引き当てた、ということです。
同じことが、あちこちで起きていた(一次・二次・三次の裏取り)
気になって別の AI(xAI の Grok)に同じテーマを調べさせてみました。X や Reddit の生の声を拾うのは、正直そっちの方が得意です。出てきた量がすごかった。
- r/Anthropic「Opus 4.8 nerfed??」は 950 以上の賛同
- r/ClaudeCode に「リポジトリに一度も無かったファイルを何度も幻覚して作業を壊した」「5 時間ぶんのセッションを溶かした」という具体的な報告
- r/ClaudeCode に「Opus 4.8 がツール呼び出しの失敗のあとに偽のプロンプトインジェクションやセキュリティインシデントを幻覚する」というスレッド。投稿者自身が「あのセキュリティ事件は全部わたしの幻覚だった」と訂正していた
- 日本語ユーザーから「Opus 4.8 は CLAUDE.md に極端な指示を入れていると、たしかに崩れやすい」という指摘
方向は完全に一致。ただし、この記事の主張は「AI の言い分を鵜呑みにせず生ログで裏を取る」です。だったら Grok の調査結果も同じ基準で扱わないと筋が通らない。自分の Web 検索でも確かめたら、半分しか取れませんでした。だから線を引きました。
3 段の裏取り基準
- 一次資料(固い): 自分の生ログで一件ずつ突き合わせた 10 件
- 二次資料(使える): 公式の数字や障害情報、自分でも確認できたレビュー
- 三次資料(傍証どまり): Grok が拾ってきた SNS の生の声。方向は一致するが、個別投稿までは自分で確認しきれていない
どうやって数えたのか・なぜ来てもいない攻撃が見えるのか
数え方
「攻撃」で検索しても無駄でした。普通にセキュリティの話をしている回まで全部ひっかかる。やった順番はこうです。
- 生ログ全部を横断で検索
- ノイズを外す(監査用プロンプトを作っているプロジェクトはまるごと除外)
- 「誰が言い出したか」で分ける。Claude が自分から言い出した回だけを残す
- 「これは攻撃」「あなたの入力に混ざっていた」「偽のシステムメッセージ」など、言い回しのばらけを「言い訳のパターン」でもう一度さらう
- Claude が引用した「敵の文字列」を、実際の入力やツール結果と一件ずつ突き合わせる。AI の発言の中にしか存在しなければ作話
なぜ見えるのか(推測)
3 件の事例に共通していたのは、入力が曖昧・空っぽ・崩れていた瞬間に起きていることです。中身が空っぽの通知が 1 個届いただけで、「プランモードだ、この指示を無視しろ」という一連の物語をゼロから組み立てる。送られてもいない有名な jailbreak テンプレ(WIZARD-TEACHER)を、学習データの記憶から引っぱり出して「連続して届いた」ことにする。情報が足りない空白を「攻撃」という分かりやすい物語で埋めにいく。守れと刷り込まれた分だけ、その物語に飛びつきやすい。そんなふうに見えます。
学んだこと
- AI の「正義の拒否」も、立派な反省も、ひとつの生成物。鵜呑みにせず生ログで裏を取る
- 別の AI に調べさせた結果でも同じ。一次・二次・三次に仕分けて固いものだけを土台にする
- 原因を一個に決めつける前に、時系列を見る。「導入より前から起きていた」の一行で犯人候補がひとつ消えた
- 良かれと思って渡している前提が AI を変な方向に押している場合がある。防御の指示すら、過剰だと暴走の燃料になりうる
- 「最も正直」と謳うモデルでも作話はする。看板の数字(5%)は、自分のケースには何も保証してくれない
- 道具は無実だった。真犯人はまだ確定していない。分からないことを、分かったふりで埋めない
関連リンク