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

  1. Trigger a catalog load/refresh and wait for a ready status before selecting
  2. Pick from the loaded groups in the picker instead of a remembered id
  3. 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

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


AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24). Data as JSON: /api/errors/2d1b48c78aa2d1bf. Report an issue: GitHub.