authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-10-07 12:09:52-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-10-07 12:09:52-07:00
log9f48092ec95dd9eab78931601de95be0107a930c
tree58ad623816418e46e35628c43ac9e2e469e95fc4
parentba0ea3d152150f399827d36a5b4b86c5bbda2d7f
signature Signed by PGP key B5690EEEBB952194

fix(server): Claude 5-series models always run 1M context (#16908)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

4 files changed, 19 insertions(+), 114 deletions(-)

apps/server/src/claudeModelOptions.test.ts+6-5
......@@ -17,15 +17,16 @@ describe("compileClaudeModelSelection", () => {
1717 it("compiles context, effort, and settings together", () => {
1818 expect(
1919 compileClaudeModelSelection(
20 selection("claude-fable-5", [
20 selection("claude-opus-4-6", [
2121 { id: "contextWindow", value: "1m" },
22 { id: "effort", value: "ultracode" },
22 { id: "effort", value: "max" },
23 { id: "fastMode", value: true },
2324 ]),
2425 ),
2526 ).toMatchObject({
26 apiModelId: "claude-fable-5[1m]",
27 effort: "xhigh",
28 settings: { ultracode: true },
27 apiModelId: "claude-opus-4-6[1m]",
28 effort: "max",
29 settings: { fastMode: true },
2930 });
3031 });
3132
apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts+3-7
......@@ -97,7 +97,6 @@ import {
9797} from "../../provider/Drivers/ClaudeHome.ts";
9898import {
9999 BUNDLED_CLAUDE_MODEL_CATALOG,
100 resolveClaudeCatalogContextWindow,
101100 resolveClaudeCatalogContextWindowTokens,
102101} from "../../provider/ClaudeModelCatalog.ts";
103102import {
......@@ -138,12 +137,9 @@ export const CLAUDE_PROVIDER = ProviderDriverKind.make("claudeAgent");
138137export const CLAUDE_AGENT_SDK_QUERY_PROTOCOL = "claude-agent-sdk.query" as const;
139138
140139function claudeContextWindow(modelSelection: ModelSelection): number | null {
141 if (modelSelection.model === "claude-opus-4-6" || modelSelection.model === "claude-opus-4-7") {
142 return 1_000_000;
143 }
144 return resolveClaudeCatalogContextWindow(BUNDLED_CLAUDE_MODEL_CATALOG, modelSelection) === "1m"
145 ? 1_000_000
146 : 200_000;
140 return (
141 resolveClaudeCatalogContextWindowTokens(BUNDLED_CLAUDE_MODEL_CATALOG, modelSelection) ?? null
142 );
147143}
148144
149145export function claudeProviderTurnTokenUsage(
apps/server/src/provider/ClaudeModelCatalog.ts+1-1
......@@ -215,7 +215,7 @@ export function isClaudeCatalogUltracodeEffort(effort: string | null | undefined
215215 return effort === "ultracode";
216216}
217217
218export function resolveClaudeCatalogContextWindow(
218function resolveClaudeCatalogContextWindow(
219219 catalog: ClaudeModelCatalog,
220220 modelSelection: ModelSelection | undefined,
221221): string | undefined {
apps/server/src/provider/model-manifest.json+9-101
......@@ -1,6 +1,6 @@
11{
22 "version": 1,
3 "updatedAt": "2026-10-07T18:00:00Z",
3 "updatedAt": "2026-10-07T19:00:00Z",
44 "compatibility": [
55 {
66 "driver": "codex",
......@@ -145,22 +145,6 @@
145145 }
146146 ],
147147 "promptInjectedValues": ["ultrathink"]
148 },
149 {
150 "id": "contextWindow",
151 "label": "Context Window",
152 "type": "select",
153 "options": [
154 {
155 "id": "200k",
156 "label": "200k"
157 },
158 {
159 "id": "1m",
160 "label": "1M",
161 "isDefault": true
162 }
163 ]
164148 }
165149 ]
166150 },
......@@ -170,15 +154,7 @@
170154 "ultracode": "xhigh",
171155 "ultrathink": null
172156 },
173 "modelSuffixes": {
174 "contextWindow": {
175 "1m": "[1m]"
176 }
177 },
178 "contextWindowTokens": {
179 "200k": 200000,
180 "1m": 1000000
181 }
157 "fixedContextWindowTokens": 1000000
182158 }
183159 }
184160 },
......@@ -204,23 +180,13 @@
204180 ],
205181 "promptInjectedValues": ["ultrathink"]
206182 },
207 { "id": "fastMode", "label": "Fast Mode", "type": "boolean" },
208 {
209 "id": "contextWindow",
210 "label": "Context Window",
211 "type": "select",
212 "options": [
213 { "id": "200k", "label": "200k" },
214 { "id": "1m", "label": "1M", "isDefault": true }
215 ]
216 }
183 { "id": "fastMode", "label": "Fast Mode", "type": "boolean" }
217184 ]
218185 },
219186 "adapter": {
220187 "claudeCode": {
221188 "effortMap": { "ultracode": "xhigh", "ultrathink": null },
222 "modelSuffixes": { "contextWindow": { "1m": "[1m]" } },
223 "contextWindowTokens": { "200k": 200000, "1m": 1000000 }
189 "fixedContextWindowTokens": 1000000
224190 }
225191 }
226192 },
......@@ -269,22 +235,6 @@
269235 "id": "fastMode",
270236 "label": "Fast Mode",
271237 "type": "boolean"
272 },
273 {
274 "id": "contextWindow",
275 "label": "Context Window",
276 "type": "select",
277 "options": [
278 {
279 "id": "200k",
280 "label": "200k"
281 },
282 {
283 "id": "1m",
284 "label": "1M",
285 "isDefault": true
286 }
287 ]
288238 }
289239 ]
290240 },
......@@ -294,15 +244,7 @@
294244 "ultracode": "xhigh",
295245 "ultrathink": null
296246 },
297 "modelSuffixes": {
298 "contextWindow": {
299 "1m": "[1m]"
300 }
301 },
302 "contextWindowTokens": {
303 "200k": 200000,
304 "1m": 1000000
305 }
247 "fixedContextWindowTokens": 1000000
306248 }
307249 }
308250 },
......@@ -524,7 +466,7 @@
524466 ]
525467 },
526468 "adapter": {
527 "claudeCode": {}
469 "claudeCode": { "fixedContextWindowTokens": 200000 }
528470 }
529471 },
530472 "sonnet-5": {
......@@ -562,22 +504,6 @@
562504 }
563505 ],
564506 "promptInjectedValues": ["ultrathink"]
565 },
566 {
567 "id": "contextWindow",
568 "label": "Context Window",
569 "type": "select",
570 "options": [
571 {
572 "id": "200k",
573 "label": "200k",
574 "isDefault": true
575 },
576 {
577 "id": "1m",
578 "label": "1M"
579 }
580 ]
581507 }
582508 ]
583509 },
......@@ -586,15 +512,7 @@
586512 "effortMap": {
587513 "ultrathink": null
588514 },
589 "modelSuffixes": {
590 "contextWindow": {
591 "1m": "[1m]"
592 }
593 },
594 "contextWindowTokens": {
595 "200k": 200000,
596 "1m": 1000000
597 }
515 "fixedContextWindowTokens": 1000000
598516 }
599517 }
600518 },
......@@ -682,23 +600,13 @@
682600 { "id": "ultrathink", "label": "Ultrathink" }
683601 ],
684602 "promptInjectedValues": ["ultrathink"]
685 },
686 {
687 "id": "contextWindow",
688 "label": "Context Window",
689 "type": "select",
690 "options": [
691 { "id": "200k", "label": "200k" },
692 { "id": "1m", "label": "1M", "isDefault": true }
693 ]
694603 }
695604 ]
696605 },
697606 "adapter": {
698607 "claudeCode": {
699608 "effortMap": { "ultrathink": null },
700 "modelSuffixes": { "contextWindow": { "1m": "[1m]" } },
701 "contextWindowTokens": { "200k": 200000, "1m": 1000000 }
609 "fixedContextWindowTokens": 1000000
702610 }
703611 }
704612 },
......@@ -713,7 +621,7 @@
713621 ]
714622 },
715623 "adapter": {
716 "claudeCode": {}
624 "claudeCode": { "fixedContextWindowTokens": 200000 }
717625 }
718626 }
719627 },