earendil-works/pi · error · Error

Invalid Kimi Code device authorization response: ${JSON.stri

Error message

Invalid Kimi Code device authorization response: ${JSON.stringify(json)}

What it means

Error "Invalid Kimi Code device authorization response: ${JSON.stringify(json)}" thrown in earendil-works/pi.

Source

Thrown at packages/ai/src/auth/oauth/kimi-coding.ts:99

	if (!response.ok) {
		const text = await response.text().catch(() => "");
		throw new Error(`Kimi Code device authorization failed with status ${response.status}${text ? `: ${text}` : ""}`);
	}

	const json = await readJson(response);
	const deviceCode = json?.device_code;
	const userCode = json?.user_code;
	const verificationUri = json?.verification_uri;
	const verificationUriComplete = json?.verification_uri_complete;
	if (
		typeof deviceCode !== "string" ||
		typeof userCode !== "string" ||
		typeof verificationUri !== "string" ||
		typeof verificationUriComplete !== "string" ||
		!trustedHttpUrl(verificationUriComplete) ||
		!trustedHttpUrl(verificationUri)
	) {
		throw new Error(`Invalid Kimi Code device authorization response: ${JSON.stringify(json)}`);
	}

	const interval = json?.interval;
	const expiresIn = json?.expires_in;
	return {
		deviceCode,
		userCode,
		verificationUri,
		verificationUriComplete,
		intervalSeconds:
			typeof interval === "number" && Number.isFinite(interval) && interval > 0
				? interval
				: DEFAULT_POLL_INTERVAL_SECONDS,
		expiresInSeconds:
			typeof expiresIn === "number" && Number.isFinite(expiresIn) && expiresIn > 0
				? expiresIn
				: DEVICE_CODE_TIMEOUT_SECONDS,
	};

View on GitHub (pinned to 4af9d21d3b)

Solutions

  1. Inspect the JSON payload in the message; update parsing if the API response shape changed.

When it happens

Trigger: Thrown at packages/ai/src/auth/oauth/kimi-coding.ts:99 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/cb67c6443d3c8066. Report an issue: GitHub.