{"record":{"id":"5a15eb0bddbf2101","repo":"deepseek-ai/deepseek-harness","slug":"unstorable-provider-id","errorCode":"UNSTORABLE_PROVIDER_ID","errorMessage":"llm-pi-ai: provider id \"${providerId}\" cannot address a stored credential record (a record id is a lowercase hyphenated identifier); authenticate this route through apiKeyEnv instead of a stored credential","messagePattern":"llm-pi-ai: provider id \"(.+?)\" cannot address a stored credential record \\(a record id is a lowercase hyphenated identifier\\); authenticate this route through apiKeyEnv instead of a stored credential","errorType":"exception","errorClass":"LlmError","httpStatus":null,"severity":"error","filePath":"packages/llm/llm-pi-ai/src/auth.ts","lineNumber":141,"sourceCode":"      return toPiCredential(await credentials.readRecord(recordKeyFor(providerId)))\n    },\n    async list(): Promise<readonly CredentialInfo[]> {\n      const stored = await ctx.get('credentials')?.listRecords() ?? []\n      const mine: CredentialInfo[] = []\n      for (const entry of stored) {\n        // Records another plugin owns are not this collection's to report:\n        // their payloads are written in a format pi-ai never agreed to.\n        if (credentialKeyScope(entry.key) !== RECORD_SCOPE) continue\n        mine.push({\n          providerId: credentialKeyId(entry.key),\n          type: entry.kind === 'api-key' ? 'api_key' : 'oauth',\n        })\n      }\n      return mine\n    },\n    async modify(providerId, mutate) {\n      if (!isCredentialKeySegment(providerId)) {\n        throw new LlmError(\n          `llm-pi-ai: provider id \"${providerId}\" cannot address a stored credential record (a record id is a`\n          + ' lowercase hyphenated identifier); authenticate this route through apiKeyEnv instead of a stored'\n          + ' credential',\n          'UNSTORABLE_PROVIDER_ID',\n        )\n      }\n      const stored = await writableStore(ctx).modifyRecord(recordKeyFor(providerId), async (current) => {\n        const next = await mutate(toPiCredential(current))\n        return next === undefined ? undefined : toRecord(next)\n      })\n      return toPiCredential(stored)\n    },\n    // `async` so a missing service reaches the caller as a rejection: pi-ai's\n    // store contract is promise-returning, and a synchronous throw would\n    // escape the `ModelsError` wrapper every other storage failure gets.\n    async delete(providerId) {\n      if (!isCredentialKeySegment(providerId)) return\n      await writableStore(ctx).deleteRecord(recordKeyFor(providerId))","sourceCodeStart":123,"sourceCodeEnd":159,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/llm/llm-pi-ai/src/auth.ts#L123-L159","documentation":"Error \"llm-pi-ai: provider id \"${providerId}\" cannot address a stored credential record (a record id is a lowercase hyphenated identifier); authenticate this route through apiKeyEnv instead of a stored credential\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/llm/llm-pi-ai/src/auth.ts:141 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Authenticate this route through apiKeyEnv instead of a stored credential, or use a lowercase hyphenated provider id."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}