The PUT endpoint was re-merging old DB messages (which already included previous merges) with disk messages on every turn, causing duplication. Now the client passes resumedMessageCount so the server always slices only the original pre-resume messages before concatenating. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>