Bifrost HTTP Transport Release v2.2.3
✨ Features
- Pinned Keys on Routing Fallbacks - Each routing-rule fallback can pin a provider key via
key_id, orprovider_key_namein config.json. The UI rule editor lets you pick or clear a key per fallback. Unpinned fallbacks keep the legacyprovider/modelstring, so existing rules keep their config hash (#7470, #7379, #7380, #7381) - OpenAI Async Tool Execution - The
asyncflag on Responses tools and tool calls,output_schemaon function tools andtunnel_idon MCP tools are now forwarded to OpenAI.asyncis stripped for models without support, and the datasheetsupports_async_toolsfield can override this (#7242) - GPT-6 Prompt Cache Breakpoints - Prompt-cache breakpoints now cover the GPT-6 family on OpenAI, Azure, Bedrock and Bedrock Mantle. The datasheet
supports_prompt_cache_breakpointfield can override this (#7240) - GPT-6 Sol and Luna Reasoning Off -
reasoning.effort: "none"is forwarded forgpt-6-solandgpt-6-luna. Other GPT-6 models keep reasoning on (#7492)
🐞 Fixed
- OpenAI Sampling Parameters on Reasoning Models -
temperature,top_logprobsandlogprobsare now stripped alongsidetop_pon chat and Responses when the model and effort do not support them. An omittedreasoning.effortnow counts asnoneonly for models that default to no reasoning (#7239) - Responses API Wire Shapes - Structured MCP tool-call errors, object-form
conversation, array-form MCPallowed_tools,approval_request_idon MCP approval responses, andin/ninfile search filters now decode and re-encode correctly (#7241)
Go SDK callers:ResponsesMCPApprovalResponse.ApprovalResponseIDis nowApprovalRequestID, the message type is nowmcp_approval_response, andResponsesToolMessage.ErrorandResponsesParameters.Conversationare now union types, where they used to be*string. - OpenRouter Anthropic Cache Breakpoints - Anthropic models routed through OpenRouter now keep their
cache_controlbreakpoints, based on the model capability (#7521) - Session Affinity with Pinned Keys - When session affinity reorders the chain, a routing rule's key pin now moves with its provider, so the pinned key is never looked up under the wrong provider (#7468)
- Session Affinity Route Matching - A session's route is now matched on provider and model together. Bindings the request followed into a failure are dropped (#7473)
- Databricks Gemini System Prompts - Multiple system and developer messages are merged into one for Gemini models hosted on Databricks, which reject more than one system prompt (#7461)
- Bedrock Encrypted Reasoning Replay - Bedrock's "encrypted reasoning was created for a different account or model" error now triggers the strip-and-retry path for unverifiable reasoning
- Decisions on Bedrock Mantle - Decision emulation now sends
tool_choice: "auto"for gpt-oss models on Bedrock Mantle, which reject"required". Leaked parameter tags with surrounding whitespace are now recovered - Gemini Transcription Usage - Usage is reported even when the transcript is empty
- Routing Rule Enabled State - Syncing or updating a routing rule that omits
enabledkeeps the stored value, where it used to write NULL - Telemetry User Labels Toggle -
user_labels_enabledis now saved with the telemetry config (#7490)
🗄️ Database Migrations
- No new database migrations in this release.
Installation
Docker
docker run -p 8080:8080 maximhq/bifrost:v2.2.3Binary Download
npx @maximhq/bifrost --transport-version v2.2.3Docker Images
maximhq/bifrost:v2.2.3- This specific versionmaximhq/bifrost:latest- Latest version (updated with this release)
This release was automatically created with dependencies: core v1.10.2, framework v1.7.4. All plugins have been validated and updated.