Agent 重複実行を防ぐ性質/重複実行防止
記事状態: 公開 · 最終確認: 2026-10-05
要点
Agentの重複実行防止は、promptで同じツールを二度呼ばないと指示するだけでは成立しない。処理待ち時間の上限、network disconnect、SDK 再試行、queue redelivery、webhook replay、double click、モデル/ツール 再試行があるため、副作用を持つ操作にはstableなbusiness 操作内容 主体の識別とdurableな重複判定が必要である。重複実行を防ぐ性質は定義した適用範囲/lifetime内で追加副作用を抑制するprotocolであり、無条件のexactly-once保証ではない。
現在の判断
Agentの重複実行防止は、promptで同じツールを二度呼ばないと指示するだけでは成立しない。処理待ち時間の上限、network disconnect、SDK 再試行、queue redelivery、webhook replay、double click、モデル/ツール 再試行があるため、副作用を持つ操作にはstableなbusiness 操作内容 主体の識別とdurableな重複判定が必要である。重複実行を防ぐ性質は定義した適用範囲/lifetime内で追加副作用を抑制するprotocolであり、無条件のexactly-once保証ではない。
どこまで当てはまるか
keyの適用範囲とTTLを明示する。TTL後のlate 再試行は新規操作になり得る。提供元/API固有のregional/zonal等の適用範囲を無視してglobal onceと一般化しない。
詳しく理解する
実装・運用
transport request IDとbusiness 操作内容 IDを分離する。再試行時は同じ操作内容 主体の識別を再利用する。同じpayloadが正当な別注文・別送信の場合もあるためpayload hashだけをbusiness 主体の識別にしない。keyに秘密情報/PIIを埋め込まない。
FINGERPRINT AND MISMATCH
同じkeyのrequestは正式な 操作内容 内容を照合する識別値と照合する。amount、recipient、対象、action等の意味が変わればfail closedにする。serialization順序やvolatile timestamp差はcanonicalization ruleで固定する。
DURABLE STATE MACHINE
外部への変更・送信前にdurable 状態をatomic 記述・判断する。IN_PROGRESS / SUCCEEDED / FAILED_RETRYABLE / FAILED_TERMINAL / UNKNOWN_RECONCILIATIONを区別する。check-then-insertではなくunique constraint、compare-and-set、transaction等で担当者を一意にする。成功済みduplicateには保存済みresultまたはstable downstream handleを返す。
AMBIGUOUS TIMEOUT
処理待ち時間の上限は失敗と同義ではない。remote commit後にresponseだけ失われ得る。未受付を証明できない場合は未確認事項として、同一操作内容 主体の識別で安全に再試行できる条件・契約または状態/query endpointでreconcileする。
TTL AND SCOPE
keyの適用範囲とTTLを明示する。TTL後のlate 再試行は新規操作になり得る。提供元/API固有のregional/zonal等の適用範囲を無視してglobal onceと一般化しない。
PRECONDITIONS
request dedupeとresource 実行前の条件は別機能である。ETag、generation、バージョン、改訂版等で対象状態を固定し、要再確認 書込みを拒否する。
RETRY POLICY
retryability、backoff、jitter、再試行 budgetを分離する。backoff/jitterは再試行 amplificationを抑えるがduplicate 外部への変更・送信は防がない。SDK hidden 再試行とアプリケーション 再試行の積み重なりを把握する。
MULTI STEP AGENT ACTIONS
複数外部への変更・送信を含むAgent actionはouter keyだけで全stepを保証しない。各外部への変更・送信にstable 主体の識別を割り当て、処理の流れ 状態、outbox/inbox、downstream 操作内容 ID等でcommit/reconcile状態を保持する。
セキュリティとプライバシー
重複実行を防ぐ性質 key所持を認可にしない。再試行時も操作主体、組織の利用環境、対象、policyを検証する。
OPERATING CHECK
concurrent duplicate、same-key mismatch、JSON順序差、処理待ち時間の上限 before 受け入れ確認、処理待ち時間の上限 after commit、process crash、要再確認 IN_PROGRESS、TTL後replay、queue/webhook redelivery、要再確認 resource バージョン、SDK+アプリケーション 再試行、cross-tenant/cross-region key、multi-step partial 完了をfault injectionする。duplicate-side-effect rate、false-dedupe rate、未確認事項/reconciliation rate、再試行 amplification、late-replay exposureを別評価指標にする。
実装・運用 2
2026-10-05時点のAWS EC2、Google Cloud 再試行/重複実行を防ぐ性質 docs、AWS operations guidance、Stripe engineering、IETF HTTPAPI Idempotency-Key draft-07に基づくdesk research。IETF文書はexpired Internet-Draftでfinal RFCとして扱わない。本番環境 side-effect testは未実施。
よくある失敗・反証
new key on 再試行、key reuse mismatch、non-atomic dedupe、crash after 外部への変更・送信、要再確認 IN_PROGRESS、TTL expiry、clock skew、cross-region 適用範囲、late queue replay、hidden SDK 再試行、webhook/モデル replay、partial multi-step commit、non-idempotent downstream、short downstream dedupe window、要再確認 実行前の条件、repeated 取り消し・埋め合わせ処理、replay attack、組織の利用環境 collision、result-version drift。
実務での使い方
2026-10-05時点のAWS EC2、Google Cloud 再試行/重複実行を防ぐ性質 docs、AWS operations guidance、Stripe engineering、IETF HTTPAPI Idempotency-Key draft-07に基づくdesk research。IETF文書はexpired Internet-Draftでfinal RFCとして扱わない。本番環境 side-effect testは未実施。
まだ確認できていないこと
- EA-241-UNKNOWN-01
対象Agent 実行環境、処理の流れ/queue、downstream API、重複実行を防ぐ性質 window、SDK hidden 再試行、dedupe store、multi-region topology、組織の利用環境 namespace、認可 対応付け、内容を照合する識別値 rule、TTL、reconciliation endpoint、outbox/inbox、取り消し・埋め合わせ処理、監査 保持期間・保持方針、privacy requirementは未確認。
根拠資料
この記事には、直接開ける外部出典が登録されていません。出典IDや検証情報は末尾で確認できます。
更新履歴
EA-241-FIRST-20261005: 正式な 監査/publication 対応付け
出典ID・検証情報・機械可読データ
根拠の種類と情報の鮮度は、ラベルとアイコンで確認できます。
- 記事ID
- EA-241
- 最終確認日
- 2026-10-05
- 提供元・モデル・プラン・利用環境
- —
- 対象地域
- —
元資料の全文と収録照合記録
PUBLIC_CLAIM
Agentの重複実行防止は、promptで同じtoolを二度呼ばないと指示するだけでは成立しない。timeout、network disconnect、SDK retry、queue redelivery、webhook replay、double click、model/tool retryがあるため、副作用を持つ操作にはstableなbusiness operation identityとdurableな重複判定が必要である。idempotencyは定義したscope/lifetime内で追加副作用を抑制するprotocolであり、無条件のexactly-once保証ではない。
OPERATION_IDENTITY
transport request IDとbusiness operation IDを分離する。retry時は同じoperation identityを再利用する。同じpayloadが正当な別注文・別送信の場合もあるためpayload hashだけをbusiness identityにしない。keyにsecret/PIIを埋め込まない。
FINGERPRINT_AND_MISMATCH
同じkeyのrequestはcanonical operation fingerprintと照合する。amount、recipient、target、action等の意味が変わればfail closedにする。serialization順序やvolatile timestamp差はcanonicalization ruleで固定する。
DURABLE_STATE_MACHINE
side effect前にdurable stateをatomic claimする。IN_PROGRESS / SUCCEEDED / FAILED_RETRYABLE / FAILED_TERMINAL / UNKNOWN_RECONCILIATIONを区別する。check-then-insertではなくunique constraint、compare-and-set、transaction等でownerを一意にする。成功済みduplicateには保存済みresultまたはstable downstream handleを返す。
AMBIGUOUS_TIMEOUT
timeoutはfailureと同義ではない。remote commit後にresponseだけ失われ得る。未受付を証明できない場合はUNKNOWNとして、同一operation identityで安全にretryできるcontractまたはstatus/query endpointでreconcileする。
TTL_AND_SCOPE
keyのscopeとTTLを明示する。TTL後のlate retryは新規操作になり得る。provider/API固有のregional/zonal等のscopeを無視してglobal onceと一般化しない。
PRECONDITIONS
request dedupeとresource preconditionは別機能である。ETag、generation、version、revision等で対象状態を固定し、stale writeを拒否する。
RETRY_POLICY
retryability、backoff、jitter、retry budgetを分離する。backoff/jitterはretry amplificationを抑えるがduplicate side effectは防がない。SDK hidden retryとapplication retryの積み重なりを把握する。
MULTI_STEP_AGENT_ACTIONS
複数side effectを含むAgent actionはouter keyだけで全stepを保証しない。各side effectにstable identityを割り当て、workflow state、outbox/inbox、downstream operation ID等でcommit/reconcile状態を保持する。
AUTHORIZATION_AND_REPLAY
idempotency key所持をauthorizationにしない。retry時もprincipal、tenant、target、policyを検証する。
OPERATING_CHECK
concurrent duplicate、same-key mismatch、JSON順序差、timeout before acceptance、timeout after commit、process crash、stale IN_PROGRESS、TTL後replay、queue/webhook redelivery、stale resource version、SDK+application retry、cross-tenant/cross-region key、multi-step partial completionをfault injectionする。duplicate-side-effect rate、false-dedupe rate、UNKNOWN/reconciliation rate、retry amplification、late-replay exposureを別metricにする。
FAILURE_ENVELOPE
new key on retry、key reuse mismatch、non-atomic dedupe、crash after side effect、stale IN_PROGRESS、TTL expiry、clock skew、cross-region scope、late queue replay、hidden SDK retry、webhook/model replay、partial multi-step commit、non-idempotent downstream、short downstream dedupe window、stale precondition、repeated compensation、replay attack、tenant collision、result-version drift。
IMPLEMENTATION_STATE
2026-10-05時点のAWS EC2、Google Cloud retry/idempotency docs、AWS operations guidance、Stripe engineering、IETF HTTPAPI Idempotency-Key draft-07に基づくdesk research。IETF文書はexpired Internet-Draftでfinal RFCとして扱わない。production side-effect testは未実施。
SAFE_WORDING
Agentの副作用操作にはstable operation identity、same-key mismatch拒否、atomic dedupe state、result replay/reconciliation、TTL、resource-version preconditionを設計する。idempotencyはretryを安全にする境界であり、無条件のexactly-once保証ではない。
OPEN_UNKNOWN
対象Agent runtime、workflow/queue、downstream API、idempotency window、SDK hidden retry、dedupe store、multi-region topology、tenant namespace、authorization binding、fingerprint rule、TTL、reconciliation endpoint、outbox/inbox、compensation、audit retention、privacy requirementは未確認。
EA-241-CURRENT-APPROVAL研究資料研究資料根拠の出所: AUDITED_CANONICAL_RESEARCH_PACKET現行本文の監査・revision対応
- 裏付ける内容
- 現行台帳のAUDIT_PASSと候補・revision・本文ハッシュの対応を確認しています。
- 確認日
- —
- 出典・実験ID
- CANDIDATE-EA241-FIRST-20261005-C2-RESCUE20261013
- 検証箇所
- 1KqhJtiSb2S84rWmeYVwKcT_76dBwZ_B0ZZuAWQqH0rQ · EA_REVISION_LEDGER!A44:U44 · EA-241-FIRST-20261005
- 適用範囲
- —
- 出典・来歴
- CURRENT_CANONICAL_APPROVAL_READBACK
- 限界
- 監査状態と来歴の記録です。外部根拠の最新性や本文の全主張を追加保証しません。
EA-241-CURRENT-BODY-READBACK実装資料実装資料根拠の出所: IMPLEMENTATION_READBACK現行本文の収録照合
- 裏付ける内容
- 公開生成入力の本文SHA-256が、監査済み候補に結び付いたハッシュと一致しています。
- 確認日
- 2026-10-13
- 出典・実験ID
- BODY-SHA256:e84b3249cbbd5627502241d057d409e53cf9d03df8af21d5822957e9028db333
- 検証箇所
- content/staging/EA-241.md · e84b3249cbbd5627502241d057d409e53cf9d03df8af21d5822957e9028db333 · EA-241-FIRST-20261005
- 適用範囲
- —
- 出典・来歴
- CURRENT_APPROVED_BODY_HASH_MATCH
- 限界
- 本文の同一性の検査です。外部システムの挙動や全主張の真偽を実証したものではありません。
- 出典ID
- CANDIDATE-EA241-FIRST-20261005-C2-RESCUE20261013, BODY-SHA256:e84b3249cbbd5627502241d057d409e53cf9d03df8af21d5822957e9028db333
- 追跡中のUNKNOWN ID
- EA-241-UNKNOWN-01
- 再確認のきっかけ
- 正式な 改訂版/publication 状態 change · 本文 成果物 hash change · 出典 現行性 change · new contradiction or 実装 結果の照合
機械検査: 通過 — 機械検査の結果です。情報の正確性や実行の承認を保証するものではありません。
同じ記事IDの機械可読データです。