Skip to content

Streaming and Tools

Use this page when streaming works for plain text but fails, stalls, or returns unexpected events when tools are involved.

Inbound protocolExpected terminal signal
openai_responsesresponse.completed or compatible terminal Responses event
openai_chat_completionsdata: [DONE]
anthropic_messagesmessage_stop
  1. 1Confirm bytes are arrivingIf no bytes arrive, check provider connectivity and read_idle_timeout_secs.
  2. 2Check whether tool arguments startedIf argument chunks began but never completed, this is a semantic tool-call stall.
  3. 3Check tool_calls timeoutTune [tool_calls].timeout_secs for incomplete streamed tool arguments.
  4. 4Capture narrowlyUse provider_request or upstream_response only for one sanitized repro.
  5. 5Compare terminal eventsVerify the provider emitted the terminal event expected by its protocol.
SettingLayerMeaning
[providers.<name>].read_idle_timeout_secsTransport carrierMaximum idle gap while waiting for upstream bytes.
[tool_calls].timeout_secsProtocol semanticsMaximum wait for incomplete streamed tool-call arguments after they start.
QuestionCapture phase
Did ProxAI send the expected tool schema upstream?provider_request
Did the provider emit tool-call argument chunks?upstream_response
Did the client receive the expected translated chunks?outbound_response

Always disable capture after one reproduction. See Capture Phases.