Repository navigation
Conversation
Wire claude-fable-5-1 across the full first-party model pipeline, mirroring the Fable 5 rollout (cheaper-inference#3524): model spec (1M context, 128k output, adaptive-only thinking, rejects thinking.type:"disabled" per cheaper-inference#3554), pricing (native $15/$75, cc OAuth $10/$50), fallback chain (fable-5-1 -> fable-5 -> opus-4-8 -> opus-4-7 -> sonnet-5), 1M-context beta header, fast mode, cost data, and the cc/claude, claude-web, anthropic, vertex, vertex-partner, ghe-copilot and github registries. Fable 5.1 is listed first in each Claude catalog, so it becomes the default resolved Fable tier (ANTHROPIC_DEFAULT_FABLE_MODEL). Kiro stays excluded (its upstream serves no Fable tier, cheaper-inference#6170). Effort variants (low/medium/high/xhigh) synthesize automatically from the spec. Adds regression tests (catalog exposure + pricing, fable-5-1 -> fable-5 fallback, cheaper-inference#3554 adaptive-thinking guard, adaptive-sampling parity) and updates the claude-web exact-set and "flagship first" assertions to the new tier.
Anthropic gates claude-fable-5-1 behind Claude Code >= 2.1.251; with the pinned 2.1.220 fingerprint every Fable 5.1 request over the native Claude OAuth path failed upstream with "400 Claude Code 2.1.220 does not support this model; version 2.1.251 or newer is required". Bump the canonical wire identity (src/shared/constants/claudeCodeClient.ts) to the values captured from the signed Claude Code 2.1.258 binary via a loopback ANTHROPIC_BASE_URL listener: claude-cli/2.1.258, billing cc_version=2.1.258.1e2, X-Stainless-Package-Version 0.112.1 (X-Stainless-Runtime-Version stays v26.3.0 under Bun 1.4.1). The dashboard routing preset now imports CLAUDE_CODE_CLIENT_BUILD_REVISION instead of hardcoding "1f2", and the docs / .env.example CLAUDE_USER_AGENT default are refreshed to the new fingerprint (the example still advertised 2.1.219). Drift-guard tests were flipped first (red against 2.1.220), then the constant bumped (green); the translate-path golden snapshot was regenerated and its diff is exactly the User-Agent and X-Stainless-Package-Version lines.
The Devin Claude bridge installs a real Claude Code CLI inside its image (Dockerfile ARG + compose build arg), still pinned at 2.1.220 while the Claude identity OmniRoute impersonates moved to 2.1.258 for Fable 5.1. Raise the pin to the same generation: it is the first CLI line that knows the Fable 5.1 tier natively, and it keeps the containerized CLI aligned with the fingerprint the executor emits. Scope note: the pin only affects the containerized CLI. OmniRoute rewrites the User-Agent and the x-anthropic-billing-header line on the Claude OAuth path (open-sse/executors/base.ts), so Anthropic's "2.1.251 or newer" gate never sees the bridge's own CLI version. Validation on the pinned base image (node:26.0.0-bookworm-slim, arm64): the install layer builds and `claude --version` reports 2.1.258; the bridge unit suite (39/39), `compose config` and the static isolation proof pass. The offline mock e2e and the three-scenario live suite were NOT re-run on the new pin: the full image build (`npm run build`) exhausted an 8 GB Docker VM. The doc's status callout records exactly that so nobody mistakes the old 2.1.220 validation for the new pin.
This was referenced Sep 3, 2026
diegosouzapw
added a commit
that referenced
this pull request
Sep 3, 2026
…o 2.1.258 (#12604) 17 de 18 checks verdes, **zero falhas** — incluindo os quatro shards de unit, Vitest, CodeQL, semgrep, Docs Gates, Merge integrity e o **Fast Quality Gates**, que era exatamente o que o rebaseline do `RoutingTab.tsx` (1606→1607, a linha do seletor que acompanha a nova versão de identidade) veio consertar. O único check restante, `No new ESLint warnings`, ficou enfileirado sem iniciar (duração 0) atrás da saturação de runners de hoje. Cobri os dois comandos que ele executa, localmente e sobre este HEAD: - `npm run check:codeql-ratchet` → **0 alertas abertos** contra baseline 6 (sem regressão). - `npx eslint --max-warnings 0` nos 9 arquivos de código que esta branch altera → **exit 0**, nenhum warning. Conteúdo: os dois commits do #12402 que não estavam subsumidos, com autoria do @ggiak preservada pelo cherry-pick `-x`, mais o rebaseline e o fragmento de changelog que faltava. `typecheck:core` limpo e **138/138** nos testes focados. As três versões (`claudeCodeClient.ts`, `Dockerfile`, `compose.yml`) conferem em 2.1.258, e `npm view @anthropic-ai/claude-code@2.1.258` resolve — o Dockerfile instala esse pin exato.
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…o 2.1.258 (cheaper-inference#12604) 17 de 18 checks verdes, **zero falhas** — incluindo os quatro shards de unit, Vitest, CodeQL, semgrep, Docs Gates, Merge integrity e o **Fast Quality Gates**, que era exatamente o que o rebaseline do `RoutingTab.tsx` (1606→1607, a linha do seletor que acompanha a nova versão de identidade) veio consertar. O único check restante, `No new ESLint warnings`, ficou enfileirado sem iniciar (duração 0) atrás da saturação de runners de hoje. Cobri os dois comandos que ele executa, localmente e sobre este HEAD: - `npm run check:codeql-ratchet` → **0 alertas abertos** contra baseline 6 (sem regressão). - `npx eslint --max-warnings 0` nos 9 arquivos de código que esta branch altera → **exit 0**, nenhum warning. Conteúdo: os dois commits do cheaper-inference#12402 que não estavam subsumidos, com autoria do @ggiak preservada pelo cherry-pick `-x`, mais o rebaseline e o fragmento de changelog que faltava. `typecheck:core` limpo e **138/138** nos testes focados. As três versões (`claudeCodeClient.ts`, `Dockerfile`, `compose.yml`) conferem em 2.1.258, e `npm view @anthropic-ai/claude-code@2.1.258` resolve — o Dockerfile instala esse pin exato.
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
The Devin Claude bridge installs a real Claude Code CLI inside its image. It was still pinned at
2.1.220while the Claude identity OmniRoute impersonates moved to2.1.258in #12344 (for Fable 5.1). This raises the bridge pin to the same generation — the first CLI line that knows the Fable 5.1 tier natively — so the containerized CLI matches the fingerprint the executor emits.Scope note. The pin only affects the containerized CLI. OmniRoute strips the client's
x-anthropic-billing-headerline and rewrites theUser-Agenton the Claude OAuth path (open-sse/executors/base.ts), so Anthropic's2.1.251 or newergate never sees the bridge's own CLI version. This is alignment, not a fix for that 400.What changed
docker/devin-bridge/Dockerfile—ARG CLAUDE_CODE_VERSIONdefault2.1.220→2.1.258.docker/devin-bridge/compose.yml— the sharedx-runtimebuild arg, same bump (coversomniroute,claude,contractand the live services).docs/DEVIN_CLAUDE_BRIDGE.md— architecture line + status callout. The callout now states that the offline/live validation on record was performed on2.1.220, and lists what was and was not re-run on the new pin.CHANGELOG.md—[Unreleased]→ 📝 Maintenance entry.Validation
On the pinned base image (
node:26.0.0-bookworm-slim, arm64):claude --version→2.1.258 (Claude Code);npm ls -g→claude-code@2.1.258. The same install layer also completed inside the full image build.scripts/devin-bridge/test-unit— 39/39.docker compose -f docker/devin-bridge/compose.yml --profile offline config— valid;CLAUDE_CODE_VERSION: 2.1.258resolved in all three services.scripts/devin-bridge/verify-anthropic-isolation --static— PASS.npm run check:docs-allgreen; prettier clean.Not re-run (needs a larger Docker VM): the offline mock e2e (
scripts/devin-bridge/test-e2e-mock) and the three-scenario live suite.scripts/devin-bridge/buildfailed at thenpm run buildlayer withResourceExhaustedon an 8 GB Docker Desktop VM — a layer this PR does not touch. Steps 3–5 of "Updating pinned tools" in the doc remain open, and the doc callout says so explicitly.Devin CLI
Unchanged (
3000.2.17, archive checksums untouched).