{"record":{"id":"6c7ef43f6fcac942","repo":"NousResearch/hermes-agent","slug":"oauth-server-did-not-provide-an-authorization-url","errorCode":null,"errorMessage":"OAuth server did not provide an authorization URL","messagePattern":"OAuth server did not provide an authorization URL","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"apps/desktop/src/lib/mcp-dashboard-oauth.ts","lineNumber":54,"sourceCode":"\nexport async function completeMcpDesktopOAuth({\n  serverName,\n  start,\n  status,\n  openExternal,\n  cancelled,\n  cancel,\n  sleep = defaultSleep,\n  maxPollFailures = 3\n}: CompleteOptions): Promise<McpOAuthFlow> {\n  const started = await start(serverName)\n\n  if (started.status === 'error') {\n    throw new Error(started.error || 'OAuth failed to start')\n  }\n\n  if (!started.authorization_url) {\n    throw new Error('OAuth server did not provide an authorization URL')\n  }\n\n  await openExternal(started.authorization_url)\n\n  let pollFailures = 0\n\n  for (;;) {\n    if (cancelled?.()) {\n      // Free the backend slot before rejecting; best-effort — the flow also\n      // dies on its own timeout if this request is lost.\n      await cancel?.(started.flow_id).catch(() => {})\n      throw new McpOAuthCancelled()\n    }\n\n    let current: McpOAuthFlow\n\n    try {\n      current = await status(started.flow_id)","sourceCodeStart":36,"sourceCodeEnd":72,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/apps/desktop/src/lib/mcp-dashboard-oauth.ts#L36-L72","documentation":"Error \"OAuth server did not provide an authorization URL\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at apps/desktop/src/lib/mcp-dashboard-oauth.ts:54 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the OAuth server is configured with a valid authorization endpoint.","Check the gateway logs for the OAuth start response and retry.","Re-register the MCP server OAuth client if the configuration is stale."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c896c09c42910c584c4c7d2325b58c14713ea42c","analyzedAt":"2026-08-14T17:18:01.089Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}