Repository navigation
fix(provider): complete support for Claude Opus 5.5 and GPT-6 - #369
Merged
Merged
Conversation
filipeforattini
enabled auto-merge (squash)
September 23, 2026 03:32
This was referenced Sep 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Routing for the 2026-09-22 launches (GPT-6 Sol/Luna, Claude Opus 5.5).
Codex
CODEX_CLI_VERSION0.154.0 → 0.155.1. The backend serves GPT-6 Sol and Luna only to clients ≥ 0.155.1 (it gates on/models?client_version=and/responses). The version now reaches the User-Agent, a newversionheader (codex-rs sends one to the built-in OpenAI provider), and the/codex/modelsquery, which was hard-coded to 0.144.6.gpt-6-solandgpt-6-lunain the Codex registry. Capabilities: 272K context (the Codex default), 128K output, effort none/low..max. Pricing per 1M: Sol $2/$10 (cache read $0.20; >272K $4/$15), Luna $0.10/$0.50 (cache read $0.01; >272K $0.20/$0.75). Model briefs added.mainwas already $10/$50 (>272K $20/$75). I left it as is and pinned it in a test.Effort
minimal. Astra dropsnonebecause it declaresthinkingCanDisable: falseon Codex and in the new*gpt-6-astra*pattern.maxnow passes through on OpenAI-format providers too. Before, only Codex kept it and every other provider cut it toxhigh.minimalbecomeslowwhen a model's list haslowbut notminimal. This applies to GPT-6 and the*codex*models, in both the translator and the Codex executor. Anonerequest on a model that cannot disable thinking now drops to that model's lowest level instead of alwaysminimal. Astra getslow; Opus 5.5 and Fable 5.1 get effortlowinstead of the invalidminimal.xhigh(Opus 4.7/4.8, Opus 5.x including 5.5, Sonnet 5, Fable/Mythos 5.x) now list it. It is sent as-is instead of being mapped tohigh. Opus 4.6 and Sonnet 4.6 keep the old mapping.PATTERN_THINKINGentries take an optionalformatfilter, so these levels only apply to models whosethinkingFormatisclaude-adaptive.Claude thinking display
claude-adaptivepath used to deletethinkingon models that cannot disable it, which also droppeddisplay. It now always sends{type:"adaptive"}, which Anthropic accepts on Opus 5.5 and Fable 5.1. Adisplaysent by the client is kept. Models that cannot disable thinking getdisplay: "summarized"when the client sent none.normalizeClaudePassthrough(Claude Code passthrough) adds the samedisplay: "summarized"to a bare adaptive block for those models. It builds a newthinkingobject, so the client's original body is left unchanged.Claude Code version adoption
open-sse/utils/claudeCodeVersion.js. Anthropic can answer 400claude_code_version_too_old("... version X.Y.Z or newer is required"). The router then adopts that version process-wide. It only ever raises the version, andRED_ROUTER_CLAUDE_CODE_VERSION(documented in.env.example) always wins.DefaultExecutor.retryBodyForClientVersionreturns a body whose billing-headercc_versionhas been rewritten.BaseExecutor.executeresends it once, before any output reaches the client. It does not retry when the env pin keeps the version below the requirement, and never loops.buildHeaders(for anyclaude-cli/UA), and the billing header inclaudeCloakingreads the current version.Tests
tests/unit/codex-gpt-6.test.js,tests/unit/claude-adaptive-effort-display.test.js,tests/unit/claude-code-version-adoption.test.js(mockedproxyAwareFetch: adopt + single retry, persistence, only once, env pin, other 400s untouched).thinking-unified.test.js(now a summarized adaptive block); the Python SDK anomalyco/opencode#4031 table now expects each model's own floor (lowfor Astra); Codex version inproviders-baseline.jsonandimage-generation.test.js.validateis the check.