github maximhq/bifrost core/v1.8.5
Core v1.8.5

3 hours ago

Core Release v1.8.5

  • fix: map forced tool choice any to required on OpenAI Responses and Chat egress (#6887) @Atharva-Kanherkar
  • [fix]: preserve max reasoning effort for GPT-6 Astra @nettee
  • fix: give a Bedrock message a placeholder text block instead of a null content field when it has no text and no tool calls - BedrockMessage.Content has no omitempty, so a message with empty text and no tool calls (or an empty tool_calls array) serialized as content:null, which Converse rejects with "Member must not be null" (#2765)
  • [fix]: marshal required nullable response fields as null @PSR94
  • fix: accept top-level arrays from OpenAI-compatible model APIs @dani29
  • feat: add Baseten to Hugging Face inference provider discovery @nicolastoulemont
  • fix: strip the encrypted reasoning signature when the upstream reports the field as unsupported (e.g. Bedrock Converse replaying a Claude signature onto a non-Anthropic model after a mid-conversation model switch), extending the existing unverifiable-signature fail-soft
  • fix: clear Anthropic raw-body passthrough based on the resolved provider and model pair, so non-Claude models on multi-family providers (Vertex, Azure, Bedrock Mantle) convert the request instead of passing the Anthropic payload through
  • feat: optionally synthesize prompt-cache breakpoints for requests that carry none, so agentic clients that emit no cache markers (Codex and similar) stop paying the cache-write rate on every turn; off by default per provider via prompt_cache.auto_inject, with cache_control_injection_points for role/index targeting, and extended to translate the marker into prompt_cache_breakpoint plus explicit cache mode on the gpt-5.6 family
  • fix: drop unsigned reasoning blocks from Bedrock Converse replays to Claude, which verifies the thinking signature and rejects a block without one in every serialisation; Nova and MiniMax keep receiving unsigned blocks with the field omitted. Gated on a new datasheet capability bedrock_requires_signed_reasoning with an Anthropic-family fallback (#6624)
  • fix: render reasoning the upstream actually returned on Bedrock Converse-shaped responses (/bedrock converse and the framework drop-ins that reuse it): a native Grok or OpenAI reasoning summary with no encrypted content was resolved through the request-direction redacted shape and silently dropped, so clients saw text only; the response direction now emits reasoningText for exposed text and keeps redactedContent for opaque blocks, while replays to Bedrock are unchanged @akshaydeo
  • feat: add Databricks as a first-class provider covering Model Serving and Unity AI Gateway with PAT or OAuth M2M auth, per-model parameter sanitization from datasheet capabilities, Claude reasoning translation, remote image inlining, Responses-to-chat fallback and surfaced upstream errors (#6665, #6676, #6770, #6958)
  • feat: add GitHub Copilot provider that mints installation tokens server-to-server from GitHub App credentials, with chat completions, Responses and list models (#6352, #6353, #6356)
  • feat: add virtual MCP server support, endpoint slugs for direct MCP servers, and config.json wiring for mcp.virtual_mcps (#6746, #6791, #6904)
  • feat: add the project governance dimension to request context, schemas and log payloads (#6702, #6705)
  • feat: settle per-request identity onto a grant at context conversion and rename AllowOnAllVirtualKeys to AllowByDefault with backward-compatible wire aliases (#6306, #6307, #6308, #6641, #6642, #6649)
  • feat: add allow_all_providers to virtual key schemas (#6662)
  • feat: add semantic complexity routing contracts, vector store and embedding executor, LLM classifier fallback, session-aware routing and the 750-phrase limit; rename BifrostCacheDebug, BifrostGuardrailDebug and BifrostRoutingDebug to *Metadata with type aliases, and rename the routing_debug field to routing_metadata (#6164, #6166, #6177, #6317, #6722, #6727)
  • feat: support native raw request redaction for Anthropic and Gemini passthrough and add RawStreamTextCodec with a paused buffer transform for native SSE redaction (#6365, #6386)
  • feat: route Azure DeepSeek Responses requests from coding harnesses to chat completions, fall back for models without a Responses endpoint, and gate it on compat.azure_deepseek (#6326, #6737)
  • feat: split converter processing into individual span buckets and add the overhead spans export toggle (#6588, #6945)
  • feat: persist the served model from the provider response (#6693)
  • feat: record MCPConnectionFailure on client state (#6794)
  • feat: remove the plugin version field in favour of hash-based reconciliation (#6250)
  • fix: patch fasthttp to remove races when closing streams, drain abandoned streams so upstream connections return to the pool, terminate streams that send only heartbeats after usage, and add does_not_send_done_marker for custom providers (#6799, #6802, #6948, #6960)
  • fix: alias assistant reasoning_content for Groq and Cerebras instead of stripping it (#6949)
  • fix: populate summary_index, summary text and signatures on reasoning_summary_* stream events for Anthropic, Bedrock and Gemini (#6902)
  • fix: derive chat finish_reason from the Responses terminal state and incomplete details (#6901)
  • fix: emit proper terminal events for Anthropic response.incomplete and response.failed instead of truncating, and synthesize a missing terminal text suffix from output_text.done (#6159, #6805)
  • fix: route Anthropic-on-Vertex passthrough usage and stream terminal detection through the Anthropic parsers (#6639)
  • fix: remove raw body passthrough when the provider does not support the output config format (#6798)
  • fix: route Bedrock models to Converse (#6655)
  • fix: keep standalone thoughtSignature parts with empty text on native GenAI (#6745)
  • fix: use max_tokens instead of max_completion_tokens for Ollama (#6607)
  • fix: send rerank documents as Cohere v2 strings, not objects (thanks @AdityaPainuli!) (#6654)
  • fix: handle reasoning efforts for Azure providers (#6877)
  • fix: thinking block modification error on replay (#6854)
  • fix: skip custom providers in list models when the request is not allowed to use them (#6853)
  • fix: pass the MIME type in file responses (#6684)
  • fix: retry video job polling and record video debug data (#6728)
  • fix: translate cache_control breakpoints for OpenRouter Claude models on the Responses API (#6692)
  • fix: block Teredo addresses in the dial-time SSRF guard and run MCP auth through SSRF checks (#6757, #6760)

Installation

go get github.com/maximhq/bifrost/core@v1.8.5

This release was automatically created from version file: core/version

Don't miss a new bifrost release

NewReleases is sending notifications on new releases.