deepseek-ai/deepseek-harness · error
llm-pi-ai: unusable replay state on assistant history for ro
Error message
llm-pi-ai: unusable replay state on assistant history for route "${provider}/${model}"; sending that message as provider-neutral content (${reason}) What it means
Error "llm-pi-ai: unusable replay state on assistant history for route "${provider}/${model}"; sending that message as provider-neutral content (${reason})" thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/llm/llm-pi-ai/src/index.ts:201
throw new LlmError(
`llm-pi-ai: no credential for provider route "${provider}"; its profile resolves ${ref}, which is not`
+ ` set — store ${ref} through the credentials service (the web Models page writes it) or export it,`
+ ' and remove apiKeyEnv only if this provider should authenticate from pi-ai\'s own environment discovery',
'MISSING_CREDENTIAL',
)
}
// One store and one ambient context for the whole plugin instance: both read
// through `ctx` per call, so they stay correct across the collection rebuilds
// a configuration change causes, and a sign-in survives one.
const auth = { credentials: credentialStoreFrom(ctx), authContext: authContextFrom(ctx) }
const adapter = new PiAiAdapter({
profiles,
resolveApiKey,
auth,
resolveAttachments: () => ctx.get('attachments'),
onReplayDegrade: ({ provider, model, reason }) => {
ctx.logger.warn(
`llm-pi-ai: unusable replay state on assistant history for route "${provider}/${model}";`
+ ` sending that message as provider-neutral content (${reason})`,
)
},
})
// Independent of the route set: signing in is what makes a route worth
// adding, so the flows are offered before any profile names their provider.
// Scoped to the authorization seam rather than injected outright, because a
// composition without it (headless, ACP) simply has no surface to sign in
// from, while everything else this plugin does still works.
ctx.inject(['authorization'], (authorized) => { registerPiAiFlows(authorized, auth) })
// The full installed catalog is configurable from the moment the plugin
// mounts — dormant or not — so configuration surfaces can offer every
// pi-ai provider before any route exists. Hand-declared routes join it as
// profiles appear, and leave with them.
let directory: DirectoryRegistrationHandle | undefined
let directoryFacts: unknown
const ensureDirectory = (): void => {View on GitHub (pinned to b150a551b8)
Solutions
- Start a fresh session or clear history for the route; the message is sent as provider-neutral content.
When it happens
Trigger: Thrown at packages/llm/llm-pi-ai/src/index.ts:201 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/d29bcf835a7f5161.
Report an issue: GitHub.