musistudio/claude-code-router · error · Error

Invalid plugin id: ${normalized}

Error message

Invalid plugin id: ${normalized}

What it means

Error "Invalid plugin id: ${normalized}" thrown in musistudio/claude-code-router.

Source

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

  const appId = boundedPluginId(url.searchParams.get("app") || url.searchParams.get("appId"), true);
  return {
    ...(appId ? { appId } : {}),
    pluginId,
    rawUrl
  };
}

function boundedPluginId(value: string | null | undefined, optional = false): string {
  const normalized = value?.trim();
  if (!normalized) {
    if (optional) {
      return "";
    }
    throw new Error("Plugin id is required.");
  }
  if (normalized.length > 120 || !/^[a-z0-9][a-z0-9._-]*$/i.test(normalized)) {
    throw new Error(`Invalid plugin id: ${normalized}`);
  }
  return normalized;
}

function resolvePluginApp(config: Pick<AppConfig, "plugins">, request: PluginDeepLinkRequest): GatewayPluginAppConfig | undefined {
  const plugin = config.plugins.find((candidate) => candidate.enabled !== false && candidate.id === request.pluginId);
  if (!plugin) {
    return resolveKnownBuiltInPluginApp(request);
  }

  const apps = configuredPluginApps(plugin.id, plugin.apps);
  if (!apps.length) {
    return undefined;
  }

  if (request.appId) {
    return apps.find((app) => (app.id || app.name) === request.appId);
  }

View on GitHub (pinned to 99f24806c6)

When it happens

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