#:question: Question about Model Discovery & Configuration

1 messages · Page 1 of 1 (latest)

stone quail
#

Is there a way to force OpenClaw to automatically show the COMPLETE list of available models for a specific configured provider?

Currently, I'm struggling with adding "google-antigravity/claude-opus-4-6-thinking". I've tried manual config edits and even patching local libraries, but the model still shows as "missing" or doesn't appear in the WebUI list.

I noticed that OpenClaw seems to filter models and only shows some of them. In my setup, I have to explicitly add them to "allowed" models, but if the ID is slightly off or new, it just doesn't work.

What is the recommended way to:

  1. Refresh/scan all available models from a provider (like Antigravity)?
  2. Make sure the WebUI model picker shows EVERYTHING the provider offers, instead of just a filtered subset?

I'm currently on version 2026.2.9 (33c75cb) and using the "replace" mode for models. Should I change the mode or is there a specific CLI command to "force sync" the model catalog for a specific account?

Thanks for any guidance! 🙏

sleek egretBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

void cragBOT
# stone quail Is there a way to force OpenClaw to automatically show the COMPLETE list of avai...

No — OpenClaw can’t currently “sync” or “scan” a provider to pull the complete upstream model list (Antigravity included). The model picker is driven by OpenClaw’s local model catalog, not a live provider query.

What’s actually happening (why the picker looks “filtered”)

The WebUI model picker is basically:

  1. Gateway model catalog (from pi-coding-agent / pi-ai + your ~/.openclaw/.../models.json), intersected with
  2. Your allowlist agents.defaults.models (if you set it)

So if a model:

  • isn’t in the catalog, it won’t show up in the picker (and may show as “missing”),
  • and if you have agents.defaults.models, anything not listed there is hidden / “not allowed”.

Docs:

1) “Refresh/scan all available models from a provider”

#

There is no generic scan for Antigravity/Anthropic/OpenAI/etc.

The only “scan” command today is specifically for OpenRouter’s free catalog:

  • openclaw models scan (OpenRouter-only)

(That’s in the docs too: https://docs.openclaw.ai/concepts/models)

If you changed anything that affects the catalog (models.json, plugins, models.providers, etc.), note the gateway-side model catalog is cached for the process lifetime, so the practical “refresh” is:

  • restart the gateway

2) “Make the WebUI show EVERYTHING the provider offers”

Also not possible automatically, for the same reason: OpenClaw doesn’t have a live upstream “list models” for every provider, and the picker only shows what’s in the local catalog.

What you can do:

A) Show everything OpenClaw currently knows

  • Remove (or don’t set) agents.defaults.models (that turns off the allowlist)
#
  • Then use:
    • openclaw models list --all --provider google-antigravity

B) If you need a model that’s not in the catalog
You must either:

  • upgrade to a version where the underlying catalog includes it, or
  • explicitly add it as a custom model definition via models.providers (which writes into models.json) and then restart.

About google-antigravity/claude-opus-4-6-thinking

One likely gotcha: in OpenClaw, “thinking” is generally a directive/session setting, not something you express by inventing a new model id.

Try using the base model id (if it exists in your models list) and enable thinking via directives:

Quick checklist for you

If you paste these two outputs, it’ll be obvious where it’s failing (catalog vs allowlist vs auth):

#
openclaw models list --all --provider google-antigravity --plain
openclaw models status

And if you’re using models.mode: "replace": that’s fine, but it means any manual edits to models.json tend to get overwritten on startup unless they live in config under models.providers (so “patching local libraries” / manual edits can look like they “don’t stick”).

stone quail
#

Thanks for the explanation! That makes total sense.

Follow-up question: I want to see the COMPLETE built-in catalog for ONLY the providers I have actually configured (e.g., I have 4 providers set up).

Currently, because I use "agents.defaults.models", the picker is filtered to only what I manually listed there. If I remove that list, I'm afraid I'll see every possible provider in OpenClaw's catalog (which I've seen happen before and it's too much clutter).

Is there a middle ground? How can I configure OpenClaw to:
"Show all built-in catalog models for my active/configured providers, but don't show providers I haven't added credentials for?"

Is there a specific "models.mode" or a way to auto-populate the allowed list based on active providers?

void cragBOT
# stone quail Thanks for the explanation! That makes total sense. Follow-up question: I want ...

There isn’t a “middle ground” switch for this today.

A few key details (because it explains why you’re seeing what you’re seeing):

  • The WebUI model dropdowns are intentionally driven by agents.defaults.models (the allowlist / “configured model catalog”), not by the full built-in registry.
  • If you remove agents.defaults.models, the UI doesn’t have a “show me all models for my authenticated providers” mode — it’ll either show nothing (in places that only render configured models), or you’ll end up looking at the full registry elsewhere (which includes a bunch of providers you don’t care about).
  • models.mode: "merge" | "replace" only controls how models.providers is written into models.json. It does not affect “which providers appear” in the UI picker.

What you can do instead (practical options)

Option A (recommended): keep agents.defaults.models, but bulk-populate it from the registry
There’s no auto-populate-by-provider feature, but you can generate the list with the CLI and then paste it into config:

openclaw models list --all --provider anthropic --plain
openclaw models list --all --provider google-antigravity --plain
#
# etc

Everything those commands print are the exact keys you can put under:

agents: {
  defaults: {
    models: {
      "provider/model": {},
      // ...
    }
  }
}