fix: use text injection for Gemini models to avoid thought signature errors #265
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Problem
Gemini 3+ models have strict validation requiring
thoughtSignatureonfunctionCallparts. When the plugin injects synthetic assistant messages with tool parts, providers without robust signature handling fail with 400 errors:Solution
Check if the model is Gemini (via
modelID.includes("gemini")) and inject the prunable tools list as a text part instead of a tool part. This avoids the thought signature requirement entirely while maintaining the same functionality.