{"record":{"id":"430b38f04624956f","repo":"diegosouzapw/OmniRoute","slug":"autorefreshdaemon-credential-expired-for-prov","errorCode":null,"errorMessage":"[AutoRefreshDaemon] Credential expired for \"${providerId}\" (${config.displayName})","messagePattern":"\\[AutoRefreshDaemon\\] Credential expired for \"(.+?)\" \\((.+?)\\)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"open-sse/services/autoRefreshDaemon.ts","lineNumber":124,"sourceCode":"   */\n  async check(): Promise<void> {\n    this.lastRun = Date.now();\n    const newlyExpired: string[] = [];\n\n    const entries = [...this.credentialStore.entries()];\n\n    for (const [providerId] of entries) {\n      const config = TOKEN_EXTRACTION_CONFIGS.get(providerId);\n      if (!config) {\n        this.credentialStore.delete(providerId);\n        continue;\n      }\n\n      try {\n        const isValid = await this.validateCredential(providerId, config.homeUrl);\n        if (!isValid) {\n          newlyExpired.push(providerId);\n          console.warn(\n            `[AutoRefreshDaemon] Credential expired for \"${providerId}\" (${config.displayName})`\n          );\n        }\n      } catch (err) {\n        // Network errors are non-fatal — retry next cycle. G8: log which\n        // provider failed so credential problems are not silently masked.\n        console.warn(\n          `[AutoRefreshDaemon] Network error validating credential for \"${providerId}\" — retry next cycle`,\n          err instanceof Error ? err.message : err\n        );\n      }\n    }\n\n    // Update expired list\n    for (const id of newlyExpired) {\n      if (!this.expiredCredentials.includes(id)) {\n        this.expiredCredentials.push(id);\n      }","sourceCodeStart":106,"sourceCodeEnd":142,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/open-sse/services/autoRefreshDaemon.ts#L106-L142","documentation":"AutoRefreshDaemon check-cycle warning: the periodic validateCredential probe against the provider's home URL reported the stored OAuth credential as no longer valid (expired token, revoked session, or provider login page change), so the providerId is added to newlyExpired and will be marked for re-auth. It is a proactive liveness signal, not a request-time failure.","triggerScenarios":"Thrown at open-sse/services/autoRefreshDaemon.ts:124 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-authenticate the provider connection in the dashboard to obtain a fresh token.","Check whether the provider changed its session/token endpoint and update the extraction config.","Reduce reliance on the expired credential by enabling automatic token refresh where supported."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d","analyzedAt":"2026-08-25T18:35:09.898Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}