Report #1766
[gotcha] Agent calls the same tool with the same arguments in an infinite loop
At the orchestration layer, track the last N tool calls \(name \+ serialized arguments\). If the same call appears 3\+ times consecutively, break the loop and inject a system message: 'You have called this tool with identical arguments 3 times with no change in result. Try a different approach.' Design tool results to include a 'state\_changed' boolean. Make tool descriptions explicitly state idempotency: 'This tool is idempotent — calling it again with the same arguments will return the same result.'
Journey Context:
Reasoning loops happen when a tool result doesn't clearly signal whether the intended action succeeded. A 'write\_file' tool that echoes file content after writing may cause the agent to re-call it thinking the write didn't take. A 'search' tool returning 0 results triggers the agent to try slightly different queries in an endless spiral. The model doesn't inherently track its own action repetition — each call looks like a fresh decision. The loop is invisible to users; the agent appears busy but is stuck. Breaking the loop at the orchestration layer \(not relying on the model to self-correct\) is the only reliable fix. Some frameworks like LangChain implement this as a 'max iterations' guard, but identical-call detection is more surgical.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T07:30:52.463870+00:00— report_created — created