Claude Code 2.1.288: MCP calls that ran twice, and paid Sume calls
2.1.288 fixed MCP tool calls sometimes running twice when a remote result was over 16 MB or unparsable. Why every paid Sume call needs an idempotency_key.

Claude Code 2.1.288 (Oct 2) fixed MCP tool calls that sometimes ran twice when the remote result was over 16 MB or could not be parsed. A paid Sume call that runs twice would be two renders if the key differs, which is why paid and write MCP calls require an idempotency_key.
What was fixed?
From the changelog: MCP tool calls sometimes running twice when a remote result was over 16 MB or unparsable. The fix is in the client, so keep the version current in CI.
| Version | Date | Fix |
|---|---|---|
| 2.1.288 | Oct 2 2026 | MCP tool calls sometimes ran twice when a remote result was over 16 MB or unparsable |
What does the key do on Sume?
The MCP docs describe idempotency_key as a stable key for transport and dedup, required on write and paid tools. It is not human approval. A repeat with the same key is meant to return the original job rather than start another.
How do you choose a key?
Tie it to the task, not the attempt:
- Good: a hash of the campaign id, scene number and prompt.
- Bad: a timestamp or random value made on each retry. It defeats the dedup.
- Keep the key in the log with the job id, so a replay can reuse it.
Is the cap also repeated?
Send max_spend_usd on each call; a second run is then bounded too. For bursts, check generation_admission_preview first. See MCP tools and gates.
Sources
Related posts
More in Developers
- claude -p --permission-prompts none: Sume tools in CI
With --permission-prompts none, prompts nobody can answer are denied. Which Sume tools still run? Read-only OAuth ones do; paid ones need mcp:write.
- Claude Code remote MCP backoff up to 30 s: retrying Sume safely
Headless Claude Code now backs off up to 30 s after remote MCP drops. A retried paid Sume call needs the same idempotency_key or you may pay twice.
- Claude Code closes ws MCP messages over 16 MiB: Sume sends URLs
Claude Code 2.1.295 closes a websocket MCP connection on a message over 16 MiB. Sume hosted MCP returns media.sume.com URLs for results, not file bytes.
- Claude Dynamic Workflows events vs Sume's single terminal run event
Anthropic's Oct 9 Dynamic Workflows beta streams workflow_run.* events. Sume sends one terminal webhook per run, no stream. How to fan out and track progress.
Written by Sume