API Error: 400 due to tool use concurrency issues. Run /rewind to recover the conversation.
The message
API Error: 400 due to tool use concurrency issues. Run /rewind to recover the conversation.What it means
The conversation history Claude Code sent has a tool call with no matching result straight after it, so the API refused the whole request.
What to do
Run /rewind (or press Esc twice) and go back to a point before the broken turn. If it comes back during normal use, run claude update.
Claude Code prints this when Anthropic's API rejects a request because the conversation history in it doesn't add up. The API has a strict rule: every time Claude calls a tool, the very next message has to carry that tool's result. When one is missing, you get a 400 (the HTTP code for a bad request), and Claude Code shows it like this:
API Error: 400 due to tool use concurrency issues. Run /rewind to recover the conversation.
Despite the name, the check behind it is about one missing tool result. In the 2.1.280 binary, Claude Code watches for one specific message from the API and swaps it for the line above. The API's own words are these:
`tool_use` ids were found without `tool_result` blocks immediately after
That's the phrase with the demand behind it. 282 issues in anthropics/claude-code contain "ids were found without" as of September 23, 2026, against 94 that quote Claude Code's own wording.
How the history gets broken
Anthropic's error reference says it happens "usually after a tool call was interrupted or a turn was edited mid-stream". The changelog lists other routes that have been fixed over time: an unstable network (1.0.84), resuming sessions made before v2.1.85 (fixed in 2.1.86), and forks made with /branch from sessions that had been rewound (fixed in 2.1.122).
Once the bad pair is in the history, every later request carries it too. That's why sending another message, or "please continue", fails the same way.
What to do
Run /rewind, or press Esc twice, and step back to a checkpoint from before the broken turn. You lose that turn and keep the rest of the session.
On Opus 4.7 or Opus 4.8, versions of Claude Code before v2.1.156, says the error reference, "can trigger this error during normal tool use, and /rewind doesn't clear it". If it keeps coming back without you interrupting anything, run claude update before you rewind.
When it breaks on every tool call
There have been two big waves. The first thread from October 2025 (issue #8763, 270 comments) started on version 2.0.2. Boris Cherny of the Claude Code team wrote that there were "a bunch of root causes", and in November he closed it with "Yep, this is fixed", asking anyone who still saw it to update and file a new issue.
In January 2026 the VS Code extension started failing every tool call after an update while the CLI in the same setup worked. Three days later a collaborator on the repo answered: "The problematic experiment has been disabled, no upgrade needed." A week after that, the same account told people on newer versions to reload the VS Code window, since an upgrade may not be running until you do.
A fresh session that fails on its very first tool call has no broken history to rewind. Update, reload the editor, and look at that day's open issues instead.
The two siblings
The same code handles two related 400s with the same /rewind advice: API Error: 400 orphaned tool_result in conversation history., a result with no call before it, and API Error: 400 duplicate tool_use ID in conversation history., the same call id used twice. Our page on Repeated 529 Overloaded errors has a short note on those too, because they get searched alongside it.
Other lines the same feature prints
Match yours against these if the one at the top of the page is not quite it. They come from the same code and mean related things.
API Error: 400 due to tool use concurrency issues.tool_use ids were found without tool_result blocks immediately after`tool_use` ids were found without `tool_result` blocks immediately afterAPI Error: 400 orphaned tool_result in conversation history. Run /rewind to recover the conversation.unexpected `tool_use_id` found in `tool_result` blocks