-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
openai-responses transport sends null content, rejected by strict providers (400 schema error) #90094
Copy link
Copy link
Closed as not planned
Closed as not planned
Copy link
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.staleMarked as stale due to inactivityMarked as stale due to inactivity
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.staleMarked as stale due to inactivityMarked as stale due to inactivity
Type
Fields
Priority
None yet
Bug
When using
api: "openai-responses", the gateway sends messages wherecontentisnullin theinputarray. Strict OpenAI-compatible providers (e.g., weelinking) reject these requests with400, while OpenAI's own API tolerates null content.Error
Gateway log:
Configuration
{ "wlkgpt": { "baseUrl": "https://api.weelinking.com/v1", "api": "openai-responses", "models": [{ "id": "gpt-5.5", "reasoning": true }] } }Environment
2026.6.2-beta.1openai-responsesformat)gpt-5.5Expected Behavior
The gateway should sanitize the
inputarray before sending: replacecontent: nullwith either an empty string""or omit the message. This matches OpenAI's documented schema which requirescontentto bestring | array.Actual Behavior
Messages with
content: null(likely from tool_use / tool_result entries in the conversation history) are passed through verbatim, causing strict providers to reject the entire request.Workaround
None found. The error persists across session resets and gateway restarts.
Suggested Fix
In the
openai-responsestransport layer, before serializing the request payload, filter/transform messages:Or strip messages where
contentis null and the message type doesn't require it.