openclaw - 💡(How to fix) Fix GitHub Copilot: static default model list shadows live entitlement discovery [1 pull requests]

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…

The GitHub Copilot provider ships a live model-discovery hook (fetchCopilotModelCatalog) that fetches ${baseUrl}/models and is explicitly documented as tracking "per-account entitlements + accurate context windows without manifest churn." In practice, however, the static default catalog (extensions/github-copilot/models-defaults.ts DEFAULT_MODEL_IDS + openclaw.plugin.json manifest models) is what seeds the user-facing model picker and openclaw models list.

When Copilot adds a new model (e.g. claude-opus-4.8), entitled accounts can call it successfully, but it does not appear in the picker / models list until the static list is bumped or the user hand-edits config. This defeats the stated purpose of the discovery hook.

Root Cause

The GitHub Copilot provider ships a live model-discovery hook (fetchCopilotModelCatalog) that fetches ${baseUrl}/models and is explicitly documented as tracking "per-account entitlements + accurate context windows without manifest churn." In practice, however, the static default catalog (extensions/github-copilot/models-defaults.ts DEFAULT_MODEL_IDS + openclaw.plugin.json manifest models) is what seeds the user-facing model picker and openclaw models list.

When Copilot adds a new model (e.g. claude-opus-4.8), entitled accounts can call it successfully, but it does not appear in the picker / models list until the static list is bumped or the user hand-edits config. This defeats the stated purpose of the discovery hook.

Fix Action

Fixed

RAW_BUFFERClick to expand / collapse

GitHub Copilot: static default model list shadows live entitlement discovery

Summary

The GitHub Copilot provider ships a live model-discovery hook (fetchCopilotModelCatalog) that fetches ${baseUrl}/models and is explicitly documented as tracking "per-account entitlements + accurate context windows without manifest churn." In practice, however, the static default catalog (extensions/github-copilot/models-defaults.ts DEFAULT_MODEL_IDS + openclaw.plugin.json manifest models) is what seeds the user-facing model picker and openclaw models list.

When Copilot adds a new model (e.g. claude-opus-4.8), entitled accounts can call it successfully, but it does not appear in the picker / models list until the static list is bumped or the user hand-edits config. This defeats the stated purpose of the discovery hook.

Reproduction

  1. Account entitled to a model newer than the static list (e.g. claude-opus-4.8).
  2. GET https://api.githubcopilot.com/models returns it (verified: 41 models incl. claude-opus-4.8).
  3. openclaw models list --provider github-copilot does not show it.
  4. A direct --model github-copilot/claude-opus-4.8 agent call succeeds (no fallback) — proving entitlement and routing both work; only discovery/visibility is missing.

Impact

  • Newly entitled Copilot models are invisible/unselectable until a release bumps the static list.
  • Users must manually add models.providers.github-copilot.models[] entries + aliases to use a model their plan already includes.
  • A confusing ⚠️ Gateway: agents.defaults.models.github-copilot/<model> failed warning can appear for config keys containing the provider/model slash, even when the model resolves and runs fine.

Proposed fix

  1. Picker/catalog should present the union of live-discovered models and static defaults, deduped by id, with live metadata winning (context window, vision, reasoning). The static list becomes a fallback for offline/discovery-failure only.
  2. Keep the 30s live-catalog cache; on discovery success, merge rather than letting static defaults gate visibility.
  3. (Minor) Improve the gateway warning so a model id containing / in a config key path doesn't render as a spurious "failed" path.

Interim

PR #88547 adds claude-opus-4.8 to the static catalog as an immediate unblock.

Environment

  • OpenClaw 2026.5.28
  • Provider: github-copilot
  • Verified live /models returns claude-opus-4.8 for the affected account.

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…

Still need to ship something?

×6

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

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix GitHub Copilot: static default model list shadows live entitlement discovery [1 pull requests]