Use this page when streaming works for plain text but fails, stalls, or returns unexpected events when tools are involved.
| Inbound protocol | Expected terminal signal |
|---|
openai_responses | response.completed or compatible terminal Responses event |
openai_chat_completions | data: [DONE] |
anthropic_messages | message_stop |
- Confirm bytes are arrivingIf no bytes arrive, check provider connectivity and read_idle_timeout_secs.
- Check whether tool arguments startedIf argument chunks began but never completed, this is a semantic tool-call stall.
- Check tool_calls timeoutTune [tool_calls].timeout_secs for incomplete streamed tool arguments.
- Capture narrowlyUse provider_request or upstream_response only for one sanitized repro.
- Compare terminal eventsVerify the provider emitted the terminal event expected by its protocol.
| Setting | Layer | Meaning |
|---|
[providers.<name>].read_idle_timeout_secs | Transport carrier | Maximum idle gap while waiting for upstream bytes. |
[tool_calls].timeout_secs | Protocol semantics | Maximum wait for incomplete streamed tool-call arguments after they start. |
| Question | Capture 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.