diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index c6784f450244..5842eccee8ea 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -916,7 +916,27 @@ export namespace Provider { : undefined, }, limit: { - context: model.limit.context, + context: iife(() => { + // Override stale context window data from models.dev for GitHub Copilot Claude models. + // Anthropic official context windows: https://docs.anthropic.com/en/docs/about-claude/models + if (m.api.npm === "@ai-sdk/github-copilot") { + const contextOverrides: Record = { + "claude-opus-4.6": 1_000_000, + "claude-opus-4-6": 1_000_000, + "claude-sonnet-4.6": 1_000_000, + "claude-sonnet-4-6": 1_000_000, + "claude-opus-4.5": 200_000, + "claude-opus-4-5": 200_000, + "claude-sonnet-4.5": 200_000, + "claude-sonnet-4-5": 200_000, + "claude-haiku-4.5": 200_000, + "claude-haiku-4-5": 200_000, + } + const override = Object.entries(contextOverrides).find(([k]) => model.id.includes(k)) + if (override) return override[1] + } + return model.limit.context + }), input: model.limit.input, output: model.limit.output, }, diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index f651a5b91aaf..8bcfcd404368 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -465,7 +465,10 @@ export namespace ProviderTransform { } if (model.id.includes("claude")) { return { - thinking: { thinking_budget: 4000 }, + low: { thinking_budget: 1_000 }, + medium: { thinking_budget: 4_000 }, + high: { thinking_budget: 10_000 }, + max: { thinking_budget: 16_000 }, } } const copilotEfforts = iife(() => {