text: add cross-turn tool-call loop guard (per-model + global)
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
Showing
Please
register
or
sign in
to comment