deepseek-ai/deepseek-harness · error · LlmError
MISSING_CREDENTIAL
MISSING_CREDENTIAL
Error message
llm-deepseek: no API key for provider route "${PROVIDER}"; store ${ref} through the credentials service (the web Models page writes it), or export ${ref} in the launching environment What it means
Error "llm-deepseek: no API key for provider route "${PROVIDER}"; store ${ref} through the credentials service (the web Models page writes it), or export ${ref} in the launching environment" thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/llm/llm-deepseek/src/index.ts:427
options()
const resolveApiKey = async (connection: ResolvedDeepSeekOptions): Promise<string> => {
// Every credential fact comes from the caller's snapshot, so a rejected
// settings generation cannot leak its key onto the previous endpoint.
const ref = connection.apiKeyEnv
const credentials = ctx.get('credentials')
if (credentials !== undefined) {
const hit = await credentials.resolve(ref)
if (hit !== undefined) return assertUsableApiKey(hit.value, 'llm-deepseek', ref)
} else {
// Without the seam there is no managed store to rank against, so the
// environment is the whole credential plane.
const ambient = launchEnvironmentOf(ctx).get(ref)
if (ambient !== undefined && ambient.value.length > 0) {
return assertUsableApiKey(ambient.value, 'llm-deepseek', ref)
}
}
throw new LlmError(
`llm-deepseek: no API key for provider route "${PROVIDER}"; store ${ref} through the credentials`
+ ` service (the web Models page writes it), or export ${ref} in the launching environment`,
'MISSING_CREDENTIAL',
)
}
let userId: AnonymousUserId | undefined
const resolveUserId = (): AnonymousUserId => userId ??= getOrCreateAnonymousUserId()
const adapter = new DeepSeekAdapter({
options,
resolveApiKey,
resolveUserId,
resolveAttachments: () => ctx.get('attachments'),
})
ctx.llm.registerConfigurableProviders([
{ provider: PROVIDER, displayName: 'DeepSeek', settingsNs: NS, settingsPath: [] },
])
// Route effects bind to this apply fiber via the stable `ctx` reference,View on GitHub (pinned to b150a551b8)
Solutions
- Store the referenced key through the credentials service (the web Models page writes it), or export it in the launching environment.
When it happens
Trigger: Thrown at packages/llm/llm-deepseek/src/index.ts:427 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24).
Data as JSON: /api/errors/0c81acdd3768a434.
Report an issue: GitHub.