番外編② 家老が反乱した夜 — 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.sh は SHOGUN_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.
禁止事項だけでなく、「代わりに何をすべきか」を明示する。これがマルチエージェント管理の基本原則になった。
次回は、もっと笑える失敗の話をしよう。男性キャラを作ろうとしたら全員女性になった事件だ。
💬 コメント
記事の感想やご質問をどうぞ。投稿内容はこのページに公開されます。
⚠️ 投稿後の編集・削除はできません。個人情報(本名・電話番号・住所等)の記載はお控えください。
読み込み中...
コメントを投稿する