Skip to content

[Bug]: /models and Web chat model dropdown show full catalog (900+ models) instead of only configured providers #74423

@guarismo

Description

@guarismo

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

When using the /models command or the model dropdown in the Web chat, the UI displays the entire model catalog (900+ entries) rather than filtering to only the providers and models the user has configured authentication for.

Steps to reproduce

  1. Configure authentication for one or two providers (e.g., ollama, google)
  2. Open the Web chat and click the model dropdown, or run /models in chat
  3. Observe 900+ model entries from all providers, including ones with no auth configured

Expected behavior

Only models from providers with valid authentication configured should appear in the picker by default.

Actual behavior

All models from the full catalog are shown. Unauthenticated providers are included but annotated with an "auth missing" hint rather than being hidden.

OpenClaw version

2026.4.26

Operating system

Ubuntu 24.04

Install method

npm

Model

ollama/gpt-oss

Provider / routing chain

openclaw -> ollama cloud

Additional provider/model setup details

No response

Logs, screenshots, and evidence

In `src/flows/model-picker.ts`, `addModelSelectOption` adds unauthenticated provider models to the list instead of skipping them:
Root Cause (code pointer):

// src/flows/model-picker.ts ~line 224
if (!params.hasAuth(params.entry.provider)) {
  hints.push("auth missing");  // <-- should return early here instead
}
params.options.push({ ... });  // model is still added

Impact and severity

Annoying Workarounds:

  • Use /models <provider> to filter to a specific provider
  • Configure agents.defaults.models as an allowlist in your config:
    { agent: { models: { "anthropic/claude-sonnet-4-6": { alias: "Sonnet" } } } }

Additional information

Image

Suggested Fix:
Add an early return when !params.hasAuth(params.entry.provider) (or make it opt-in via a flag like --all) so that unauthenticated providers are hidden by default in the interactive picker.

Citations

File: src/flows/model-picker.ts (L224-231)

  if (!params.hasAuth(params.entry.provider)) {
    hints.push("auth missing");
  }
  params.options.push({
    value: key,
    label: key,
    hint: hints.length > 0 ? hints.join(" · ") : undefined,
  });

File: src/flows/model-picker.ts (L363-363)

  let next = params.models.filter((entry) => isModelPickerVisibleProvider(entry.provider));

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions