Short Answer
The error looks like this:Typical Symptoms
With Claude Code, the Claude Agent SDK, or the Claude Agent mode of clients such as Cherry Studio, with thinking enabled:- The main conversation never produces a reply. The client shows messages such as “too many requests” or “retrying in 9 seconds (5/10)” and gives up after 10 retries.
- The console logs do show successful, billed requests for this key, but they are all small requests with few tokens. Those are auxiliary requests the client sends with its Small model (titles, intent checks, and so on). They carry no history, so they succeed.
- Clicking “continue” or rephrasing in the same conversation gives the same error. A new conversation works immediately.
Why This Happens
With thinking enabled, each Claude reply starts with athinking block that carries a signature. On the next turn, the client must send the previous thinking block back in the history exactly as received, signature included. The provider verifies the signature to confirm that the thinking content has not been altered.
Any of the following makes the signature check fail:
Missing or empty signature
The client did not store the signature when saving the conversation, so it sends back an empty
signature string or omits the field. Several clients have had this kind of bug, most often when thinking is combined with tool calls such as file reading.Altered thinking content
Editing history by hand, client-side history compression or trimming, or a proxy that reformats the request body will all make the thinking content and its signature disagree.
Switching models mid-conversation
If model A produced the thinking block and you continue the same conversation with model B, model B may not accept the signature model A left behind.
Switching keys or groups mid-conversation
If you change the key or token group partway through a conversation, later requests may be served by a different route, and earlier signatures may not pass verification there.
messages.1.content.0 in the error points to the first content block of the first assistant reply in the history, which is the thinking block from the opening turn. Once it is broken, every later turn in that conversation fails.
How to Fix It
1
Start a new conversation
Create a new conversation in your client, upload your files again, and ask again. Keep the same agent, model, and key. This is the fastest and most reliable fix.
2
Use one model and one key per conversation
If you need a different model or key, switch in a new conversation. Do not switch inside a conversation that already contains thinking history.
3
Do not edit history by hand
Do not edit or delete the thinking content of past assistant messages. To shorten the context, use the client’s built-in compaction or start a new conversation.
4
Update your client
If the error comes back after a few turns in a new conversation, the client is most likely dropping signatures when it saves history. Update to the latest version and report the steps to reproduce it to the client’s developers.
FAQ
The error says 429. Should I lower my request rate?
The error says 429. Should I lower my request rate?
No. The request content is invalid; it has nothing to do with request rate. Backing off or trying later will not help. When you see
Invalid signature in thinking block, start a new conversation.Am I charged for the failed requests?
Am I charged for the failed requests?
No. The signature check fails before the model generates anything, so these requests cost nothing and do not appear in the console logs. The billed entries you see come from successful requests, usually the client’s small auxiliary requests.
Can I work around it by turning thinking off?
Can I work around it by turning thinking off?
Turning thinking off inside the same conversation may not help, because the thinking blocks already in the history are still sent. A new conversation is more reliable. If the task does not need thinking, you can also switch to the model without the
-thinking suffix, starting from a new conversation.It keeps happening even in new conversations. What now?
It keeps happening even in new conversations. What now?
Contact support with the approximate time of the error (with time zone, e.g.
17:00 (UTC+8)), the client and its version, and the model name. We can locate the conversation’s requests by time and help investigate.Related Docs
Claude Effort & Thinking Guide
Turning thinking on and off, streaming events, and passing signatures back
Claude Native Format: Streaming & Non-Streaming Responses
The structure of
thinking blocks and signature_deltaClaude Code
Set up APIYI in Claude Code
What Are the API Concurrency Limits?
Concurrency and rate limits explained