{"record":{"id":"0bf9cc28ff8f6dfd","repo":"different-ai/openwork","slug":"oauth-discovery-state-was-unavailable","errorCode":null,"errorMessage":"OAuth discovery state was unavailable.","messagePattern":"OAuth discovery state was unavailable\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/enterprise-mcp-client/src/oauth-provider.ts","lineNumber":301,"sourceCode":"    const persistedState = await this.persistence.discovery?.load(this.context())\n    const state = await this.normalizeDiscoveryState(persistedState)\n    if (state) {\n      this.assertDiscoveryBinding(state)\n      // normalizeDiscoveryState returns the same object when nothing needed\n      // verification or repair; only a rebuilt state warrants a re-save.\n      if (persistedState && state !== persistedState) {\n        await this.persistence.discovery?.save({ context: this.context(), state })\n      }\n      this.loadedDiscovery = state\n    }\n    return state\n  }\n\n  async saveDiscoveryState(state: OAuthDiscoveryState): Promise<void> {\n    let normalizedState: OAuthDiscoveryState | undefined\n    try {\n      normalizedState = await this.normalizeDiscoveryState(state)\n      if (!normalizedState) throw new Error(\"OAuth discovery state was unavailable.\")\n      this.assertDiscoveryBinding(normalizedState)\n    } catch (error) {\n      // Only a proven binding violation invalidates persisted discovery and\n      // flags issuer review; a transient metadata outage must stay retryable.\n      if (error instanceof EnterpriseMcpOAuthContractError) {\n        await this.persistence.discovery?.invalidate({\n          context: this.context(),\n          reason: \"issuer-mismatch\",\n        })\n      }\n      throw error\n    }\n    await this.persistence.discovery?.save({ context: this.context(), state: normalizedState })\n    this.loadedDiscovery = normalizedState\n  }\n\n  async clientInformation(context?: OAuthClientInformationContext): Promise<StoredOAuthClientInformation | undefined> {\n    const record = await this.persistence.clientRegistrations.load(this.context())","sourceCodeStart":283,"sourceCodeEnd":319,"githubUrl":"https://github.com/different-ai/openwork/blob/2b7df46e8ae1517d64c896c7793d2d52ec845669/packages/enterprise-mcp-client/src/oauth-provider.ts#L283-L319","documentation":"Error \"OAuth discovery state was unavailable.\" thrown in different-ai/openwork.","triggerScenarios":"Thrown at packages/enterprise-mcp-client/src/oauth-provider.ts:301 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":"2b7df46e8ae1517d64c896c7793d2d52ec845669","analyzedAt":"2026-09-01T07:59:23.713Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}