musistudio/claude-code-router · error · Error

Plugin app did not become available at ${appUrl}. Last probe

Error message

Plugin app did not become available at ${appUrl}. Last probe: ${lastProbe}

What it means

Error "Plugin app did not become available at ${appUrl}. Last probe: ${lastProbe}" thrown in musistudio/claude-code-router.

Source

Thrown at packages/electron/src/main/deep-link.ts:250

async function waitForPluginAppUrl(appUrl: string, timeoutMs: number): Promise<void> {
  const deadline = Date.now() + timeoutMs;
  let lastProbe = "timeout";

  while (Date.now() <= deadline) {
    const probe = await probePluginAppUrl(appUrl);
    if (probe.ok) {
      return;
    }
    lastProbe = probe.detail;

    const remainingMs = deadline - Date.now();
    if (remainingMs <= 0) {
      break;
    }
    await delay(Math.min(pluginAppProbeIntervalMs, remainingMs));
  }

  throw new Error(`Plugin app did not become available at ${appUrl}. Last probe: ${lastProbe}`);
}

async function probePluginAppUrl(appUrl: string): Promise<{ ok: true } | { detail: string; ok: false }> {
  const controller = new AbortController();
  const timeout = setTimeout(() => controller.abort(), pluginAppProbeRequestTimeoutMs);
  try {
    const response = await fetch(appUrl, {
      cache: "no-store",
      method: "HEAD",
      signal: controller.signal
    });
    if (response.ok) {
      return { ok: true };
    }
    return {
      detail: `HTTP ${response.status}${response.statusText ? ` ${response.statusText}` : ""}`,
      ok: false
    };

View on GitHub (pinned to 99f24806c6)

When it happens

Trigger: Thrown at packages/electron/src/main/deep-link.ts:250 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/a6f73c8c075edf89. Report an issue: GitHub.