Hey everyone,
I’ve been running into a frustrating issue with Gemini 3 models (mostly flash) and I’m hoping someone can point me in the right direction.
I’m building an agentic workflow that uses iterative tool calling via the OpenAI Python SDK pointed at OpenRouter. Works great with Claude, GPT, etc. But with Gemini 3, I keep hitting this error on either the second tool call or maybe the 10 tool call in the chain of thought API call (after sending back tool results):
400 Bad Request - “Unable to submit request because Thought signature is not valid”
After a lot of digging, I found [Google’s docs on thought signatures](https://ai.google.dev/gemini-api/docs/thought-signatures). Apparently Gemini 3 returns a `thought_signature` that you need to echo back in multi-turn conversations with tool calling.
The problem is I can’t find this field anywhere in the OpenRouter response.
I’ve inspected the tool_call objects extensively:
[DEBUG] Tool call type: <class ‘openai.types.chat.chat_completion_message_tool_call.ChatCompletionMessageToolCall’>
[DEBUG] Tool call _dict_: {‘id’: ‘call_xxx’, ‘function’: Function(…), ‘type’: ‘function’}
[DEBUG] NO thought_signature found
It’s just not there. Checked model_extra, extra_content, every attribute I could find.
Things I’ve tried (none worked)
-
Looking for thought_signature in various places in the response
-
Using “skip_thought_signature_validator” as the signature (Google’s docs mention this as an option)
-
Removing the reasoning parameter entirely
-
Adding provider-specific params
-
Retrying with exponential backoff (it just keeps failing)
Questions
-
Does OpenRouter expose the thought_signature from Gemini 3? If so, where is it?
-
Is there a way to bypass this validation? The skip validator string doesn’t seem to work through OpenRouter.
-
Is multi-turn tool calling just not supported for Gemini 3 via OpenRouter?
For now I’m detecting this error and falling back to Claude, which works but adds latency.
Error details
{
"error": {
"message": "Provider returned error",
"code": 400,
"metadata": {
"raw": "{
\"error\": {
\"code\": 400,
\"message\": \"unable to submit request because thought signature is not valid.. learn more: https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/gemini\",
\"status\": \"invalid_argument\"
}
}",
"provider_name": "google",
"is_byok": false
}
}
}
Anyone else run into this? Thanks!