Problem
GraphQL tool invocations have no plugin-level deadline. If an upstream accepts the request but never completes its response, the tool call remains pending until an outer host or platform limit terminates it.
This differs from the bounded invocation behavior in the OpenAPI and MCP plugins and does not return a GraphQL-specific, actionable failure to the caller.
Reproduction
- Start a GraphQL endpoint that sends
200 response headers and begins a JSON response body without completing it.
- Invoke a GraphQL tool against that endpoint.
- Observe that the invocation remains pending and the upstream socket stays open.
In a regression harness with an independent one-second guard, the current implementation reaches that guard after about one second instead of returning a GraphQL result.
Expected behavior
- GraphQL requests have a bounded invocation deadline that covers response headers and the response body.
- Reaching the deadline interrupts the HTTP request and closes the upstream socket.
- Direct SDK callers receive a typed timeout failure.
- Tool callers receive a stable, actionable timeout code and message.
Problem
GraphQL tool invocations have no plugin-level deadline. If an upstream accepts the request but never completes its response, the tool call remains pending until an outer host or platform limit terminates it.
This differs from the bounded invocation behavior in the OpenAPI and MCP plugins and does not return a GraphQL-specific, actionable failure to the caller.
Reproduction
200response headers and begins a JSON response body without completing it.In a regression harness with an independent one-second guard, the current implementation reaches that guard after about one second instead of returning a GraphQL result.
Expected behavior