🤖 fix: avoid invalid requests from tool-only partials #1251
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 Anthropic API validation error:
messages.X: all messages must have non-empty content except for the optional final assistant messageRoot Cause
Anthropic's Extended Thinking API requires thinking blocks to include a signature for replay. The Vercel AI SDK silently drops reasoning parts without
providerOptions.anthropic.signature. When all parts of an assistant message are unsigned reasoning, the SDK drops them all, leaving an empty message that Anthropic rejects.Changes
Core Fix
stripUnsendableReasoning()- Removes reasoning parts without signatures before API calls, preventing empty messages from reaching AnthropicSignature Capture (for future reasoning replay)
signatureandproviderOptionsfields toMuxReasoningPartsignaturetoReasoningDeltaEventSchemafor event transmissionsignature_delta)providerOptions.anthropic.signaturefor SDK compatibilityDebug Tooling
--workspace <id>flag to CLI for testing against existing workspacesTesting
Verified against a corrupted workspace (
e8dab40a78) with 286 empty assistant messages that previously caused consistent API failures. After fix:Generated with
mux• Model:anthropic:claude-opus-4-5• Thinking:high