Context
Observed in session D0AC6CKBK5K/1778082564.879599: the model called search_tools(Query: "all") (no server filter) 8 consecutive times, getting the identical server catalog response each time. The response even included instructions on how to proceed correctly — the model just didn't follow them.
TurnStateTracker detected the duplicate at call #3 and injected a nudge, but it only nudges once (_duplicateNudgeSent flag). Calls 4-8 sailed through with no further intervention.
Idea
After the initial nudge goes unheeded (e.g., same fingerprint hits 5+ times), consider a second-stage response — maybe a stronger warning injected into the tool result itself, or including the prior tool result in the nudge so the model sees "here's what you already got back." Not necessarily forceNoTools or a hard turn failure — just something more than silence after the first nudge is ignored.
Non-goals
- Not proposing a hard cutoff or turn failure — the model might have legitimate reasons to retry similar calls.
- Not high priority — the budget cap at
MaxToolCallsPerTurn is the existing backstop.
Related
The root cause in this specific session was the model not reading the search_tools response (which told it to add a Server parameter). Better nudge escalation would have at least shortened the loop.
Context
Observed in session
D0AC6CKBK5K/1778082564.879599: the model calledsearch_tools(Query: "all")(no server filter) 8 consecutive times, getting the identical server catalog response each time. The response even included instructions on how to proceed correctly — the model just didn't follow them.TurnStateTrackerdetected the duplicate at call #3 and injected a nudge, but it only nudges once (_duplicateNudgeSentflag). Calls 4-8 sailed through with no further intervention.Idea
After the initial nudge goes unheeded (e.g., same fingerprint hits 5+ times), consider a second-stage response — maybe a stronger warning injected into the tool result itself, or including the prior tool result in the nudge so the model sees "here's what you already got back." Not necessarily
forceNoToolsor a hard turn failure — just something more than silence after the first nudge is ignored.Non-goals
MaxToolCallsPerTurnis the existing backstop.Related
The root cause in this specific session was the model not reading the
search_toolsresponse (which told it to add aServerparameter). Better nudge escalation would have at least shortened the loop.