transports/v2.2.3
commaai/openpilottransports/v2.2.3Sep 24, 2026by akshaydeo
Upgrading?
AI Summary
HTTP transport release adding pinned keys on routing fallbacks, GPT-6 prompt cache support, and async tool execution, alongside various bug fixes for OpenAI and Bedrock providers.
Key Highlights
- Pinned keys can be assigned to routing rule fallbacks via config
- OpenAI async tool execution and GPT-6 prompt cache breakpoints
- Session affinity now correctly moves pinned keys with their providers
- OpenRouter Anthropic cache breakpoints preserved
Breaking Changes
- Go SDK callers: `ResponsesMCPApprovalResponse.ApprovalResponseID` renamed to `ApprovalRequestID`
- Message type changed to `mcp_approval_response`
- `ResponsesToolMessage.Error` and `ResponsesParameters.Conversation` are now union types
New Features
- Pinned Keys on Routing Fallbacks
- OpenAI Async Tool Execution
- GPT-6 Prompt Cache Breakpoints
- GPT-6 Sol and Luna Reasoning Off
Full Release Notes
## 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`, or `provider_key_name` in config.json. The UI rule editor lets you pick or clear a key per fallback. Unpinned fallbacks keep the legacy `provider/model` string, so existing rules keep their config hash (#7470, #7379, #7380, #7381) - **OpenAI Async Tool Execution** - The `async` flag on Responses tools and tool calls, `output_schema` on function tools and `tunnel_id` on MCP tools are now forwarded to OpenAI. `async` is stripped for models without support, and the datasheet `supports_async_tools` field 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_breakpoint` field can override this (#7240) - **GPT-6 Sol and Luna Reasoning Off** - `reasoning.effort: "none"` is forwarded for `gpt-6-sol` and `gpt-6-luna`. Other GPT-6 models keep reasoning on (#7492) ## 🐞 Fixed - **OpenAI Sampling Parameters on Reasoning Models** - `temperature`, `top_logprobs` and `logprobs` are now stripped alongside `top_p` on chat and Responses when the model and effort do not support them. An omitted `reasoning.effort` now counts as `none` only for models that default to no reasoning (#7239) - **Responses API Wire Shapes** - Structured MCP tool-call errors, object-form `conversation`, array-form MCP `allowed_tools`, `approval_request_id` on MCP approval responses, and `in`/`nin` file search filters now decode and re-encode correctly (#7241) <Warning>Go SDK callers: `ResponsesMCPApprovalResponse.ApprovalResponseID` is now `ApprovalRequestID`, the message type is now `mcp_approval_response`, and `ResponsesToolMessage.Error` and `ResponsesParameters.Conversation` are now union types, where they used to be `*string`.</Warning> - **OpenRouter Anthropic Cache Breakpoints** - Anthropic models routed through OpenRouter now keep their `cache_control` breakpoints, 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 `enabled` keeps the stored value, where it used to write NULL - **Telemetry User Labels Toggle** - `user_labels_enabled` is now saved with the telemetry config (#7490) ## 🗄️ Database Migrations - No new database migrations in this release. ### Installation #### Docker ```bash docker run -p 8080:8080 maximhq/bifrost:v2.2.3 ``` #### Binary Download ```bash npx @maximhq/bifrost --transport-version v2.2.3 ``` ### Docker Images - **`maximhq/bifrost:v2.2.3`** - This specific version - **`maximhq/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._
Related Repositories
public-apis/public-apis★ 491,139
A collective list of free APIs
NousResearch/hermes-agent★ 255,979
The agent that grows with you
yt-dlp/yt-dlp★ 200,075
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,496
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,705
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.