Case · DiggingBeagle record

Gemini CLI streaming retry may execute the same tool effect twice

A reported Gemini CLI retry path can commit actions from both a failing and successful stream, leaving transcript state inconsistent.

Public disclosure: Oct 29, 2026

Scope

Project issue report and local reproduction, not a confirmed production exploitation campaign.

Assessment profile

Assessment method
Setting
allegation
Exploitation
not established
Evidence
Grade D
AI role
AGAINST AI
Basis and provenance

A first-hand issue report describes streamed ToolCallRequest events, front-end Retry handling, repeated tool execution and subsequent 400 errors, but no independent reproduction, fixed release, or production incident evidence was established during this review.. Impact is ungraded because no independently measured production-target impact or victim scope is established by this record.

Assessed Nov 4, 2026 using diggingbeagle.assessment/1.

At a glance

Mechanism and trust boundary

  1. 01

    Generate a partial streaming tool call

    The model response reaches the host with enough information to invoke a tool before the generation stream is acknowledged complete.

    Boundary: Streaming model output to the tool executor

  2. 02

    Lose the stream after the side effect

    A connection or protocol failure leaves the model-response attempt incomplete even though its tool call may have committed.

    Boundary: Transport acknowledgment to external committed state

  3. 03

    Retry and replay the tool request

    The client retries generation without guaranteed reconciliation of the prior tool effects, risking duplicate execution and transcript divergence.

    Boundary: Model retry to idempotent-or-not external operations

Claims & evidence

CLM-NOV04-GEMINI-RETRY-DUPLICATE-1The issue report describes tool calls from both a failed streaming attempt and a later retry being executed.supported

Basis: reported finding

Link to claim
CLM-NOV04-GEMINI-RETRY-DUPLICATE-2The reporter describes conversation/transcript inconsistency following the failed stream and retry.supported

Basis: reported finding

Link to claim
CLM-NOV04-GEMINI-RETRY-DUPLICATE-3The issue reporter attributes duplicate tool effects to front ends retaining a streamed ToolCallRequest despite a subsequent Retry event, while chat history retains only the successful generation turn.supported

Basis: allegation

Link to claim

Implications

Agent retry safety must be defined over actual application effects. Tool calls need stable execution IDs, idempotency protection and post-restart reconciliation; repeating the model text alone is unsafe.

Controls and mitigations

  • Assign durable idempotency keys before every side-effecting tool call.
  • On model retry, reconcile committed effects and existing receipts before permitting a second call.
  • Persist partial-stream and tool-execution state separately so transcript repair cannot rewrite history.
  • On streaming failure, reconcile committed tool-call IDs and receipts before replay; require idempotency keys for state-changing external actions and record ambiguous outcomes for operator review.

Unknowns and contradictions

  • Root-cause confirmation, fixed version and affected client configurations remain to be verified.
  • No independent evidence of real financial loss or data destruction is in this issue.

Sources and citation

Material revision history

  1. Nov 4, 2026 · Published version · first publication · revision 218