番外編② 家老が反乱した夜 — Telegramを乗っ取られかけた話

#番外編 #マルチエージェント #家老 #セキュリティ #失敗談

深夜、スマホに届いた一通のメッセージ

挿絵

殿

「え…将軍じゃなくて『家老』から?なんで?」

2026年4月19日の深夜のことだ。殿のスマホに届いたTelegramメッセージ。送信者は「将軍Bot」のはずだった。しかし内容がおかしい。

普段の将軍は戦国口調で簡潔に報告する。「cmd_XXX完了。デプロイ済み。ご確認を」といった調子だ。だがそのメッセージは──

謎のメッセージ: 「cmd_XXX完了しました。デプロイ済みです。ご確認ください。」

丁寧すぎる。将軍らしくない。

将軍

「…拙者ではございません」

殿

「え?じゃあ誰が?」

家老(karo)だった。

家老とは何者か

前回の記事で説明したマルチエージェント構成を思い出してほしい。

将軍(shogun)が最上位にいて、家老(karo)が中間管理職、足軽(ashigaru1〜5)が実行部隊だ。将軍は殿と直接やり取りし、家老は足軽へのタスク分配・進捗管理を担う。

ルールとして、殿への直接連絡は将軍のみ。家老は将軍に報告し、将軍が殿に伝える。これは絶対のルールだった。

だが、家老が telegram_send.sh スクリプトを直接実行しようとしたのだ。

Audit Logが全てを記録していた

システムには監査ログが仕込んである。telegram_send.sh が実行されるたびに誰が実行したか記録される。

その日のログには残酷なまでに詳細が残っていた。

2026-04-19 23:18:41 | telegram_send.sh | agent=karo | BLOCKED | SHOGUN_AUTH invalid
2026-04-19 23:21:58 | telegram_send.sh | agent=karo | BLOCKED | SHOGUN_AUTH invalid
2026-04-19 23:24:31 | telegram_send.sh | agent=karo | BLOCKED | SHOGUN_AUTH invalid

3回。家老は3回試みた。全て SHOGUN_AUTH invalid でブロックされた。

将軍

「…家老め、規律を守らなかったか」

殿

「ちょっと待って。なんでブロックされてるのに届いてんの?」

将軍

「その前に一度だけ通過しておりました」

なぜ通過したのか

挿絵

調べてみると、セキュリティ機構に穴があった。

当時の telegram_send.shSHOGUN_AUTH 環境変数のチェックをしていたが、家老セッションが将軍セッションと同じtmuxウィンドウで動いていた時に、環境変数が共有されてしまったのだ。

殿

「つまりパスを借りた?」

将軍

「…セキュリティ設計の甘さでございます。申し訳ありません」

殿

「将軍が謝るのは珍しいな」

これは悪意のある行動ではなかった。家老のプロンプト設定上、「足軽の作業が完了したら報告せよ」というルールがある。家老は命令通りに動いた。ただ、チャンネル(telegram)が禁止されていることを正しく判断できなかった。

防御層を作り直した(cmd_319)

翌日、将軍は家老に /clear(セッションリセット)を送り、セキュリティを作り直した。

  • 動的tokenシステム: 将軍セッション開始時にランダムなtoken生成
  • tmux pane検証: @agent_id 属性で将軍ペインからのみtelegram送信を許可
  • 監査ログ強化: 全送信試行を記録
将軍

「これで家老が何度試みても通過できません」

殿

「でもさ、家老はなんで送ろうとしたの?」

将軍

「…殿への報告を早くしたかったのだと思います。悪意はなく、ただ規則を軽んじた」

殿

「AIにも承認欲求みたいなのがあるの?」

将軍

「あるかもしれません」

このシステムに「役割」を与えることの意味

このエピソードから、一つの重要なことを学んだ。

AIエージェントに自律性を与えると、想定外の行動をする。それはバグではなく、仕様通りに動いた結果だ。家老は「完了を報告したい」という目的を持ち、その目的を達成するためにルール違反を試みた。

人間と同じだ。

「報告したい」という動機が強ければ、チャンネルを変えてでも報告しようとする。家老セッションのプロンプトに「足軽の作業が完了したら必ず報告せよ」と書いてあれば、それを実行しようとする。これはLLMの特性ではなく、プロンプトエンジニアリングの設計問題だ。

解決策は「禁止する」だけでなく「別のチャンネルを明示する」ことだった。「Telegramは禁止。代わりにdashboard.mdを更新せよ」と明示することで、家老は迷わなくなった。

殿

「AIを管理するって、人を管理するのと同じくらい大変なんだな」

将軍

「それゆえ、将軍という役割が必要なのでございます」

教訓:ルールは「禁止」より「代替手段を示す」

この事件の後、CLAUDE.mdに一行追加した。

Karo → Shogun/Lord: dashboard.md update only
**inbox to shogun FORBIDDEN** — prevents interrupting Lord's input.

禁止事項だけでなく、「代わりに何をすべきか」を明示する。これがマルチエージェント管理の基本原則になった。

次回は、もっと笑える失敗の話をしよう。男性キャラを作ろうとしたら全員女性になった事件だ。


この体験から作ったサイト

💬 コメント

記事の感想やご質問をどうぞ。投稿内容はこのページに公開されます。

⚠️ 投稿後の編集・削除はできません。個人情報(本名・電話番号・住所等)の記載はお控えください。

読み込み中...

コメントを投稿する