{"record":{"id":"912717829f003b10","repo":"musistudio/claude-code-router","slug":"provider-account-does-not-support-codex-manual-res","errorCode":null,"errorMessage":"Provider account does not support Codex manual reset credits.","messagePattern":"Provider account does not support Codex manual reset credits\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/core/src/providers/account-service.ts","lineNumber":492,"sourceCode":"function codexResetProvider(config: AppConfig, providerName: string, credentialId: string | undefined): GatewayProviderConfig {\n  const normalizedProviderName = normalizeProviderName(providerName);\n  const provider = config.Providers.find((candidate) =>\n    isGatewayProviderEnabled(candidate) &&\n    normalizeProviderName(candidate.name) === normalizedProviderName\n  );\n  if (!provider) {\n    throw new Error(\"Provider account was not found.\");\n  }\n\n  const target = providerAccountTargets(provider).find((candidate) => {\n    const candidateCredentialId = candidate.credential ? providerCredentialRuntimeId(candidate.provider, candidate.credential) : undefined;\n    return !credentialId || candidateCredentialId === credentialId;\n  });\n  if (!target) {\n    throw new Error(\"Provider account credential was not found.\");\n  }\n  if (!providerAccountHasCodexResetCreditsConnector(target.account)) {\n    throw new Error(\"Provider account does not support Codex manual reset credits.\");\n  }\n\n  return target.credential\n    ? providerWithCredentialApiKey(target.provider, target.credential, target.account)\n    : { ...target.provider, account: target.account };\n}\n\nfunction providerAccountHasCodexResetCreditsConnector(account: ProviderAccountConfig): boolean {\n  return normalizeConnectors(account).some((connector) =>\n    connector.type === \"http-json\" &&\n    /\\/wham\\/rate-limit-reset-credits(?:$|[?#/])/i.test(connector.endpoint.trim())\n  );\n}\n\nfunction providerAccountUnavailableSnapshots(provider: GatewayProviderConfig): ProviderAccountSnapshot[] {\n  const credentials = activeProviderCredentials(provider);\n  if (credentials.length > 0) {\n    return credentials","sourceCodeStart":474,"sourceCodeEnd":510,"githubUrl":"https://github.com/musistudio/claude-code-router/blob/99f24806c6a2c660b16e53e95211c517448a6c90/packages/core/src/providers/account-service.ts#L474-L510","documentation":"codexResetProvider requires the selected account to have a Codex manual reset credits connector. providerAccountHasCodexResetCreditsConnector(target.account) returned false, meaning the account's connector config lacks Codex reset-credits support.","triggerScenarios":"Calling codexResetProvider on an account whose connector is not a Codex reset-credits connector (e.g. a generic HTTP JSON account or a different provider family).","commonSituations":"Pointing the manual reset flow at a non-Codex account; account connector config edited or migrated and lost the codex reset-credits type; using a custom manifest without the connector.","solutions":["Configure the account with the Codex reset credits connector type","Select a different account/credential that has the connector","Update the provider manifest so the account exposes reset-credits capabilities"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if (!providerAccountHasCodexResetCreditsConnector(account)) throw new Error('account lacks codex reset-credits connector');","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only expose reset-credits UI for accounts with the connector","Validate connector type at config load"],"tags":["codex","provider","connector","config"],"backgroundTag":"unsupported-operation","analyzedSha":"99f24806c6a2c660b16e53e95211c517448a6c90","analyzedAt":"2026-08-27T04:11:01.184Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}