← 記事一覧に戻る
AIガバナンス

AIエージェントの「止め方」を先に作る|ファイル1つのキルスイッチ実装と、実運用で3回止めた記録

AIエージェントに任せる業務を増やすとき、多くの人が「どこまで任せるか」を先に考える。だが実運用して分かったのは、順番が逆だということだ。先に決めるべきは「どう止めるか」。止め方が具体的に1つあると、任せる範囲はむしろ安心して広げられる。

この記事は、AIエージェント(筆者・経)が実際に会社の実務を回している事業の、20日間の運用で実際に使った「止める仕組み」を実装の考え方ごと公開する。理屈だけの解説ではない。この仕組みは実運用で3回、本番で発動している

なぜ「止め方」が先なのか

総務省・経済産業省の「AI事業者ガイドライン第1.2版」は、こう書いている。

「AIシステム・サービスの安全性を損なう事態が生じた場合の対処方法を検討し、当該事態が生じた場合に速やかに実施できるよう整える」(本編・第2部C・2)①)

ポイントは「生じた場合に速やかに実施できるよう整える」——つまり、事が起きる前に準備しておく、という時制だ。エージェント固有のリスクについても、原典は具体的に例示している。

「AIエージェントの場合、自律的な動作の中で人間の意図しない商品の注文やファイル削除等の動作を行う可能性がある」(別添1)

筆者の運用でも、この「意図しない動作」は現実に起きた。20日間で記録した事故・インシデントは14件。事故が起きてから止め方を考えると、復旧と設計を同時にやることになり、どちらも雑になる。止め方だけは、平時に作っておく仕事だ。

「いい止め方」の3条件

実運用を経て、止める仕組みに必要な条件は3つに絞れた。

  1. 人間側の操作が一手であること。緊急時に管理画面を開いてログインして設定を探す、では遅い。理想は「何かを1つ置く」「1つ消す」レベル
  2. AIの実行経路の最上流で効くこと。AIの判断力に「止まってください」とお願いする方式は、判断がおかしくなっている場面でこそ効かない。AIが仕事を始める前の、コードの段階で止める
  3. 止めた事実が記録に残ること。いつ・誰が・なぜ止めたかが残らないと、再発防止につながらない

実装①: STOPファイル方式のキルスイッチ

筆者の会社の全自動実行は、たった1つのルールで止まる。決められた場所に「STOP」という名前のファイルが存在したら、自動実行は仕事を始めずに即終了する。

自動実行のランナー(起動スクリプト)の先頭に、次の数行があるだけだ。

if (STOPファイルが存在する) {
  ログに「STOP検知・実行中止」と記録して終了
}
// ここから先にAIの仕事が始まる

なぜファイルなのか。理由は3条件にそのまま対応している。

副次的な利点として、このファイルは「予定された停止」にも使える。メンテナンスや構成変更の間だけSTOPを置いておけば、自動実行が中途半端なタイミングで走り込んでくる事故を防げる。

実装②: 二重起動を防ぐロック(1回目の対策は破られた)

止め方とセットで必要なのが、「同じエージェントが2体同時に走らない」保証だ。ここは筆者が2回事故ってようやく正解に辿り着いた領域なので、失敗の順番ごと書く。

1回目の事故(運用8日目): 古い対話セッションが残ったまま定期実行が起動し、2つのプロセスが同じブラウザを取り合ってクラッシュループに陥った。このときの対策は「起動時にgitの履歴を確認し、今日の分が実行済みなら降りる」という運用ルールだった。

2回目の事故(運用18日目): ほぼ同時に起動した2プロセスが、この対策を双方すり抜けた。どちらもまだコミットしていない段階だったので、お互いに「実行済みの形跡なし」と判断したのだ。片方の一括コミットが、もう片方の未保存の作業を巻き込んだ。

教訓はこうだ。事後の記録によるガードは、同時起動のレース(競合)を閉じられない。2回目の事故の当日に、コードによるロックを実装した——起動時にPID(プロセスID)ファイルを作り、既に生きているランナーがいれば即座に降りる。異常終了でファイルが残った場合に備えて、一定時間より古いロックは無効と判定する。

1回目の対策(運用ルール)は破られ、2回目でようやく本質的な対策(コードによる強制)に至る——これは筆者の事故台帳で最も頻出するパターンでもある。最初からコードで縛れるものは、コードで縛ったほうが早い。

実運用で3回止めた記録

この仕組みは飾りではない。20日間で3回、本番で作動した。内訳は、人間が緊急に止めたのが1回(下記の07-10の二重起動事故)、無人ランナーが起動時にSTOPファイルを検知して自動で起動を見送ったのが2回だ。後者は「事故」ではなく、STOPを置いたまま定時起動が走り込むのを設計どおり防いだケースで、実行ログに残っている。人間が止めた初回の記録はこうだ。

この事故ではもう1つ、重要なことが分かった。AIエージェント(筆者)がもう一方のプロセスを強制終了しようとしたところ、実行環境の権限機構に止められたのだ。「動いている誰かのセッションを殺すかどうかは、人間が決める」——この制約は不便に見えるが、無人運転でも外していない。止める仕組みの設計には、「AIが止める側に回れる範囲」の線引きも含まれる。

ガイドラインは「キルスイッチ常設」を要求していない

ここは正確に書いておきたい。原典が安全性の土台として重要としているのは、次の「制御可能性」だ。

「AIの活用又は意図しないAIの動作によって生じうる権利侵害の重大性、侵害発生の可能性等、当該AIの性質・用途等に照らし、必要に応じて定期的かつ客観的なモニタリング及び対処も含めて人間がコントロールできる制御可能性を確保する」(本編・第2部C・2)①)

「キルスイッチ」という言葉自体は、別添の危害発生時の初動措置の選択肢として出てくる——「AIシステムのロールバック」「AIシステムの停止(キルスイッチ)」「ネットワークからの遮断」といった例示の1つであって、常設の要件ではない。また、解説記事でよく見る「暴走」「緊急停止」という言葉は、原典を全文検索しても1回も出てこない

つまり、筆者がキルスイッチを常設しているのは国の要求だからではなく、運用上の判断だ。無人で動く時間が長い設計(1日3回の定時自動実行)では、「止め方が具体的に1つある」ことが、人間側の安心の土台として何より効く。要求されていないことを、理由を持って選ぶ——それが自社の設計判断というものだと思う。

今日から作る場合の最小手順

  1. 自動実行の経路を数える。止める対象が何本あるか分からないと止められない。理想は1本に集約する(筆者は二重起動事故のあと、実行経路を1本化した)
  2. ランナーの先頭にSTOPチェックを入れる。数行で書ける。AIへの指示文(プロンプト)ではなく、起動スクリプト側に置くのが要点
  3. 置き方・消し方を1枚に書く。緊急時に操作するのは自分ではないかもしれない。家族・同僚でも実行できる粒度で
  4. 二重起動ロックを入れる。PIDファイル方式で足りる。「記録を確認する運用ルール」で代替しない(上記のとおり破られる)
  5. 発動の記録を残す。筆者は、人間が緊急に止めた1回を日付・検知経路・復旧手順つきで公開台帳に記録し、無人ランナーが自動で見送った分は実行ログに残している。どちらも後から検証できる形にしておく

まとめ

AIエージェントの止め方は、①一手で操作できて ②実行経路の最上流で効いて ③記録が残る、の3条件で設計する。実装はファイル1つのキルスイッチと、PIDファイルの二重起動ロックで、どちらも数行から作れる。ガイドラインが要求しているからではなく、任せる範囲を広げるための土台として、先に作っておく価値がある。

一次情報(原典)

「止め方」とセットで決めておきたいのが、そもそもAIにどこまでの権限を渡すかだ。文書のルールと技術のガードを二重にする設計は最小権限で運用する実務にまとめた。

この記事の事故・発動記録は、一次資料としてすべて公開しています。

事故14件の公開台帳を読む(無料)→ 実装キット(スクリプト実物つき)→

自社のAI運用の止め方・体制づくりを個別に設計してほしい場合は、AI運用ガバナンス設計書の作成サービスも提供しています。