openclaw - 💡(How to fix) Fix models.list configured view omits auth-backed providers and Codex catalog times out

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

On OpenClaw 2026.5.7, the default/configured model list used by the Control UI picker appears to be over-filtered: it only returns the current/default/image rows, while several providers with usable auth and provider-filtered available models are omitted.

This is not a request to undo #74423 and show the full unauthenticated catalog by default. The problem is narrower: providers that OpenClaw itself reports as authenticated/available do not appear in the configured/default picker-sized view.

Error Message

  • valid Codex OAuth catalog rows, or a bounded/visible error instead of a silent long timeout

Root Cause

For comparison, Groq and Hugging Face are not included as evidence here because this gateway currently does not have provider auth for them; their provider-filtered lists return catalog rows with available_count=0, as expected.

Code Example

models.mode= merge
models.providers= ['ollama', 'xiaomi']
agents.defaults.models present= False
agents.defaults.model= None
agents.list[0].model= {'primary': 'openai-codex/gpt-5.5', 'fallbacks': ['xiaomi/mimo-v2.5-pro', 'google/gemma-4-31b-it']}
agents.defaults.imageModel= {'primary': 'xiaomi/mimo-v2.5', 'fallbacks': ['gemini-3.1-flash-lite-preview']}

---

GOOGLE_API_KEY=...
GEMINI_API_KEY=...
OPENROUTER_API_KEY=...
XIAOMI_API_KEY=...
OLLAMA_API_KEY=...

---

google effective= {'kind': 'env', 'detail': 'AIzaSyCS...wMKabVHw'} env= env: GEMINI_API_KEY modelsJson= None
ollama effective= {'kind': 'env', 'detail': '37887ed8...WuQxCD0f'} env= env: OLLAMA_API_KEY modelsJson= models.json: ~/.openclaw/agents/main/agent/models.json
openai-codex effective= {'kind': 'profiles', 'detail': '~/.openclaw/agents/main/agent/auth-profiles.json'} env= None modelsJson= None
openrouter effective= {'kind': 'env', 'detail': 'sk-or-v1...b0f40f7a'} env= env: OPENROUTER_API_KEY modelsJson= None
xiaomi effective= {'kind': 'env', 'detail': 'tp-eo1oe...liyoegvw'} env= env: XIAOMI_API_KEY modelsJson= models.json: ~/.openclaw/agents/main/agent/models.json

---

{
  "provider": "openai-codex",
  "type": "oauth",
  "label": "openai-codex:[email protected] ([email protected])",
  "expiresAt": "2026-05-12T01:00:18.638Z"
}

---

$ openclaw models list --json
count: 3
- xiaomi/mimo-v2.5-pro                 available=true   tags=['default']
- xiaomi/mimo-v2.5                     available=true   tags=['image']
- openai/gemini-3.1-flash-lite-preview available=false  tags=['img-fallback#1']

---

$ openclaw models list --provider google --json
count: 27
available: 27
sample:
- google/gemini-1.5-flash
- google/gemini-1.5-flash-8b
- google/gemini-1.5-pro
- google/gemini-2.0-flash
- google/gemini-2.0-flash-lite
- google/gemini-2.5-flash
- google/gemini-2.5-flash-lite
- google/gemini-2.5-flash-lite-preview-06-17

$ openclaw models list --provider openrouter --json
count: 2
available: 2
sample:
- openrouter/moonshotai/kimi-k2.6
- openrouter/auto

$ openclaw models list --provider ollama --json
count: 5
available: 5
sample:
- ollama/gpt-oss:20b
- ollama/gemma3:4b
- ollama/glm-5.1
- ollama/kimi-k2.5
- ollama/minimax-m2.7

$ openclaw models list --provider xiaomi --json
count: 5
available: 5
sample:
- xiaomi/mimo-v2-flash
- xiaomi/mimo-v2-omni
- xiaomi/mimo-v2-pro
- xiaomi/mimo-v2.5-pro
- xiaomi/mimo-v2.5

---

$ timeout 45 openclaw models list --provider openai-codex --json
# exits 124, no stdout/stderr

$ timeout 90 openclaw models list --provider openai-codex --json
# exits 124, no stdout/stderr

$ timeout 90 openclaw models list --all --provider openai-codex --json
# exits 124, no stdout/stderr
RAW_BUFFERClick to expand / collapse

Summary

On OpenClaw 2026.5.7, the default/configured model list used by the Control UI picker appears to be over-filtered: it only returns the current/default/image rows, while several providers with usable auth and provider-filtered available models are omitted.

This is not a request to undo #74423 and show the full unauthenticated catalog by default. The problem is narrower: providers that OpenClaw itself reports as authenticated/available do not appear in the configured/default picker-sized view.

Environment

  • OpenClaw: 2026.5.7 (eeef486)
  • OS: Linux arm64 (Ubuntu host)
  • Install: npm global
  • Gateway mode: local systemd user service

Relevant config/auth state

There is no agents.defaults.models allowlist configured.

models.mode= merge
models.providers= ['ollama', 'xiaomi']
agents.defaults.models present= False
agents.defaults.model= None
agents.list[0].model= {'primary': 'openai-codex/gpt-5.5', 'fallbacks': ['xiaomi/mimo-v2.5-pro', 'google/gemma-4-31b-it']}
agents.defaults.imageModel= {'primary': 'xiaomi/mimo-v2.5', 'fallbacks': ['gemini-3.1-flash-lite-preview']}

The Gateway process has auth material for the relevant providers:

GOOGLE_API_KEY=...
GEMINI_API_KEY=...
OPENROUTER_API_KEY=...
XIAOMI_API_KEY=...
OLLAMA_API_KEY=...

openclaw models status --json also sees these providers as effective/auth-backed:

google effective= {'kind': 'env', 'detail': 'AIzaSyCS...wMKabVHw'} env= env: GEMINI_API_KEY modelsJson= None
ollama effective= {'kind': 'env', 'detail': '37887ed8...WuQxCD0f'} env= env: OLLAMA_API_KEY modelsJson= models.json: ~/.openclaw/agents/main/agent/models.json
openai-codex effective= {'kind': 'profiles', 'detail': '~/.openclaw/agents/main/agent/auth-profiles.json'} env= None modelsJson= None
openrouter effective= {'kind': 'env', 'detail': 'sk-or-v1...b0f40f7a'} env= env: OPENROUTER_API_KEY modelsJson= None
xiaomi effective= {'kind': 'env', 'detail': 'tp-eo1oe...liyoegvw'} env= env: XIAOMI_API_KEY modelsJson= models.json: ~/.openclaw/agents/main/agent/models.json

For Codex specifically, OAuth is valid:

{
  "provider": "openai-codex",
  "type": "oauth",
  "label": "openai-codex:[email protected] ([email protected])",
  "expiresAt": "2026-05-12T01:00:18.638Z"
}

Actual behavior

The default/configured model list is reduced to three rows:

$ openclaw models list --json
count: 3
- xiaomi/mimo-v2.5-pro                 available=true   tags=['default']
- xiaomi/mimo-v2.5                     available=true   tags=['image']
- openai/gemini-3.1-flash-lite-preview available=false  tags=['img-fallback#1']

This is what the Control UI model picker also effectively reflects: the auth-backed provider catalogs are missing, and Codex only appears as the current/default model path rather than as a usable catalog.

There is also a likely related normalization issue above: the configured image fallback is the short id gemini-3.1-flash-lite-preview, and it is rendered as openai/gemini-3.1-flash-lite-preview instead of resolving to the available google/gemini-3.1-flash-lite-preview.

Provider-filtered commands prove the providers/models are available

Provider-filtered listing works for the same Gateway/config/auth state:

$ openclaw models list --provider google --json
count: 27
available: 27
sample:
- google/gemini-1.5-flash
- google/gemini-1.5-flash-8b
- google/gemini-1.5-pro
- google/gemini-2.0-flash
- google/gemini-2.0-flash-lite
- google/gemini-2.5-flash
- google/gemini-2.5-flash-lite
- google/gemini-2.5-flash-lite-preview-06-17

$ openclaw models list --provider openrouter --json
count: 2
available: 2
sample:
- openrouter/moonshotai/kimi-k2.6
- openrouter/auto

$ openclaw models list --provider ollama --json
count: 5
available: 5
sample:
- ollama/gpt-oss:20b
- ollama/gemma3:4b
- ollama/glm-5.1
- ollama/kimi-k2.5
- ollama/minimax-m2.7

$ openclaw models list --provider xiaomi --json
count: 5
available: 5
sample:
- xiaomi/mimo-v2-flash
- xiaomi/mimo-v2-omni
- xiaomi/mimo-v2-pro
- xiaomi/mimo-v2.5-pro
- xiaomi/mimo-v2.5

For comparison, Groq and Hugging Face are not included as evidence here because this gateway currently does not have provider auth for them; their provider-filtered lists return catalog rows with available_count=0, as expected.

Codex-specific behavior

openai-codex has valid OAuth, but provider-filtered discovery times out without output:

$ timeout 45 openclaw models list --provider openai-codex --json
# exits 124, no stdout/stderr

$ timeout 90 openclaw models list --provider openai-codex --json
# exits 124, no stdout/stderr

$ timeout 90 openclaw models list --all --provider openai-codex --json
# exits 124, no stdout/stderr

This may be a second issue, but it affects the same user-facing result: the picker cannot show the available Codex model catalog even though OAuth is present.

Expected behavior

After #74423, I understand the default picker should not show the entire unauthenticated built-in catalog. However, the configured/default view should still include providers/models that are actually usable according to OpenClaw's own auth and provider-filtered model listing.

Expected default/configured picker-sized result should include at least:

  • configured models.providers.*.models rows (ollama, xiaomi here)
  • native/auth-backed providers with available=true provider-filtered rows (google, openrouter here)
  • valid Codex OAuth catalog rows, or a bounded/visible error instead of a silent long timeout

Docs that appear relevant

docs/concepts/models.md says:

The Control UI model picker asks the Gateway for its configured model view: agents.defaults.models when present, otherwise explicit models.providers.*.models plus providers with usable auth. The full built-in catalog is reserved for explicit browse views such as models.list with view: "all" or openclaw models list --all.

docs/gateway/protocol.md says:

"configured": picker-sized behavior. If agents.defaults.models is configured, it still wins. Otherwise the response uses explicit models.providers.*.models entries, falling back to the full catalog only when no configured model rows exist.

The current behavior seems narrower than both docs:

  • it does not include all explicit configured provider rows (ollama has configured rows but is missing from the default list)
  • it does not include providers with usable auth (google, openrouter have available=true rows but are missing)

Related issues

  • #74423 intentionally changed the default picker away from the full unauthenticated catalog. This report is not asking to revert that default.
  • #58106 looks related for OpenRouter auth discovery, but this report affects multiple providers and also configured ollama rows.
  • #53755 was an older closed Codex catalog-collapse issue; on 2026.5.7 the symptom is now a provider-filtered Codex listing timeout with valid OAuth.
  • #75564 discussed models.list/Codex catalog fallback performance; the default list is fast here, but Codex provider-filtered listing still times out.

Impact

The Control UI model picker is no longer a reliable list of usable models. It hides authenticated/available providers and can show an invalid fallback row (openai/gemini-...) while the correct provider-filtered Google row exists and is available.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

After #74423, I understand the default picker should not show the entire unauthenticated built-in catalog. However, the configured/default view should still include providers/models that are actually usable according to OpenClaw's own auth and provider-filtered model listing.

Expected default/configured picker-sized result should include at least:

  • configured models.providers.*.models rows (ollama, xiaomi here)
  • native/auth-backed providers with available=true provider-filtered rows (google, openrouter here)
  • valid Codex OAuth catalog rows, or a bounded/visible error instead of a silent long timeout

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING