Skip to content

fix: preserve forced tool selection through fallback (v0.30.59) - #1010

Merged
mylukin merged 2 commits into
mainfrom
codex/fix-sonnet-forced-tools
Oct 28, 2026
Merged

mylukin merged 2 commits into
mainfrom
codex/fix-sonnet-forced-tools

Conversation

@mylukin

@mylukin mylukin commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Sonnet 5.5 accepts ordinary tools but rejects forced tool_choice (any / named tool). Helm previously sent these requests anyway and stopped the chain on the resulting 400.

Add an optional supportsForcedToolChoice capability and mark Sonnet 5.5 unsupported. Skip it before token counting or execution, retain the client's tool requirement for compatible fallback models, and show a clear skip reason. Existing deterministic invalid-request handling remains unchanged; no compatible candidate still returns 422.

Validation: 379 focused tests passed, including native Anthropic normalization and streaming/non-streaming fallback; shared/core/gateway typechecks, targeted Biome/Prettier checks, and git diff --check passed. No database migration. Production rollout requires both the new image and capability configuration.

Release v0.30.59: ran pnpm release:prepare 0.30.59 and recorded official stable Grok 1.0.70, Claude Code 2.1.312, and Codex 0.165.0 with its same-tag model catalog. A read-only comparison of verified Claude binaries found three remote-worker ticket headers; they remain excluded and now have regression assertions. No trusted-header expansion. The official Codex snapshot adds Terra metadata without changing lane priorities.

Additional validation: 232 release, protocol, identity, and locale tests passed. The initial CI locale-key mismatch is fixed across every supported admin language. Deployment will preserve server-specific routing and update the Sonnet capability only on the direct Anthropic instance; the LAN relay represents a remote fallback chain.

mylukin and others added 2 commits October 28, 2026 17:01
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
@mylukin mylukin changed the title fix: skip models that reject forced tool selection fix: preserve forced tool selection through fallback (v0.30.59) Oct 28, 2026
@mylukin
mylukin merged commit 7ae19c5 into main Oct 28, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant