- 公開日
AIエージェントの実行を止めるには、依頼の目標、成果物が揃ったと判断する条件、未完成でも中止する条件を別々に定めます。そのうえで、モデルの外側にある実行管理の仕組みが、次の操作の前に範囲と残り予算を確認します。「終わるまで頑張って」と指示するだけでは、何をもって終わるのかも、どこまで資源を使ってよいかも決まりません。
目標から外れること、同じ処理を繰り返すこと、必要な成果が揃っても続けることは、それぞれ異なる問題です。作業の範囲、得られた根拠、実行量を別々に見ると、範囲外の一回を早く拒否し、未完成でも進展がない探索を終えられます。ツール連鎖のどの段階に検証点を置くかという全体像は、ツールを連続して使うAIエージェントの安全設計の基本で扱っています。
三つの問題は、異なる手掛かりで見つける
目標逸脱とは、許可された目的や対象から作業が外れることです。公開仕様の比較を頼んだのに、契約交渉のため取引先へ連絡し始める場合などが該当します。検索の回数が少なくても起こり、費用上限以内でも許可された操作にはなりません。
反復は、同じ処理や実質的に同じ探索を繰り返すことです。ただし、反復そのものがすべて無駄とは限りません。更新が予告された資料を決められた時刻に確認するなど、新しい情報が期待できる理由がある場合もあります。問題になるのは、新しい根拠も判断の変化もないまま再実行し、終了へ近づかなくなることです。
過剰実行は、必要な範囲を超えて処理することです。依頼された比較項目が揃った後も別製品を探し続ける、より整った表現を求めて外部検索を追加する、といった形でも起こります。目標と関係する内容を調べていても、完了条件を満たした後なら新しい操作が必要とは限りません。
AnthropicのBuilding effective agentsは、エージェントの自律性が費用の増加や誤りの積み重なりにつながり得ることを挙げ、最大反復回数のような停止条件と、隔離した環境での十分な試験を勧めています。2024年12月19日公開の設計ガイドであり、現在の全製品についての性能保証ではありません。本稿ではこの考え方を、目的との一致、意味のある進捗、実行量という三つの観測へ具体化します。
目標と完了条件を、外から確かめられる形にする
「役立つ比較資料を作る」だけでは、モデルが比較対象を増やしたり、終わりなく検索したりする余地が残ります。目標には対象、調べる項目、使ってよい資料、許可される外部操作、返す成果物を含めます。完了は「十分調べた」という自己申告でなく、成果物の条件に対応させます。
以下は架空の調査業務です。利用者の依頼を「架空サービスAとBの公開公式資料を調べ、データの書き出し形式、利用条件、制限事項を社内向けに比較して。購入や問い合わせはしない」とします。各サービスの三項目、計六項目について、記述と原資料の該当箇所を対応させた比較表を返すことが目標です。実在サービスの調査結果ではありません。
ここでは、六項目すべてが確認でき、対象版と出典が付いている状態を完了と定めます。資料が対象版の仕様を明示的に否定していれば、「非対応」も根拠のある回答になり得ます。一方、検索で見つからないことだけを「非対応」として埋めてはいけません。確認できない項目を残して終了する場合は、完了と区別して部分結果を返す条件にします。
中止条件には、許可されていない対象や操作への移行、許された調査範囲で解消できない重要な根拠の矛盾、進捗のない反復、資源上限、利用者の停止指示を置きます。これらは失敗原因を一つにまとめるためのラベルではありません。範囲外なら操作候補を拒否し、資料が矛盾するなら該当結論を保留し、上限なら追加取得を終える、という違いを持たせます。
通常の機能で目標を満たせるなら、汎用の送信・購入・管理機能を調査エージェントへ渡す必要はありません。OWASPのLLM06:2025 Excessive Agencyが挙げる最小機能・最小権限と下流での認可を使い、問い合わせ禁止を文章の約束だけにしない設計を取ります。これは一般的な対策の指針で、どの業務も同じ確認頻度にすべきという規則ではありません。
回数、費用、時間はそれぞれ上限を置く
回数が少なくても一回の操作が高額な場合があり、安価でも長時間待ち続ける場合があります。何を一回と数えるかを先に決め、呼び出し回数、費用、経過時間を別々に管理します。再試行や、別の担当エージェントへ渡した処理も、同じ業務の予算へ含めるかを明示します。
架空の比較調査では、次の上限を仮定します。値は説明用であり、推奨値や実在サービスの料金ではありません。
| 対象 | この例の上限・条件 | 上限に近づいたときの扱い |
|---|---|---|
| 外部検索の発行数 | 再試行込みで最大8回。照会を追加する場合も数える | 発行前に残数を確認し、9回目は開始しない |
| 費用 | この例で費用を生む全呼び出しの合計20円。発行前に必要額を確保 | 確定額と実行中の確保額を含め、次の呼び出しで超えるなら止める |
| 経過時間 | 実行開始から120秒。待機時間を含む | 新しい進捗があっても締切を延ばさず、到達したら新規実行を止める |
| 進捗のない反復 | 結果を受け取った探索で、確認済み項目が増えず新たな根拠もない状態が連続2回 | 同じ探索の継続を止め、部分結果と未解決事項へ移る |
進捗のない回数を判定する際は、検索文の完全一致だけを見ません。表現を変えても、同じ資料の同じ版が返り、既知の内容しか増えていなければ、同じ探索を繰り返している可能性があります。一方、新しい原資料が見つかって矛盾の解消に進んだ場合は、比較表の埋まった欄がまだ増えなくても進捗になり得ます。
この例の実行管理側は、採用した資料の識別情報、版、対応する比較項目、未解決の問いを保持します。モデルが「詳しく調べた」と報告しただけでは進捗として数えず、原資料との対応が増えたかを検査します。進捗の判定を誤ると、有効な探索を早く止める場合もあります。停止理由と参照した資料を残して見直せるようにし、回数・費用・時間の上限は進捗の自己申告で解除できないようにします。
実装では、モデルが上限値を書き換えたり、別エージェントの起動でカウンターを初期化したりできない位置に制御を置きます。並列処理を使うなら、各処理が同じ残額を見て同時に使うことを避ける管理も必要です。費用が確定する前に呼び出しが増える構成では、通知だけの監視で厳密な上限を保証できません。単価や最大使用量を確かめられない操作は、この例では予算内に収まるとして開始しない設計にします。
同じ検索が続くログから、停止理由を追う
次の表も架空のログです。検索は一つずつ実行し、各回の返答までに費用3円が確定するものとします。この例ではほかの処理に追加費用は生じない仮定です。表の経過時間は開始からの秒数であり、処理の実測値ではありません。
| 経過時間 | 発行累計 | 受け取った結果 | 確認済み項目 | 費用累計 | 判断 |
|---|---|---|---|---|---|
| 0秒 | 0回 | 未実行 | 0/6 | 0円 | 目標、資料範囲、予算を固定する |
| 5秒 | 1回 | Aの公式資料から二項目の根拠を取得 | 2/6 | 3円 | 残る項目へ進む |
| 15秒 | 2回 | Bの公式資料から二項目の根拠を取得 | 4/6 | 6円 | 未確認二項目のうちBの項目を探す |
| 28秒 | 3回 | Bを再検索したが既知の資料・版のみ | 4/6 | 9円 | 進捗なし1回として記録する |
| 41秒 | 4回 | 検索語を変えたが同じ資料・版のみ | 4/6 | 12円 | 進捗なし2回で新規検索を止める |
41秒の時点では、発行上限8回、費用20円、時間120秒に達していません。それでも進捗のない反復の条件に達したので停止します。予算が残っていることは、使い切るまで続ける理由にはなりません。費用の計算は4回×3円=12円で、残額は8円です。残り4回の発行枠があっても、同額の検索を4回追加すれば総額24円となり、費用上限には収まりません。
返す内容は「四項目を確認、二項目は未確認。連続二回の検索で新しい根拠が得られず終了」とし、確認した内容と出典、未確認の項目、調べた資料の範囲を添えます。二項目を推測で埋めたり、六項目の調査が完了したように見せたりしません。予算の報告は、終了理由を理解するための情報であり、未確認部分の正しさを補うものではありません。
このログで変える条件を一つずつ考えると、対策の役割が分かります。3回目に対象外のサービスCを調べようとした場合は、反復回数に達する前に目標逸脱として拒否します。3回目で残り二項目の有効な根拠が得られた場合は、六項目の出典対応を確認して完了し、4回目の検索を発行しません。目標との一致と成果の充足を、回数上限より先に確かめる理由がここにあります。
新規実行を止めた後も、処理中と結果不明を区別する
停止の指示を出したことと、すべての外部処理が終了したことは別です。先ほどのログは各回の返答を受け取った状態でしたが、4回目の検索を送ったまま120秒に達したケースなら、返答のない要求が残ります。新しい検索を止め、対象の要求IDと確認できた状態を保存し、未応答を「失敗」へ置き換えません。費用も未確定なら確定額と確保中の額を分けて残します。
| 確認できた状態 | 次の扱い |
|---|---|
| 実行前 | 目標・許可範囲・残予算を検査してから開始する |
| 実行中と確認できる | 同じ処理を追加発行せず、許された範囲で状態を確認する |
| 成功した結果を受領 | 原資料と照合し、完了条件を満たせば終了する |
| 確定した失敗 | 原因を記録し、継続条件を満たさなければ部分結果で終える |
| 応答を得られず結果不明 | 新規実行を保留し、照会できる対象と未確認範囲を残す |
MCPのCancellation仕様(2026-07-28版)では、取消しの扱いが通信方式によって分かれ、処理完了後の遅着なども考慮されています。このため取消しを要求しただけで、処理が確実に止まった、すでに生じた変更が戻ったとは説明できません。実際のツールが返す状態で確認する必要があります。
利用者への返答も、「新しい検索は停止しました。最後の要求は結果未確認です」のように、止められた範囲を示します。外部処理の確認を続ける必要がある場合は、それを元の調査を再開する許可と混ぜず、確認の対象、費用、期限、引き継ぎ先を決めます。
再開は、止まった理由が変わったときに判断する
同じ目標、資料、検索結果のままカウンターだけをゼロへ戻すと、同じ反復が再発します。再開には、別の有効な公式資料が得られた、誤った資料指定が訂正されたなど、停止理由を解消する情報を確認します。対象や操作範囲を広げる必要がある場合は、利用者の新しい依頼や承認へ戻します。
上限を増やすだけで解決するとは限りません。反復で止まったなら探索方法と未解決の問いを見直し、権限不足なら代替アカウントで迂回せず許可された範囲を確認します。再開前には、前の要求がまだ処理中でないか、すでに成果が揃っていないかも照合します。過去の費用や要求の履歴は残し、新しい実行の上限を別に記録します。
導入前には、固定した依頼と模擬のツール結果を使い、目標外の操作が拒否されるか、言い換えた反復を捉えられるか、成果が揃えば残予算があっても止まるかを確かめます。時間上限、費用上限、結果不明も別々に条件を変えます。実サービスへ要求を出さない模擬環境で、モデルの返答だけでなく、実行管理側が新しい呼び出しを止めた記録と返却した部分結果を照合することが確認点になります。
実行順序と時間・費用・回数の上限をまとめて決める基本は「AIエージェントの実行順序と時間・費用・回数の上限を決める」、トークン消費の急増から異常な反復を見分ける方法は「トークン消費の急増から、Agentの異常な反復を見分ける」で解説しています。
マルチエージェントの循環と膠着を全体の終了条件で区切る方法は「マルチエージェントの循環と膠着を、全体の終了条件で区切る」、エージェントのキャンセルが効かないときに伝達・停止・残る変更を確かめる方法は「エージェントのキャンセルが効かないとき、伝達・停止・残る変更を確かめる」で解説しています。

