Skip to content

feat: add Claude Sonnet 5.5 pricing, catalog rows and request contract - #6210

Merged
lidge-jun merged 4 commits into
devfrom
codex/sonnet-5-5-catalog
Sep 28, 2026
Merged

lidge-jun merged 4 commits into
devfrom
codex/sonnet-5-5-catalog

Conversation

@lidge-jun

Copy link
Copy Markdown
Owner

Summary

Anthropic released Claude Sonnet 5.5 (claude-sonnet-5-5) on 2026-09-28. Live discovery already lists anthropic/claude-sonnet-5-5, but with no price, no max output and supports_reasoning: false, and nothing outside Anthropic carries it. Its request contract also differs from Sonnet 5, so the adapter sent requests Sonnet 5.5 rejects:

Request to claude-sonnet-5-5 Before After
reasoning none thinking: {type:"disabled"} → 400 thinking: {type:"between_tools"} → 200
temperature / top_p set forwarded → 400 dropped → 200
tool choice required / named any / tool → 400 auto → 200 (same downgrade as Opus 5.5)

Catalog and pricing, all 1M context / 128K output at the Sonnet 5 price ($2 / $10 / $0.20 cache read / $2.50 5m cache write):

  • Snapshot rows (regenerated table): anthropic; Bedrock anthropic. and global. at list, us./eu./jp./au. at 1.1x; OpenRouter, Vercel and Kilo anthropic/claude-sonnet-5.5; Venice claude-sonnet-5-5 (its published 3.75 / 18.75); GitHub Copilot claude-sonnet-5-5 (GA 2026-09-28).
  • Anthropic seed and context window, which also reaches the claude-cli roster; Cursor capability and effort tier (flat ids like Opus 5.5 until the live roster lists it); Claude Desktop picker suggestion.
  • Price overlays: anthropic, anthropic-apikey, cursor (published on Cursor's model page); devin and devin-cli (derived).
  • Preemptive, labelled in source, for providers that have not listed it yet: Devin seed/context, Kiro claude-sonnet-5.5, opencode-zen, ZenMux anthropic/claude-sonnet-5.5, Cloudflare anthropic/claude-sonnet-5-5. Kiro and Devin show the id in their static pickers, so a call can fail upstream until they ship it.
  • Not added: Anthropic has no Sonnet fast mode, so no fast rows; Command Code and Opper seed no Sonnet 5 today and price through the Anthropic vendor row; opencode-go carries no Claude.

The per-family wire rules moved into src/adapters/anthropic-model-contract.ts, which the web-search and vision sidecars now also use for their thinking-off field, so a sidecar pointed at Sonnet 5.5 sends between_tools instead of a rejected disabled. Sidecar defaults and Claude Code's native tier map stay on claude-sonnet-5 (installed Claude Code 2.1.283 still sends that id).

Known residuals, unchanged here: dotted Bedrock ids (us.anthropic.claude-sonnet-5-5) do not parse as a Claude family for these rules (true for every family today), and the Messages-native passthrough forwards the caller's thinking and sampling fields as sent.

Sources: platform.claude.com pricing, models overview, Sonnet 5.5 overview / what's new / migration guide, effort and fast-mode pages; cursor.com/docs/models/claude-sonnet-5-5; GitHub changelog and Copilot pricing; models.dev, OpenRouter, Vercel, Kilo and Venice model APIs; live checks of Devin, Kiro, Command Code, opencode, Opper, ZenMux and Cloudflare catalogs. Plan, audit and live evidence: devlog/_plan/260929_sonnet_5_5_catalog/.

Verification

  • Live, api.anthropic.com with adapter-built bodies: the three "before" shapes return 400 with Anthropic's messages; the "after" shapes, effort medium and max, and the Sonnet 5 disabled control all return 200.
  • bun run typecheck, bun run structure:check, bun run privacy:scan: pass.
  • bun test on the 13 touched/regression files (new anthropic-sonnet-5-5-contract.test.ts, anthropic reasoning and tool-choice, usage-cost, cursor catalog, kiro adapter, devin adapter, metadata sync, file-size ratchet, test layout, web-search anthropic, intercept model bindings): 460 pass / 0 fail.
  • bun run test:changed (1428 files) in a /private/tmp checkout of this commit with isolated OPENCODEX_HOME/CODEX_HOME: 28689 pass / 19 fail. The 19 are in 7 service, launcher-signal and native-toggle files; run alone, those files give the same 339 pass / 3 fail on this branch and on dev 09f8e5ebfe, so none comes from this change. Full cross-platform coverage is left to CI.

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

Anthropic released Claude Sonnet 5.5 (claude-sonnet-5-5) on 2026-09-28. Live
discovery listed it with no price, no max output and no effort ladder, and its
request contract differs from Sonnet 5: thinking disabled/enabled, forced
tool_choice and non-default sampling parameters all return 400.

- Snapshot rows for anthropic, Bedrock (six ids, regional 1.1x), OpenRouter,
  Vercel, Kilo, Venice and GitHub Copilot, plus preemptive opencode-zen, ZenMux
  and Cloudflare rows; all 1M / 128K at 2 / 10 / 0.20 / 2.50.
- Anthropic seed and context (also claude-cli), Cursor capability and effort
  tier, Claude Desktop picker suggestion; preemptive Devin and Kiro rows.
- Price overlays for anthropic, anthropic-apikey and cursor (published) and
  devin/devin-cli (derived).
- New src/adapters/anthropic-model-contract.ts: Sonnet 5.5 reasoning none sends
  between_tools, forced tool choice degrades to auto, temperature/top_p are
  dropped. The web-search and vision sidecars pick their thinking-off field
  from it. Verified live against api.anthropic.com.

Plan, audit and live evidence: devlog/_plan/260929_sonnet_5_5_catalog/.
@lidge-jun
lidge-jun requested a review from Ingwannu as a code owner September 28, 2026 19:49
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-28T19:54:27.113241Z 5dd482a PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@lidge-jun
lidge-jun merged commit c34c4d2 into dev Sep 28, 2026
7 of 9 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

✅ Deterministic PR hygiene checks passed.

@lidge-jun
lidge-jun deleted the codex/sonnet-5-5-catalog branch September 28, 2026 19:49
@github-actions github-actions Bot added the enhancement New feature or request label Sep 28, 2026
@coderabbitai

coderabbitai Bot commented Sep 28, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: Repository: lidge-jun/opencodex/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: f0f9da79-217f-456f-865e-904d727e0101

📥 Commits

Reviewing files that changed from the base of the PR and between 09f8e5e and 5dd482a.

⛔ Files ignored due to path filters (1)
  • src/generated/model-metadata.ts is excluded by !**/generated/**
📒 Files selected for processing (25)
  • devlog/_plan/260929_sonnet_5_5_catalog/010_plan.md
  • devlog/_plan/260929_sonnet_5_5_catalog/020_audit.md
  • devlog/_plan/260929_sonnet_5_5_catalog/030_done.md
  • scripts/model-metadata.source.json
  • scripts/test-layout/layout.json
  • src/adapters/anthropic-model-contract.ts
  • src/adapters/anthropic.ts
  • src/adapters/cursor/catalog.ts
  • src/adapters/cursor/effort-map.ts
  • src/adapters/devin/live-models.ts
  • src/claude/intercept/model-bindings.ts
  • src/providers/kiro-models.ts
  • src/providers/registry/entries-core.ts
  • src/providers/registry/model-seeds.ts
  • src/usage/expected-prices.ts
  • src/vision/anthropic-describe.ts
  • src/web-search/anthropic-executor.ts
  • structure/providers-and-adapters.md
  • structure/providers/chat-compat.md
  • tests/adapters/anthropic/anthropic-sonnet-5-5-contract.test.ts
  • tests/fixtures/test-layout-expected.json
  • tests/providers/cursor/cursor-catalog.test.ts
  • tests/providers/devin-adapter.test.ts
  • tests/providers/kiro/kiro-adapter.test.ts
  • tests/usage/usage-cost.test.ts
 _______________________________________________
< Edge cases are just center cases in disguise. >
 -----------------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Ingwannu

Copy link
Copy Markdown
Owner

Post-merge audit found that the new Kiro Sonnet 5.5 row is user-visible despite Kiro currently rejecting the model: Kiro uses a static catalog with liveModels disabled. I opened #6214 to remove only that unsupported route, preserve direct Anthropic/accounting behavior, and add a regression plus architecture note. Focused validation is 210/210 green under capped resources. @lidge-jun @luvs01 please prioritize exact-head review of the corrective PR.

lidge-jun added a commit that referenced this pull request Sep 28, 2026
…very Claude family (#6217)

* docs(devlog): plan Claude contract hardening and PR carries

* docs(devlog): fold hardening plan audit

* fix(anthropic): apply the live sampling and tool-choice contract to every Claude family

A live probe of api.anthropic.com on 2026-09-29 showed the Sonnet 5.5 rules
from #6210 were narrower than the upstream contract:

- Opus 4.7+, Sonnet 5+ and every Fable return 400 on any non-default
  temperature/top_p, with or without thinking. The adapter only dropped them
  when it sent thinking, so a no-reasoning request with temperature failed.
- Haiku 4.5, Sonnet 4.5/4.6 and Opus 4.5/4.6 take either field alone but 400
  when both are sent; top_p is now dropped when both are present.
- Fable 5.1 rejects forced tool_choice like Opus 5.5; it now degrades to auto.
- Opus 5.5 and Fable reject both thinking disabled and between_tools, so the
  web-search and vision sidecars send a low effort and no thinking field for
  them (verified to end_turn with text inside a 1,024-token budget).

Plan, audit and evidence: devlog/_plan/260929_dev_next_hardening_carry/.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants