earendil-works/pi · error

Anthropic stream ended before message_stop

Error message

Anthropic stream ended before message_stop

What it means

Error "Anthropic stream ended before message_stop" thrown in earendil-works/pi.

Source

Thrown at packages/ai/src/api/anthropic-messages.ts:497

		try {
			const event = parseJsonWithRepair<RawMessageStreamEvent>(sse.data);
			if (event.type === "message_start") {
				sawMessageStart = true;
			} else if (event.type === "message_stop") {
				sawMessageEnd = true;
			}
			yield event;
		} catch (error) {
			const message = error instanceof Error ? error.message : String(error);
			throw new Error(
				`Could not parse Anthropic SSE event ${sse.event}: ${message}; data=${sse.data}; raw=${sse.raw.join("\\n")}`,
			);
		}
	}

	if (sawMessageStart && !sawMessageEnd) {
		throw new Error("Anthropic stream ended before message_stop");
	}
}

export const stream: StreamFunction<"anthropic-messages", AnthropicOptions> = (
	model: Model<"anthropic-messages">,
	context: Context,
	options?: AnthropicOptions,
): AssistantMessageEventStream => {
	const stream = new AssistantMessageEventStream();

	(async () => {
		const output: AssistantMessage = {
			role: "assistant",
			content: [],
			api: model.api as Api,
			provider: model.provider,
			model: model.id,
			usage: {

View on GitHub (pinned to 4af9d21d3b)

Solutions

  1. Retry the request; if persistent, check for network or proxy truncation of the SSE stream.

When it happens

Trigger: Thrown at packages/ai/src/api/anthropic-messages.ts:497 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24). Data as JSON: /api/errors/e54d94ed9e6fe7b9. Report an issue: GitHub.