deepseek-ai/deepseek-harness · warning
this provider's catalog failed to load — pick a model from a
Error message
this provider's catalog failed to load — pick a model from a loaded group
What it means
The /model command contribution maps an option id to a selection via selectionOf over the directory store snapshot. When the provider's catalog never loaded (load failed or groups still empty), no group contains the option, selectionOf returns undefined, and apply throws this user-facing guidance message telling the user to pick from a loaded group.
Source
Thrown at packages/client/ui-model-selection/src/client/index.ts:145
name: 'model',
description: t('command.description'),
available: session => sessions.subagentAddress(session.sessionId) === undefined,
ui: {
kind: 'popupSelect',
options: async (session) => {
if (sessions.subagentAddress(session.sessionId) !== undefined) {
throw new Error('model selection is unavailable for addressed subagent sessions')
}
return optionsOf(await models.directoryFor(session.sessionId).load(), t)
},
onSelect: async (option, session) => {
if (sessions.subagentAddress(session.sessionId) !== undefined) {
throw new Error('model selection is unavailable for addressed subagent sessions')
}
const directory = models.directoryFor(session.sessionId)
const selection = selectionOf(directory.store.getSnapshot(), option.id)
if (selection === undefined) {
throw new Error('this provider\'s catalog failed to load — pick a model from a loaded group')
}
await directory.select(selection)
},
},
}), 'ui-model-selection: /model contribution')
})
// Entry 2: the composer's named model seat over the SAME directory.
ctx.inject(['slots', 'modelDirectories'], (scope: ClientContext) => {
const models = scope.modelDirectories
const sessions = scope.sessions
scope.slots.inject('conversation.input.model', () => scope.slots.register({
name: 'conversation.input.model',
locale: NS,
inject: (sessionId): ModelSelectInjected => {
const directory = models.directoryFor(sessionId)
const available = sessions.subagentAddress(sessionId) === undefined
return {View on GitHub (pinned to b150a551b8)
Solutions
- Trigger a catalog load/refresh and wait for a ready status before selecting
- Pick from the loaded groups in the picker instead of a remembered id
- If load keeps failing, fix the host-side provider first (see the session.models failure)
Defensive patterns
Strategy: validation
Validate before calling
const snap = directory.store.getSnapshot()
if (snap.groups.length === 0 || snap.status === 'error') {
await directory.load()
}
const selection = selectionOf(directory.store.getSnapshot(), option.id)
if (selection === undefined) return unavailableNotice() Prevention
- Never carry model ids across provider switches without re-validating them against a loaded catalog
- Wait for directory status ready before enabling /model application
When it happens
Trigger: Running /model with an option id (or applying a saved option) while directory.store holds no loaded groups — status 'error' or an empty group list. Addressed subagent sessions are refused earlier by their own check; this error is strictly the unloaded-catalog case.
Common situations: Typing a remembered model id while the provider catalog is down; applying an option captured before a provider switch; racing the first catalog load on mount.
Related errors
- notice.imagesUnsupported
- session.models failed: ${result.error.code}: ${result.error.
- permission switch failed: ${result.error.code}: ${result.err
- sessions.selectSubagent: ${address.childSessionId} is not a
- command directory warmup failed: ${entry.lastError instanceo
AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24).
Data as JSON: /api/errors/2d1b48c78aa2d1bf.
Report an issue: GitHub.