diff --git a/packages/web/server/mux-websocket.ts b/packages/web/server/mux-websocket.ts index 220c6b9ed..16bdb1003 100644 --- a/packages/web/server/mux-websocket.ts +++ b/packages/web/server/mux-websocket.ts @@ -273,9 +273,14 @@ class TerminalManager { // Wire up data events pty.onData((data: string) => { - // Push to all subscribers + // Push to all subscribers — isolate each callback so a throw in one + // (e.g. a closed ws.send) doesn't abort the loop or skip the buffer. for (const callback of terminal.subscribers) { - callback(data); + try { + callback(data); + } catch (err) { + console.error("[MuxServer] Subscriber callback threw:", err); + } } // Append to ring buffer