fix: truncate oversized tool_call IDs for cross-provider compatibility #3827
+40
−0
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
Fixes #2215
When using multiple model backends (e.g. vLLM + OpenAI) within the same agent, tool_call IDs generated by one backend can exceed the maximum length accepted by another. OpenAI rejects IDs longer than 40 characters with:
Root Cause
vLLM and other backends may generate tool_call IDs longer than 40 characters (e.g. UUIDs). When these are stored in chat history and later replayed against OpenAI, the request is rejected.
Changes
Added
_normalize_tool_call_ids()toBaseModelBackendthat truncates oversized tool_call IDs inpreprocess_messages(). This ensures:tool_calls[].idfields are truncated to 40 charstool_call_idfields are truncated consistentlyThe normalization runs in
preprocess_messages()which all model backends use, so cross-provider compatibility is handled transparently.Test Plan
Made with Cursor