core/v1.12.0
maximhq/bifrostcore/v1.12.0Oct 13, 2026by akshaydeo
Upgrading?
AI Summary
This foundational release introduces the Agent Gateway runtime (A2A), standardizes decision formats to an OpenAI-style list shape, and adds support for new providers like Cloudflare Workers AI and XAI.
Key Highlights
- Agent Gateway runtime with A2A request, event, and trace contracts.
- Standardization of decision requests and answers to OpenAI-style list shapes.
- New providers: Cloudflare Workers AI and XAI (realtime) with native decision support.
- Bedrock guardrail selective evaluation and passthrough capabilities.
- Global HTTP client factory for proxy configuration and unified tracing.
Breaking Changes
- Deprecate map form for decision requests in favor of OpenAI-style list shape.
- Deprecate attribution context keys in favor of ctx.Grant() accessors.
New Features
- Agent Gateway runtime with streaming and durable push delivery.
- OpenAI decision converters for OpenAI, Perplexity, Ollama, and OpenRouter.
- GPT live session schemas and live provider interface.
- Shell and apply_patch tools with execution limits.
- Multimodal embedding input with per-item params for various providers.
- BifrostContextKeyGovernanceDisableContentLogging span attribute.
- RawPayloadConsumer and raw request/response fields on LLM spans.
Full Release Notes
## Core Release v1.12.0 - feat: agent gateway runtime with A2A request, event and trace contracts, card discovery, A2A plugin pipeline, streaming, durable push delivery and opt-in private push callbacks; `schemas.Tracer` gains `ReleaseTrace` - feat: gpt live session schemas, live provider interface and openai implementation, with sideband attach routes, the `live_sideband` request type and delegation error recording - feat: add cloudflare workers ai provider with chat, responses, embeddings, model listing and native clef decisions - feat: inject any number of named provider-configured mcp tools into chat and responses requests, past tool filters, and execute them server side including streaming - feat: oauth_key_config mints bearer tokens for openai-compatible providers through a shared token cache, also used by databricks and github copilot - feat: normalise decision requests and answers to an openai-style list shape (map form deprecated) and add openai decision converters for the openai-format route - feat: native decision support for openai, perplexity, ollama and openrouter - feat: emulate decisions through responses only when the request is marked by convert_decision_to_responses - feat: Typesafe can back a custom provider (base_provider_type "typesafe") with its own name, keys, allowed_requests, request_path_overrides and keyless listing [@akshaydeo](https://github.com/akshaydeo) - feat: complexity router decision classifier support: RequestType on routing calls and decision cost tracking - feat: multimodal embedding input with per-item params for cohere, gemini, vertex, bedrock nova/titan and parasail - feat: shell and apply_patch tools, allowed_callers translation and gemini code execution on the responses api - feat: add ModelRetrieve operation for openai, anthropic, cohere, gemini, mistral and ollama - feat: xai realtime provider with client-secret minting; realtime events keep their own copy of raw bytes - feat: bedrock passthrough for InvokeAgent, knowledge-base Retrieve and ApplyGuardrail; pass through azure content filter annotations - feat: vertex aws workload identity federation and sdk-chain resolution for aws external_account json - feat: add ToolUsage.WebSearch usage and deprecate NumSearchQueries - feat: add IgnoreProviderCost to provider config - feat: add BifrostContextKeyCompatForceReasoningOnlyToResponses - feat: route chat requests with reasoning.mode to the responses api on openai and azure, and carry reasoning.summary through chat to responses conversion - feat: stamp the deepseek served model and read server_side_model from the datasheet - feat: classify provider failures (including timeout and cancelled), rotate keys past permanent per-key failures and carry provider retry hints on errors - feat: per-attempt first-token deadline for stream attempts with fallback handover - feat: requested_provider and requested_model on RoutingInfo and as reserved context keys - feat: Access.AllowsEveryModel for provider-wide model grants - feat: passthrough body model fields for governance checks - feat: require_public_target on MCP clients, enforced on every dial - feat: allowlisted private dialer for MCP OAuth - feat: capture, aggregate and inject upstream MCP server instructions, with per-client and total byte caps - feat: RefreshMCPClientTools for on-demand tool rediscovery - feat: detect dead MCP sessions on tool calls and reconnect; retry probe timeouts but not dead sessions or auth failures - feat: bound code mode execution with step, memory, source, log, tool-call, value and nesting limits - feat: process-wide HTTP client factory so MCP, OAuth, catalog sync and OTLP follow the global API proxy - feat: BifrostContextKeyGovernanceDisableContentLogging and bifrost.content_logging.disabled span attribute - feat: BifrostContextKeyLoadBalancerAttempt and LoadBalancerMetadataPrefix - feat: add HTTPTransportResponseHeadersHook and pooled HTTPResponseMetadata to HTTP transport plugins - feat: add Warp config schema, log embedding configuration, multi-model selection and agent error codes - feat: add BifrostContextKeyCacheLookup to carry the cache lookup outcome before a response exists - feat: add RawPayloadConsumer and raw request/response fields on LLM spans - feat: add StripTraceAttributes for per-connector attribute denylists - feat: add bifrost.cost.* attributes and BifrostContext.CalculateCostBreakdown for plugins - feat: add bifrost.app span attribute derived from User-Agent - feat: add TraceSessionID and TraceDimensions accessors for connector metric tags - feat: add typed LLMSpanData, SpanEnrichment and connector demand interfaces - feat: expose failure identity for pre-dispatch errors - feat: add BifrostGuardrailDetection for detect-only guardrail policy matches - feat: Bedrock guardrail selective evaluation: guardContent blocks (text and image) survive conversion, guardrailConfig accepts a validated tagSuffix and streamProcessingMode, InvokeModel reads X-Amzn-Bedrock-Guardrail* headers, and the same guard_content marker is available on Chat Completions content blocks (#7696) [@akshaydeo](https://github.com/akshaydeo) - chore: deprecate attribution context keys in favour of ctx.Grant() accessors - fix: gpt-5.6+ requests carrying cache_control are no longer switched to prompt_cache_options.mode "explicit"; markers still become prompt_cache_breakpoint (at most three in implicit mode, four when the caller sets explicit mode) [@akshaydeo](https://github.com/akshaydeo) - fix: report truncated Content-Length response streams and discard incomplete connections (thanks [@Constantine3](https://github.com/Constantine3)!) - fix: a tool_result flagged is_error keeps its status "incomplete" marker on the OpenAI Responses wire (#8195) (thanks [@shreyanshj10](https://github.com/shreyanshj10)!) - fix: Responses to chat conversion maps output_text to text on multi-part assistant turns (#8196) (thanks [@shreyanshj10](https://github.com/shreyanshj10)!) - fix: preserve cache_control, citations, prompt_cache_breakpoint and cachePoint in deepCopyChatContentBlock (#8215) (thanks [@Shashank2985](https://github.com/Shashank2985)!) - fix: Anthropic-compatible responses report stop_reason "stop_sequence" with the matched stop_sequence for Claude on Anthropic and Vertex, streaming and non-streaming (thanks [@jimseiwert](https://github.com/jimseiwert)!) - fix: Anthropic error envelope always uses a documented error.type, mapped from google.rpc status names or the HTTP status when needed (thanks [@jimseiwert](https://github.com/jimseiwert)!) - fix: Gemini/Vertex Responses conversion keeps function tools declared without input_schema and orders function responses to match the preceding calls (thanks [@jimseiwert](https://github.com/jimseiwert)!) - fix: chat streams converted from a Responses upstream send the assistant role exactly once, on the first chunk (#7693) (thanks [@hmdsefi](https://github.com/hmdsefi)!) - fix: preserve Mistral streaming text arrays and reject unsupported content blocks (thanks [@xujiantop-crypto](https://github.com/xujiantop-crypto)!) - fix: map chat completion n to Gemini candidateCount (#7388) (thanks [@axelray-dev](https://github.com/axelray-dev)!) - fix: record output items before closing open items on Gemini streaming Responses when parts and finishReason share a frame (#7341) (thanks [@wofiporia](https://github.com/wofiporia)!) - fix: strip the Claude Code billing header again when an effort-only system message comes first, and restore it in place for Anthropic attempts (#8039) [@akshaydeo](https://github.com/akshaydeo) - fix: infer http status for stream errors and key-selection failures - fix: skip catalog-inferred fallbacks on caller-fault errors; forward raw gemini logprobs - fix: refuse aggregate model listing with a direct key, return the provider's error for a refused direct key, and bind no session key for direct keys - fix: restore primary provider headers after exhausted fallbacks and name plugin-answered fallbacks in stream routing headers - fix: apply the global proxy to providers without their own and honour multi-entry no_proxy lists - fix: route every provider egress stack, auth client and url fetch through proxy_config, with https and ipv6 proxies - fix: build passthrough urls that stay on the provider host - fix: keep replicate file list pagination on the configured file endpoint - fix: validate azure realtime endpoint before use and contain websocket session panics - fix: fit output tokens and thinking budget per attempt after key selection - fix: clamp max_tokens and rewrite adaptive thinking for pre-adaptive claude models - fix: send custom tools as function tools when the datasheet marks them unsupported - fix: read default reasoning effort from the datasheet when deciding to strip sampling params - fix: add opt-out capability for reasoning.summary - fix: clear paired item ids when stripping rejected reasoning - fix: downgrade json_schema response_format to json_object on deepseek - fix: keep gemini responses-path parity for json mode, native tools, candidateCount, logprobs and urlContextMetadata - fix: normalize root schema compositions for claude tools on bedrock converse - fix: per-model tool schema policy for kimi on chat and responses - fix: carry anthropic mid-conversation tool changes through the responses representation - fix: disable genai raw-body passthrough for non-google providers and model garden models on vertex - fix: keep the vertex passthrough api version and poll veo operations in their own region - fix: preserve safeguard_results in streamed message_delta - fix: error on bedrock converse streams missing messageStop - fix: emit cachePoint after cached document blocks on bedrock converse - fix: keep reasoning item ids and encrypted tokens through bedrock converse and chat-to-responses replays; forward store - fix: preserve thinking block order for bare claude model ids - fix: computer tool actions array, computer tool muxing and server tool cache_control - fix: omit null logprobs on history output_text and keep stream extra_fields on the openai responses drop-in - fix: send only OpenAI embedding params to OpenAI-compatible providers; label Cohere embeddings_by_type - fix: gemini $ref tool outputs, vertex express auth and image/transcription extra params on fallbacks - fix: fan out gemini embedding taskType and title per entry - fix: capture raw request on bedrock and vertex embeddings - fix: forward anthropic extra params through bedrock conversion (thanks [@wangrat](https://github.com/wangrat)!) - fix: accept matching reasoning_effort and reasoning.effort (thanks [@Daltonganger](https://github.com/Daltonganger)!) - fix: align typesafe validation and fidelity with the typesafe sdk - fix: bound per-provider model list polls and resume pagination after the last returned id (thanks [@novai42](https://github.com/novai42)!) - fix: allow empty copilot key values for github app auth and distinguish 422 permission errors - fix: cohere replay thinking order, decisions tool_choice gate, served tier on chat bridge, bare sonar routing, mcp server_label, legacy prompt framing - fix: hold back retried stream errors from post-hooks - fix: end large-response previews on a utf-8 boundary - fix: float weighted key selection that ignores negative or non-finite weights - fix: session affinity skips direct-key fallbacks and caller key pins, drops bindings to removed keys in single-key pools, and falls back to sibling keys when a session-bound key is rejected outright - fix: read the message context before abandoning delivery - fix: route code-mode tool results through PostMCPHook before logging - fix: MCP agent loop keeps earlier turns, the turn-1 route and caller cache points - fix: keep the live MCP connection on a failed make-before-break re-dial and reconnect after a failed live-connection check - fix: preserve pending_verification through EnableClient and the connection checker - fix: report a rejected inbound bearer token separately from a missing one in token exchange - fix: treat only masked placeholders as keep-stored for OAuth credentials - fix: redact x-bf-vk in captured request headers - fix: add BifrostError.EffectiveHTTPStatus as the single source for the status a caller received - fix: add span attribute helpers for chat tools export - fix: defer trace completion for abandoned deliveries ### Installation ```bash go get github.com/maximhq/bifrost/core@v1.12.0 ``` --- _This release was automatically created from version file: `core/version`_
Related Repositories
ollama/ollama★ 184,258
Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models.
fatedier/frp★ 110,072
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
infiniflow/ragflow★ 92,646
RAGFlow is a leading open-source Retrieval-Augmented Generation (RAG) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs
gohugoio/hugo★ 90,197
The world’s fastest framework for building websites.
junegunn/fzf★ 83,716
:cherry_blossom: A command-line fuzzy finder