diegosouzapw/OmniRoute · error · ClaudeWebProtocolError

Claude Web stream ended before message_stop

Error message

Claude Web stream ended before message_stop

What it means

Error "Claude Web stream ended before message_stop" thrown in diegosouzapw/OmniRoute.

Source

Thrown at open-sse/executors/claude-web/stream.ts:418

  for await (const data of decodeSseData(source, control)) {
    if (data === "[DONE]") {
      protocolFailure(state, "DONE arrived before message_stop");
    }

    const { event, eventType } = parseProtocolEvent(data, state);
    if (KNOWN_METADATA_EVENTS.has(eventType)) {
      yield { kind: "metadata", eventType, data: projectMetadataEvent(eventType, event) };
      continue;
    }

    const semanticEvent = dispatchProtocolEvent(eventType, event, state);
    if (!semanticEvent) continue;
    yield semanticEvent;
    if (semanticEvent.kind === "finish") return;
  }

  if (control.cancelled) return;
  throw new ClaudeWebProtocolError("Claude Web stream ended before message_stop");
}

function openAiFinishReason(stopReason: string): string {
  if (stopReason === "max_tokens") return "length";
  if (stopReason === "tool_use") return "tool_calls";
  return "stop";
}

function makeChunk(
  id: string,
  created: number,
  options: ClaudeWebStreamOptions,
  delta: Record<string, unknown>,
  finishReason: string | null,
  event?: { type: string; data: Record<string, unknown> }
): Record<string, unknown> {
  return {
    id,

View on GitHub (pinned to a179ffed5b)

When it happens

Trigger: Thrown at open-sse/executors/claude-web/stream.ts:418 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25). Data as JSON: /api/errors/f7922f575d72f697. Report an issue: GitHub.