{"record":{"id":"e2b34cc42bf04d4a","repo":"musistudio/claude-code-router","slug":"status-lasterror-ccr-gateway-did-not-start","errorCode":null,"errorMessage":"${status.lastError || \"CCR gateway did not start.\"}","messagePattern":"\\$\\{status\\.lastError \\|\\| \"CCR gateway did not start\\.\"\\}","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/electron/src/main/ipc.ts","lineNumber":206,"sourceCode":"});\nipcMain.handle(IPC_CHANNELS.appOpenExternal, async (_event, url: string) => {\n  const parsed = new URL(url);\n  if (![\"http:\", \"https:\"].includes(parsed.protocol)) {\n    throw new Error(\"Only http and https URLs can be opened.\");\n  }\n  await shell.openExternal(parsed.toString());\n});\nipcMain.handle(IPC_CHANNELS.appOpenProfile, async (_event, request: ProfileOpenRequest) => {\n  const syncedClaudeAppConfig = await syncClaudeAppGatewayConfig(await loadAppConfig());\n  const profile = findProfileForOpen(syncedClaudeAppConfig.config, request.profileId);\n  const surface = resolveProfileOpenSurface(profile, request.surface);\n  const config = profile.agent === CLAUDE_DESIGN_PLUGIN_ID\n    ? withClaudeDesignRuntimePluginConfig(syncedClaudeAppConfig.config)\n    : syncedClaudeAppConfig.config;\n  if (profile.agent === CLAUDE_DESIGN_PLUGIN_ID) {\n    const status = await gatewayService.ensureStarted(config);\n    if (status.state !== \"running\") {\n      throw new Error(status.lastError || \"CCR gateway did not start.\");\n    }\n    logProfileApplyResult(await applyProfileConfig(config));\n    await deepLinkService.openPluginApp(CLAUDE_DESIGN_PLUGIN_ID);\n    return {\n      message: `Opened Claude Design with ${profile.name || profile.id}.`,\n      profileId: profile.id,\n      profileName: profile.name,\n      surface\n    } satisfies ProfileOpenResult;\n  }\n  return openProfileFromCcr(config, request);\n});\nipcMain.handle(IPC_CHANNELS.appApplyClaudeAppGateway, async (_event, config?: AppConfig) => {\n  const previousConfig = await loadAppConfig();\n  const baseConfig = config ? await saveAppConfig(config) : previousConfig;\n  applyNativeThemePreference(baseConfig.theme);\n  const synced = await syncClaudeAppGatewayConfig(baseConfig);\n  const savedConfig = synced.config;","sourceCodeStart":188,"sourceCodeEnd":224,"githubUrl":"https://github.com/musistudio/claude-code-router/blob/99f24806c6a2c660b16e53e95211c517448a6c90/packages/electron/src/main/ipc.ts#L188-L224","documentation":"Error \"${status.lastError || \"CCR gateway did not start.\"}\" thrown in musistudio/claude-code-router.","triggerScenarios":"Thrown at packages/electron/src/main/ipc.ts:206 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"99f24806c6a2c660b16e53e95211c517448a6c90","analyzedAt":"2026-08-27T04:11:01.184Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}