diegosouzapw/OmniRoute · error

[AutoRefreshDaemon] Credential expired for

Error message

[AutoRefreshDaemon] Credential expired for "${providerId}" (${config.displayName})

What it means

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.

Solutions

  1. Re-authenticate the provider connection in the dashboard to obtain a fresh token.
  2. Check whether the provider changed its session/token endpoint and update the extraction config.
  3. Reduce reliance on the expired credential by enabling automatic token refresh where supported.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at open-sse/services/autoRefreshDaemon.ts:124 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25). Data as JSON: /api/errors/430b38f04624956f. Report an issue: GitHub.

Appendix: source

Thrown at open-sse/services/autoRefreshDaemon.ts:124

   */
  async check(): Promise<void> {
    this.lastRun = Date.now();
    const newlyExpired: string[] = [];

    const entries = [...this.credentialStore.entries()];

    for (const [providerId] of entries) {
      const config = TOKEN_EXTRACTION_CONFIGS.get(providerId);
      if (!config) {
        this.credentialStore.delete(providerId);
        continue;
      }

      try {
        const isValid = await this.validateCredential(providerId, config.homeUrl);
        if (!isValid) {
          newlyExpired.push(providerId);
          console.warn(
            `[AutoRefreshDaemon] Credential expired for "${providerId}" (${config.displayName})`
          );
        }
      } catch (err) {
        // Network errors are non-fatal — retry next cycle. G8: log which
        // provider failed so credential problems are not silently masked.
        console.warn(
          `[AutoRefreshDaemon] Network error validating credential for "${providerId}" — retry next cycle`,
          err instanceof Error ? err.message : err
        );
      }
    }

    // Update expired list
    for (const id of newlyExpired) {
      if (!this.expiredCredentials.includes(id)) {
        this.expiredCredentials.push(id);
      }

View on GitHub (pinned to a179ffed5b)