-
Stefy Lanza (nextime / spora ) authored
A model can get stuck re-issuing the same tool call with the same arguments when each attempt fails (e.g. memory replace old_text=X → "No entry matched" on the wrong memory tier) — or when the call spills as un-parsed call:NAME{…} markup into assistant content. Each brokered request carries the full history, so coderai can see the repetition the agent's own tool-runner didn't break. _detect_tool_loop scans the recent history for a (tool, arguments) signature repeated >= threshold times where those attempts failed (per the tool result) or spilled as markup, and injects one system reminder before generation telling the model to stop repeating the call. Covers both structured tool_calls and spilled gemma-style markup. Configurable on every model: per-model models.json tool_loop_guard / tool_loop_repeats override the global models.tool_loop_* (default on, repeats=3); repeats<=0 disables. Co-Authored-By:Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RdMufYvtTbtGDWsiZVoXce
79ea70d6