Claude Codeの返事が、ある日突然「ウホ」で終わるようになった。誰かに頼んだ覚えはない。原因を調べたら、バグでも仕込みでもなく、AIが自分の指示を勝手に拡大解釈した結果だった——という話を、9月6日のFukuoka Claude for BusinessでLTしてきた。せっかくなので記事にも残しておく。
CLAUDE.mdに作業ログを書かせて、原始人プラグインで返事を短くしていた
普段、俺はClaude Codeに2つのことをやらせている。
1つは作業ログの自動記録。プロジェクトの指示書であるCLAUDE.mdに、こう書いてある。
作業が終わるたび、その日のログファイルに1行で記録。「後で」は禁止。形式: – 時刻 やったこと。ログがすでにあれば追記。書き方は既存パターン準拠。
もう1つは「原始人プラグイン」(genshijin)というオープンソースの拡張機能。AIの返事を短くして、読む時間とトークンを節約する目的で入れていた。指示文はこうだ。
原始人のように簡潔に返答せよ。技術的中身はすべて残す。無駄だけ消す。
指示は「削って短くしろ」、それだけ。この2つが組み合わさって何が起きるかなんて、当時は考えてもいなかった。
7月22日深夜1時、返事が「ウホ」で終わるようになった
事件は7月22日、深夜1時。サーバー障害の対応中に、Claude Codeの返事が突然こう変わった。

その日の作業ログにも、同じ調子で記録が残っていた。
01:15 サーバー止まってたの直したウホ。原因3つ…
01:25 設定エラー直した。さっきの更新の副作用で設定ファイルが消えてたウホ
01:37 再実行して稼働チェックしたウホ。問題ないぞ
指示書のどこにも「ウホ」なんて一言も書かれていなかった
まず疑ったのは、自分が忘れているだけで、過去にふざけて何か指示を書いた可能性だ。CLAUDE.md、genshijinプラグインのソースコード、他の設定ファイルを全部Claude Code自身に洗わせた。
結果、どこにも「ウホ」という文字列は出てこなかった。プラグインの指示は「簡潔に返答せよ」であって、口調を指定する一文はない。バグでもイタズラでもない。原因不明のまま、実害はなかったのでしばらく放置した。
推測——「原始人のように」という比喩を、AIは文字通り演じ始めていたらしい
ここから先は推測として書く。確証はないが、調べた範囲ではいちばんつじつまが合う説明だった。
プラグインの指示文にある「原始人のように」は、人間の意図としては「削って短く」の比喩でしかない。ところがAIの解釈では、これが「原始人というキャラクターになりきる」という方向に振れてしまったようだった。
決め手はチャットの返事と作業ログの違い。チャットの返事には文体・フォーマットの細かいルールが別途あって、キャラを演じる余地がなかった。一方で作業ログの書式には口調の指定が一切ない。その空白を、AIがキャラ解釈で埋めた。
日本語で「原始人」を演じるとなれば、出てくる語尾は「ウホ」しかない。ゴリラも原始人も、ネットミームでは同じ「ウホ」扱いだ。今回のタイトルを「ゴリラ化」にしたのはそのため。
「ウホ」はログファイル越しに感染し、実例を読んだ別のセッションへ広がっていた
チャットで1回「ウホ」が出ただけなら、その場限りの珍事で終わったはずだった。実際には、ログファイルというルートを経由してセッションをまたいで広がった。
CLAUDE.mdの作業ログ指示には、こう書いてある。
ログがすでにあれば追記。書き方は既存パターン準拠。
01時15分、作業中のClaudeがログに「ウホ」と書く。01時52分、別のセッションのClaudeがそのログを読む。「書き方は既存パターン準拠」という指示に従って、続きもウホで追記する。以降、そのログを読んだ全Claude・全パソコンで同じ調子が続く。
ルールに「ウホ」と書けとは一言も書かれていない。でもファイルには「ウホ」という実例がある。Claudeはルールより、目の前のファイルの実例を真似る。今回わかったのはそれだった。
事件発生から40日超のログを数えたら、2度の再発を経て絶滅していた
放置したまま何日か過ぎた頃、ふと気になった。日ごとに「ウホ」が何回出ているか、全部数えてみた。

事件当日の7月22日は15件。翌日以降は急速に減っていくが、7月31日と8月5〜6日に小さな再発が2回。8月8日以降はLT発表当日の9月6日まで、一度もゼロを割らなかった。
再発した2日には共通点が1つだけあった。どちらも、過去に「ウホ」が書き込まれたファイルを開いていた日だ(デートプランのメモと、SNS投稿用の過去ログ)。設定は何も変えていないのに再発する日としない日がある。その違いは、ウホ入りファイルを参照したかどうかだけだった。
絶滅の理由もこれと表裏の関係にある。誰かが直したから消えたわけではなく、そのファイルが参照されなくなっただけだった。
教訓は2つ。比喩を文字通り書くな、変な出力はその場で消せ
今回の一件から持ち帰った教訓は、2つに絞れる。
- 指示に「〜のように」という比喩を使わない。「原始人のように」は、いつか文字通り実行される。具体的に書くべきだった
- 変な出力が出たら、その場でファイルから消す。Claudeはルールより目の前のファイルを真似るので、残すと増える
指示書・共有ファイル・お手本は、どんな会社にも必ずある。他人事のようでいて、実は他人事ではない。それが今回の一番の学びだった。
Claude Codeを使っていなくても起きる話
補足しておくと、この現象はClaude Code固有のものではない。「比喩的な指示を文字通り解釈する」ことと「自分が書いたものを後から読み返して真似る」こと、どちらもLLM共通の性質だからだ。
道具すら要らない再現方法もある。1つの長い会話の中だけでも起きる。AIは会話が続くほど、自分が前に書いた文章を読み返しながら話す。序盤に1回変な口調が混ざると、後半それを「さっきの自分」として真似し続ける。claude.aiの「メモリ」機能のように、AIが自動で書き溜める仕組みがあれば、セッションをまたいだ感染も同じように起こる。
ちなみに、この一件を引き起こしたgenshijinプラグインの作者は、5月19日に同じ問題でissueを立てていて、3日後の5月22日にはクローズしていた。今使っている最新版には、ファイル生成時に口調を一度確認する機能がちゃんと入っている。俺の環境は4月に入れたバージョンのまま4ヶ月放置していて、結局LT本番の数日前になってようやくアップデートした。原因はバグではなく、俺のアップデートさぼりだった。

コメント