From 7a6190becf90364c6f31f401ccda745e4745081c Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Mon, 28 Sep 2026 10:56:26 +0200 Subject: Keep tool calls in history, with placeholder results History kept only what was said, so after a few factual answers the model saw no tool behind them and invented the next one: asked for pending updates it made up counts without calling the tool (1/10 on a replayed session). Keeping each turn's tool calls brings it back to 10/10. Their results are replaced by a placeholder, which scores the same and keeps the context close to what it was; a follow-up on an old result calls the tool again. The window is now the last 10 whole turns. Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'AGENTS.md') diff --git a/AGENTS.md b/AGENTS.md index 6e66526..9966849 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -479,6 +479,28 @@ of 2000-character results ~4k), so the 20-message window and the `stop processing: n_tokens = N, truncated = 0` per request, but it is shared with every router client, so it cannot be attributed to the assistant. `truncated = 1` there would mean an overflow. +- 2026-09-28: history now keeps tool calls with placeholder results (see + "Tool calls in history"), window 10 whole turns. Each past call adds + ~50 tokens, so the worst case goes from ~9k to ~10k (10 turns of 3 + calls). Full results kept would + have been ~22k. + +### Tool calls in history (2026-09-28) + +"Ci sono aggiornamenti da installare?" after four exchanges (time, mail, +calc, calendar) got "12 updates, 3 security fixes, a kernel bump" with +no tool call: invented, the system was up to date. History kept only +what was said, so the model saw factual answers with no tool behind them +and copied that. Replayed against the live model, 10 runs each: that +history 1/10 called `updates`, empty history 10/10; a system prompt +line saying earlier answers came from hidden tool calls 0/10 (worse); +the same history with its tool calls kept 10/10, whether results were +kept whole, cut to 200 characters, or replaced by a placeholder "(shown +to the user at the time)" (**chosen**, cheapest). With the placeholder, a +follow-up on an old result ("chi ha mandato la terza email?") calls the +tool again, 10/10, no invented answer; costs one extra tool call. The +"never guess" rule alone does not hold once history shows tool-less +answers. ### Barge-in (2026-09-26) -- cgit v1.2.3