Skip to content

feat(github-copilot): add Claude Opus 4.8 to default model catalog#88547

Merged
steipete merged 1 commit into
openclaw:mainfrom
saju01:feat/copilot-opus-4.8
May 31, 2026
Merged

feat(github-copilot): add Claude Opus 4.8 to default model catalog#88547
steipete merged 1 commit into
openclaw:mainfrom
saju01:feat/copilot-opus-4.8

Conversation

@saju01

@saju01 saju01 commented May 31, 2026

Copy link
Copy Markdown
Contributor

What

Add claude-opus-4.8 to the GitHub Copilot default model catalog (manifest + DEFAULT_MODEL_IDS), plus a test assertion.

Why

GitHub Copilot already serves claude-opus-4.8 for entitled accounts, but the static default catalog in extensions/github-copilot/ stopped at claude-opus-4.7. Because the picker / openclaw models list is seeded from this static list, an entitled model was invisible and unselectable until manually added to user config. This is a small catalog bump mirroring the existing 4.7 metadata shape.

Real behavior proof

Behavior or issue addressed: GitHub Copilot serves claude-opus-4.8 for entitled accounts, but it did not appear in openclaw models list or the model picker because the static default catalog stopped at 4.7. After this patch the model is discoverable and selectable.

Real environment tested: OpenClaw 2026.5.28 on macOS (Darwin arm64), provider github-copilot authenticated against a real Copilot subscription (live api.githubcopilot.com).

Exact steps or command run after this patch: ran the three commands below against the real setup.

# 1. Confirm the account is entitled (live Copilot catalog endpoint)
curl -s -H "Authorization: Bearer <copilot token>" https://api.githubcopilot.com/models

# 2. Confirm the model now appears in the picker
openclaw models list --provider github-copilot

# 3. Route a real agent turn to it
openclaw agent --model github-copilot/claude-opus-4.8 \
  --message 'Smoke test model selection. Reply with exactly: OK_OPUS48' --json

Evidence after fix: live terminal output below (Copilot token redacted).

# (1) live https://api.githubcopilot.com/models  -> HTTP 200
total models: 41
4.8: ['claude-opus-4.8']

# (2) openclaw models list --provider github-copilot
github-copilot/claude-opus-4.8   text+image 164k/195k   no   yes   configured,alias:opus-4.8-copilot

# (3) openclaw agent --model github-copilot/claude-opus-4.8 ... --json
"result": { "payloads": [ { "text": "OK_OPUS48" } ] },
"executionTrace": {
  "winnerProvider": "github-copilot",
  "winnerModel": "claude-opus-4.8",
  "attempts": [ { "provider": "github-copilot", "model": "claude-opus-4.8", "result": "success", "stage": "assistant" } ],
  "fallbackUsed": false
}

Observed result after fix: the live Copilot endpoint returns claude-opus-4.8 (account entitled); openclaw models list now shows the model; and a real agent turn routes to it and returns the exact expected string OK_OPUS48 with winnerModel: claude-opus-4.8 and fallbackUsed: false — proving it is the winning model, not a silent fallback to 4.7.

What was not tested: long-context (1M) Copilot variants and cost/usage accounting for 4.8 were not exercised; only base claude-opus-4.8 text+image routing was verified live.

Note on the deeper issue

The Copilot provider already ships a live discovery hook (fetchCopilotModelCatalog) documented to track per-account entitlements "without manifest churn," but the static default list still shadows discovery for the user-facing picker. This PR is the immediate unblock; follow-up structural issue: #88548.

Supplemental checks

  • pnpm vitest run extensions/github-copilot/models.test.ts → 36/36 pass (rebased on current main), incl. new assertion that getDefaultCopilotModelIds() contains claude-opus-4.8.
  • Manifest JSON validated. Rebased onto latest main; upstream model-catalog-pruning conflicts resolved.

@saju01

saju01 commented May 31, 2026

Copy link
Copy Markdown
Contributor Author

Follow-up structural issue (the real fix — surface the union of live-discovered + static models so this never recurs): #88548

@openclaw-barnacle openclaw-barnacle Bot added the triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. label May 31, 2026
@clawsweeper

clawsweeper Bot commented May 31, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed May 31, 2026, 11:49 AM ET / 15:49 UTC.

Summary
Adds claude-opus-4.8 to the GitHub Copilot default model ID list and plugin manifest, plus a regression assertion in the GitHub Copilot model defaults test.

PR surface: Source +10, Tests +4. Total +14 across 3 files.

Reproducibility: yes. for the catalog gap at source level: the PR and related issue describe live Copilot entitlement to claude-opus-4.8 while current static defaults do not expose it in models list or the picker. I did not rerun live Copilot calls in this read-only review, but the supplied terminal proof covers the real setup.

Review metrics: none identified.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • none.

Risk before merge

  • [P1] This is an interim static catalog bump; the live-discovery shadowing behavior remains in GitHub Copilot: static default model list shadows live entitlement discovery #88548 and can recur for the next Copilot model until that structural issue is fixed.
  • [P1] The manifest metadata mirrors 4.7 rather than live Copilot metadata, so maintainers should accept that context-window/capability details are intentionally static for this immediate unblock.

Maintainer options:

  1. Decide the mitigation before merge
    Land the narrow static catalog unblock if maintainers accept the mirrored metadata, and keep the broader live-discovery union work in GitHub Copilot: static default model list shadows live entitlement discovery #88548 as the canonical structural fix.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • No automated repair is needed; the remaining action is maintainer review of the catalog metadata and normal merge/CI handling.

Security
Cleared: The diff only changes static GitHub Copilot model catalog metadata and one focused test assertion; no dependency, credential, workflow, or code-execution surface is introduced.

Review details

Best possible solution:

Land the narrow static catalog unblock if maintainers accept the mirrored metadata, and keep the broader live-discovery union work in #88548 as the canonical structural fix.

Do we have a high-confidence way to reproduce the issue?

Yes for the catalog gap at source level: the PR and related issue describe live Copilot entitlement to claude-opus-4.8 while current static defaults do not expose it in models list or the picker. I did not rerun live Copilot calls in this read-only review, but the supplied terminal proof covers the real setup.

Is this the best way to solve the issue?

Yes for the immediate unblock: adding the model to both static sources and asserting the default ID is the narrowest catalog-bump fix. It is not the complete structural solution, which remains the live-discovered-plus-static union tracked in #88548.

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against d1c4c3344ebf.

Label changes

Label changes:

  • add proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes after-fix live terminal output from a real authenticated GitHub Copilot setup showing the model returned by Copilot, listed by OpenClaw, and used successfully in an agent turn with no fallback.

Label justifications:

  • P2: The PR addresses a normal provider-catalog usability gap for entitled GitHub Copilot users without evidence of an urgent regression or outage.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The PR body includes after-fix live terminal output from a real authenticated GitHub Copilot setup showing the model returned by Copilot, listed by OpenClaw, and used successfully in an agent turn with no fallback.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes after-fix live terminal output from a real authenticated GitHub Copilot setup showing the model returned by Copilot, listed by OpenClaw, and used successfully in an agent turn with no fallback.
Evidence reviewed

PR surface:

Source +10, Tests +4. Total +14 across 3 files.

View PR surface stats
Area Files Added Removed Net
Source 2 10 0 +10
Tests 1 4 0 +4
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 3 14 0 +14

What I checked:

  • AGENTS.md policy read: The root repository policy was provided in full and applied; the change touches an extension/plugin catalog, so plugin ownership and compatibility-sensitive provider/model routing guidance informed the review. (AGENTS.md:1, d1c4c3344ebf)
  • PR diff adds one static default id: The PR adds claude-opus-4.8 next to existing Claude Opus defaults in the GitHub Copilot DEFAULT_MODEL_IDS array. (extensions/github-copilot/models-defaults.ts:17, 60580c48679a)
  • PR diff adds manifest metadata: The PR adds a matching claude-opus-4.8 model manifest entry mirroring the existing Anthropic Messages text+image shape. (extensions/github-copilot/openclaw.plugin.json:45, 60580c48679a)
  • PR diff adds focused test coverage: The PR adds a test assertion that getDefaultCopilotModelIds() contains claude-opus-4.8. (extensions/github-copilot/models.test.ts:62, 60580c48679a)
  • Current issue context keeps structural work separate: The related open issue tracks the broader problem that the static GitHub Copilot default model list shadows live entitlement discovery; this PR is framed as an immediate static-catalog unblock, not the structural fix.
  • Model catalog provenance: GitHub Copilot model default and manifest history is concentrated in recent commits around model catalog pruning and provider model defaults, so the branch is touching the expected files for this provider catalog change. (extensions/github-copilot/models-defaults.ts:1, d1c4c3344ebf)

Likely related people:

  • steipete: Appears in the PR timeline as assigning and force-pushing the current head, and is likely connected to the current GitHub Copilot catalog branch state. (role: recent area contributor; confidence: medium; commits: 60580c48679a; files: extensions/github-copilot/models-defaults.ts, extensions/github-copilot/openclaw.plugin.json)
  • vincentkoc: The PR timeline shows a direct mention/subscription alongside the GitHub Copilot catalog review routing, making this a reasonable maintainer routing candidate even though the provided local history is compact. (role: adjacent reviewer or routed owner; confidence: low; files: extensions/github-copilot/models-defaults.ts, extensions/github-copilot/openclaw.plugin.json)
  • saju01: Reported the live entitlement/catalog gap and supplied the current static-catalog PR plus live proof; included for context, not as current-main ownership. (role: reporter and branch contributor; confidence: medium; commits: 60580c48679a; files: extensions/github-copilot/models-defaults.ts, extensions/github-copilot/openclaw.plugin.json, extensions/github-copilot/models.test.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@saju01
saju01 force-pushed the feat/copilot-opus-4.8 branch from fe0ecb9 to d329f7e Compare May 31, 2026 08:01
@openclaw-barnacle openclaw-barnacle Bot added proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels May 31, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P2 Normal backlog priority with limited blast radius. labels May 31, 2026
@steipete steipete self-assigned this May 31, 2026
GitHub Copilot now serves claude-opus-4.8 (verified via live /models
endpoint), but the static default catalog stopped at 4.7, so the model
was invisible in the picker and 'openclaw models list' until added
manually. Add it to both the manifest and the defaults list, mirroring
the existing 4.7 metadata shape.
@steipete
steipete force-pushed the feat/copilot-opus-4.8 branch from d329f7e to 60580c4 Compare May 31, 2026 15:46
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 31, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 31, 2026
@steipete

Copy link
Copy Markdown
Contributor

Maintainer landing proof for exact head 60580c4:

  • Rebased the contributor branch onto current main without changing scope; current-main merge-tree still resolves to the same Copilot-only +14/-0 diff across extensions/github-copilot/models-defaults.ts, extensions/github-copilot/openclaw.plugin.json, and extensions/github-copilot/models.test.ts.
  • Verified the manifest row for github-copilot/claude-opus-4.8 has anthropic-messages transport, text+image input, 128k context, and 8192 max tokens.
  • Exact-head CI run: https://github.com/openclaw/openclaw/actions/runs/26717096381/attempts/2. Relevant Copilot/extension and build gates passed, including build-artifacts, check-lint, check-prod-types, check-test-types, check-additional-extension-bundled, check-additional-extension-package-boundary, Real behavior proof, and OpenGrep.
  • Known unrelated CI gaps: check-dependencies fails on existing ui/src/ui/browser-redact.ts unused-file detection; checks-node-agentic-agents-core fails unrelated src/agents/bash-tools*.test.ts exec/PATH assertions. Neither touches the Copilot catalog files in this PR.

Merging with admin override for the unrelated red checks. Thanks @saju01.

@steipete
steipete merged commit fbb776d into openclaw:main May 31, 2026
253 of 258 checks passed
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 1, 2026
Add Claude Opus 4.8 to the GitHub Copilot static model catalog and default model IDs.

Updates provider manifest metadata and regression coverage so fallback/default discovery includes claude-opus-4.8.

PR: openclaw#88547
Co-authored-by: saju01 <[email protected]>
SYU8384 pushed a commit to SYU8384/openclaw that referenced this pull request Jun 3, 2026
Add Claude Opus 4.8 to the GitHub Copilot static model catalog and default model IDs.

Updates provider manifest metadata and regression coverage so fallback/default discovery includes claude-opus-4.8.

PR: openclaw#88547
Co-authored-by: saju01 <[email protected]>
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
Add Claude Opus 4.8 to the GitHub Copilot static model catalog and default model IDs.

Updates provider manifest metadata and regression coverage so fallback/default discovery includes claude-opus-4.8.

PR: openclaw#88547
Co-authored-by: saju01 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

extensions: github-copilot P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: XS status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants