WebSockets make agentic products feel dramatically better in the first demo. The agent streams earlier, tool calls look alive instead of stalled, and the whole system starts feeling less like “submit prompt, wait, poll, repeat” and more like a continuous loop. That speedup is real. So is the complexity bill. The minute you move agent loops onto persistent connections, you stop operating in a world where each interaction has a clean request boundary. State starts leaking into connection lifetime, retries stop being obvious, caches become harder to trust, and debugging turns from “what happened in this request?” into “what state was this workflow carrying when that event arrived?” That is the real shape of agentic websocket tradeoffs : you gain responsiveness by giving up some explicitness . For some products, that is absolutely the right deal. For others, teams are paying architectural rent they do not yet need. The mistake is not using WebSockets.…