musistudio/claude-code-router · error · Error

External URL must be a valid absolute URL.

Error message

External URL must be a valid absolute URL.

What it means

Error "External URL must be a valid absolute URL." thrown in musistudio/claude-code-router.

Source

Thrown at packages/core/src/web/management-server.ts:1463

export function normalizeExternalHttpTarget(target: unknown): string | undefined {
  const url = normalizeExternalTarget(target);
  if (!url?.startsWith("http://") && !url?.startsWith("https://")) {
    return undefined;
  }
  return url;
}

function normalizeExternalTarget(target: unknown): string | undefined {
  const trimmed = typeof target === "string" ? target.trim() : "";
  if (!trimmed || trimmed === "about:blank") {
    return undefined;
  }
  let url: URL;
  try {
    url = new URL(trimmed);
  } catch {
    throw new Error("External URL must be a valid absolute URL.");
  }
  if (url.protocol === "http:" || url.protocol === "https:") {
    return url.toString();
  }
  if (url.protocol === "ccr:" && url.hostname.toLowerCase() === "plugin") {
    return url.toString();
  }
  throw new Error("Only http, https, and CCR plugin URLs can be opened.");
}

function execDetached(command: string, args: string[]): Promise<void> {
  return new Promise((resolve, reject) => {
    const child = spawn(command, args, {
      detached: true,
      stdio: "ignore",
      windowsHide: true
    });
    child.once("error", reject);

View on GitHub (pinned to 99f24806c6)

When it happens

Trigger: Thrown at packages/core/src/web/management-server.ts:1463 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of musistudio/claude-code-router@99f24806c6 (2026-08-27). Data as JSON: /api/errors/06d89debac6c75c1. Report an issue: GitHub.