earendil-works/pi · error

Unhandled stop reason: ${reason}

Error message

Unhandled stop reason: ${reason}

What it means

Error "Unhandled stop reason: ${reason}" thrown in earendil-works/pi.

Source

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

			return { stopReason: "stop" };
		case "max_tokens":
			return { stopReason: "length" };
		case "tool_use":
			return { stopReason: "toolUse" };
		case "refusal":
			return {
				stopReason: "error",
				errorMessage: stopDetails?.explanation || `The model refused to complete the request`,
			};
		case "pause_turn": // Stop is good enough -> resubmit
			return { stopReason: "stop" };
		case "stop_sequence":
			return { stopReason: "stop" }; // We don't supply stop sequences, so this should never happen
		case "sensitive": // Content flagged by safety filters (not yet in SDK types)
			return { stopReason: "error", errorMessage: "Provider stopped with: sensitive" };
		default:
			// Handle unknown stop reasons gracefully (API may add new values)
			throw new Error(`Unhandled stop reason: ${reason}`);
	}
}

View on GitHub (pinned to 4af9d21d3b)

Solutions

  1. Add handling for the new Anthropic stop reason in the switch statement.

When it happens

Trigger: Thrown at packages/ai/src/api/anthropic-messages.ts:1389 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/f635d9deb9a2a3fa. Report an issue: GitHub.