After compaction, stale signed thinking blocks are replayed every turn; Anthropic drops them (prefix_binding_mismatch) on every request
What happened?
After a manual compaction in a long session, pi prints this on every subsequent turn:
Anthropic dropped 15 thinking blocks: prefix_binding_mismatch at messages.5.content.0; prefix_binding_mismatch at messages.11.content.0; ...
The same 15 paths, every request, for the rest of the session. The session keeps working, the warning just never stops.
Looking at my session .jsonl: a long turn hit ~120k tokens, I compacted manually. Compaction kept a tail of the original conversation (firstKeptEntryId onward), and the assistant messages in that tail still have signed thinking blocks. Those signatures were created against the pre-compaction prefix, so Anthropic now rejects them and drops the blocks. Pi keeps them in its history though, so it replays the same mismatch on every request and the warning repeats forever.
Steps to reproduce
Happened in a real multi-hour session:
- Long agentic session on
claude-fable-5-1with thinking on, long enough that the context grows large. - Run
/compactmanually (I didn't test whether auto-compaction does the same). - Keep working. The
prefix_binding_mismatchwarning appears on every turn from then on, always with identical paths.
Expected behavior
Either don't send stale thinking blocks after compaction, or at least don't warn about the same drop on every single turn.
Version
0.85.1, provider anthropic, model claude-fable-5-1.
Source: earendil-works/pi