Core Release v1.10.1
- feat: typesafe provider, /v1/decisions endpoint, and decision emulation via forced tool-calling for providers without native decision support (#7355, #7361, #7384, #7440)
- feat: provider-level session affinity through the SessionAffinity seam, bound on request outcome
- feat: Claude Opus 5.5 computer_toolset_20260801 support with toolset_name round-trip, and disabled-thinking/forced-tool-choice gating overridable from the datasheet (#7433, #7434, #7441)
- feat: safeguards/safeguard_results passthrough for Claude Code auto-mode on direct Anthropic, stripped elsewhere; raw carrier for unknown Anthropic stream events (#7393, #7440)
- fix: rewrite tool-schema regex NUL escapes and lookarounds for Moonshot and DeepSeek models only (#7430)
- fix: strip Anthropic billing header at ingress and restore it only for Anthropic-family attempts (#7431)
- fix: honor HTTP_PROXY/HTTPS_PROXY/NO_PROXY for MCP connections with a pre-proxy link-local guard (#7437)
- fix: stop rewriting OpenAI
computertool to computer_use_preview (#7426) (thanks @abhishekgahlot2!) - fix: linear StripEmptyThinkingBlocks and beta-header gating without full body decode (#7406)
- fix: strip Bedrock cachePoint markers copy-on-write for non-Bedrock providers, preserved for fallbacks (#7182)
- fix: Bedrock tool results with empty-string JSON keys sent as text (#7396)
- fix: deep copy extended Responses fields in DeepCopyResponsesMessage (#7422)
- fix: frame bundled OpenAI chat stream raw frames with a data prefix each (#7440)
- fix: stream errors after startup events (response.created, in_progress, empty role delta) now reach retry and fallback for OpenAI models on every host (OpenAI, Bedrock, Bedrock Mantle, Vertex, custom providers), not only Azure; an overloaded stream no longer reaches the client as an error when a fallback is configured
- [perf]: avoid redundant JSON decoding in Responses request preparation
- [fix]: preserve xhigh reasoning effort for Grok 4.7 @nettee
- [fix]: Bedrock InvokeModel keeps cache_control when any message's content is a plain string. BedrockMessage.Content is typed as content blocks, so one bare string anywhere in messages[] failed the standard unmarshal and diverted the whole request into the AI21 string fallback, which rebuilt the messages without calling applyMessageContentCacheControl. Every cache_control in the request was dropped rather than only the one on the string message, so prompt caching went off silently with just the system cachePoint surviving. The fallback now makes the same translation the standard path does (#7336) @basil-k-aji-dev
- [fix]: web search action sources round-trip their name and no longer fabricate an empty url. OpenAI Responses web search can return specialized API sources ({"type":"api","name":"oai-weather"}) that carry a name and no URL; the typed source schema only modeled type and a required url, so decode dropped name and re-encode emitted "url":"", and the OpenAI request-side source sanitization rebuilt sources without name. url is now omitempty and name survives both the schema round-trip and the sanitization path (#7356) @g-yixuan
Installation
go get github.com/maximhq/bifrost/core@v1.10.1This release was automatically created from version file: core/version