> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getbifrost.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# v2.0.0-prerelease2

> v2.0.0-prerelease2 changelog - 2026-07-16

<Tabs>
  <Tab title="NPX">
    ```bash theme={null}
    npx -y @maximhq/bifrost --transport-version v2.0.0-prerelease2
    ```
  </Tab>

  <Tab title="Docker">
    ```bash theme={null}
    docker pull maximhq/bifrost:v2.0.0-prerelease2
    docker run -p 8080:8080 maximhq/bifrost:v2.0.0-prerelease2
    ```
  </Tab>
</Tabs>

<Update label="Bifrost(HTTP)" description="2.0.0-prerelease2">
  ## ✨ Features

  * **Sarvam AI Provider** - Added Sarvam AI as a first-class provider with chat, text-to-speech, and speech-to-text support (thanks [@Purvi09](https://github.com/Purvi09)!)
  * **ElevenLabs Sound Effects** - Added text-to-sound generation support via `/v1/sound-generation` (thanks [@SecretSun](https://github.com/SecretSun)!)
  * **Bedrock Project Scoping** - Added optional `project_id` to Bedrock and Bedrock Mantle key configs with per-alias overrides for Bedrock, Bedrock Mantle, and Vertex, plus UI support
  * **Trace Redaction** - Phase-scoped redaction and revealing, transient redaction data field for guardrails, and trace content redaction before connector export
  * **Durable Background Jobs** - New `sidekiq` background-job table, store methods, and runner with recovery and reaper; cost recalculation migrated to a durable, resumable job with polling instead of SSE
  * **Audit Log Object Storage** - S3/GCS object storage config schema for audit log archival
  * **Alerting Configuration** - Alerting schema in `config.schema.json` with declarative channels and CEL-based rules, Helm chart support, and enterprise fallback pages
  * **Model Catalog Pricing** - Added pricing data to the model catalog (thanks [@johnbrett](https://github.com/johnbrett)!)
  * **Canonical Model Names** - Dashboard model rankings now show canonical model names instead of inference-profile IDs (thanks [@satyamkrishna](https://github.com/satyamkrishna)!)
  * **OAuth2 Hardening** - Allowlist for private-use redirect URI schemes (RFC 8252 §7.1) and a `shouldSweep` gate on the OAuth2 sweep worker
  * **Mirrored Schema Support** - `schema_url` / `BIFROST_SCHEMA_URL` for mirrored schema locations in isolated deployments
  * **Vertex Single-Region Config** - Enforce single-region configuration in Vertex key config
  * **Helm Chart Updates** - `bifrost.alerting`, audit-log object storage, `postgresql.external.port` string support, and `bifrost.mcp.toolGroups[*].id`

  ## 🐞 Fixed

  * **Governance Rate-Limit Reset CPU** - Guards against invalid reset timeouts, parallelized resting-budget flows only when absolutely required, and fixed the calendar-based alignment qualifier
  * **Masked Key Persistence** - Never persist masked provider key previews to config storage (thanks [@eyeveil](https://github.com/eyeveil)!)
  * **OpenShift Arbitrary UIDs** - Build-time group-0 ownership with no runtime chown (thanks [@eyeveil](https://github.com/eyeveil)!)
  * **Passthrough Virtual Key Attribution** - Passthrough calls via the Azure `api-key` header now attribute to the virtual key (thanks [@eyeveil](https://github.com/eyeveil)!)
  * **Rerank for Custom Providers** - `/v1/rerank` now works with custom OpenAI-compatible providers (thanks [@eyeveil](https://github.com/eyeveil)!)
  * **Responses Stream Usage** - Persist stream usage when providers omit or reuse sequence numbers (thanks [@eyeveil](https://github.com/eyeveil)!)
  * **Wildcard allowed\_models Repair** - Repair bare wildcard `allowed_models` rows that broke admin provider updates (thanks [@eyeveil](https://github.com/eyeveil)!)
  * **Streaming Error Panic** - Nil-safe tracing span lookup prevents panics on streaming errors (thanks [@eyeveil](https://github.com/eyeveil)!)
  * **Anthropic Tool ID Sanitization** - Sanitize `tool_use`/`tool_result` ids to Anthropic's charset (thanks [@Shaik-Sirajuddin](https://github.com/Shaik-Sirajuddin)!)
  * **Realtime Transcription Sessions** - Support GA transcription-type sessions in `POST /v1/realtime/client_secrets` (thanks [@Shaik-Sirajuddin](https://github.com/Shaik-Sirajuddin)!)
  * **Diarized Transcription** - Support `diarized_json` segments and ElevenLabs speaker passthrough (thanks [@Shaik-Sirajuddin](https://github.com/Shaik-Sirajuddin)!)
  * **Model Discovery** - Skip disabled keys when scheduling model-discovery fetches (thanks [@Shaik-Sirajuddin](https://github.com/Shaik-Sirajuddin)!)
  * **MCP Timeout Placeholder** - Show the real global default in the MCP tool execution timeout placeholder (thanks [@Shaik-Sirajuddin](https://github.com/Shaik-Sirajuddin)!)
  * **Redacted Thinking Round-Trip** - Round-trip Anthropic `redacted_thinking` blocks on the Responses surface (thanks [@fus3r](https://github.com/fus3r)!)
  * **Streaming Accumulation** - Preserve citation annotations and `finish_reason` in the accumulated streaming response (thanks [@fus3r](https://github.com/fus3r)!)
  * **Gemini Grounded Streaming** - Reset web-search flag when recycling pooled stream state so `web_search_call` items keep emitting (thanks [@fus3r](https://github.com/fus3r)!)
  * **Vertex gs\:// Images** - Pass through `gs://` image URLs on Vertex Gemini
  * **Bedrock Truncation Signal** - Signal `max_output_tokens` truncation on the Responses API (thanks [@jeremym-tanium](https://github.com/jeremym-tanium)!)
  * **Bedrock Reasoning Config** - Preserve `reasoning_config` on cross-provider translation so fallbacks keep extended thinking (thanks [@Purvi09](https://github.com/Purvi09)!)
  * **Anthropic tool\_search** - Forward and rebuild server-side `tool_search` on the Responses path (thanks [@ws4charlie](https://github.com/ws4charlie)!)
  * **OpenAI Responses Input** - Strip `role` from non-message input items (thanks [@nettee](https://github.com/nettee)!) and serialize compaction request `input` correctly (thanks [@mcclurmc](https://github.com/mcclurmc)!)
  * **additional\_tools Support** - Added `additional_tools` message type support, preserving nested tool types on `/v1/responses`
  * **Plugin Stream Errors** - Emit structured plugin stream errors on integration routes (thanks [@jeffhos](https://github.com/jeffhos)!)
  * **Pooled Object Hygiene** - Zero pooled ChannelMessage references on release and sweep orphaned deferred spans in trace store TTL cleanup (thanks [@citrocat](https://github.com/citrocat)!)
  * **Hybrid Log Token Usage** - Rebuild token usage from denormalized columns in hybrid log list (thanks [@G-XD](https://github.com/G-XD)!)
  * **MCP Tool Ordering** - Deterministic MCP tool ordering for prompt cache stability
  * **MCP Inline-Auth Links** - Warn callers not to truncate the `#t=` temp-token fragment (thanks [@MarcusPeng](https://github.com/MarcusPeng)!)
  * **Gemini Fixes** - Web search options map to Google Search grounding, file upload MIME types preserved, and video reference fields map to instances (thanks [@vojthor](https://github.com/vojthor)!)
  * **OpenAI Parameters** - Honor service tier in chat completion and cap max reasoning effort
  * **Anthropic Costing** - Correct inference geo cost and cache rate for fast mode
  * **SecretVar Parsing** - Parse `SecretVar` JSON with `ref`/`env_var` fields even when `value` is absent
  * **Telemetry** - Forward request id and trace id, reduce metrics cardinality explosion risk, and send status codes on OTEL metrics
  * **Dashboard** - Preserve active time period when applying dimension filters, adjust bucket size thresholds for month-range durations, show user popover with `preferred_username` fallback, and filter provider-level keys from the prompt manager selector (thanks [@rlex](https://github.com/rlex)!)
  * **API Key Provider Selection** - Fixed provider selection for API keys
  * **Azure Auth Headers** - Pass Azure auth headers in helpers
  * **Stream Delta Schema** - Added `ExtraContent` to `ChatStreamResponseChoiceDelta` (thanks [@nghodkicisco](https://github.com/nghodkicisco)!)
  * **Log Store Migrations** - Removed a duplicate materialized-view rebuild step from the log store migration registry and fixed the app-column step running the wrong migration function
  * **Config Store Migrations** - Cleaned up the sidekiq table creation migration
  * **Dashboard Sidebar** - Removed unused sidebar icon imports that broke the UI build

  ## 🐙 Closed GitHub Issues

  * [#2347](https://github.com/maximhq/bifrost/issues/2347) - MCP tool ordering is non-deterministic, breaking prefix-based prompt caching
  * [#3455](https://github.com/maximhq/bifrost/issues/3455) - Segfault/nil dereference panic in Bedrock provider
  * [#4318](https://github.com/maximhq/bifrost/issues/4318) - allowed\_models persisted as bare "\*" string blocks subsequent provider updates
  * [#4353](https://github.com/maximhq/bifrost/issues/4353) - config.db corruption from masked-key preview in provider\_configs JSON column
  * [#4367](https://github.com/maximhq/bifrost/issues/4367) - Image incompatible with OpenShift arbitrary UIDs
  * [#4402](https://github.com/maximhq/bifrost/issues/4402) - Vertex provider drops image blocks whose URL uses gs\:// scheme
  * [#4477](https://github.com/maximhq/bifrost/issues/4477) - Passthrough calls using a Virtual Key log as actual key
  * [#4679](https://github.com/maximhq/bifrost/issues/4679) - Bedrock Responses API does not signal max\_output\_tokens truncation
  * [#4689](https://github.com/maximhq/bifrost/issues/4689) - Custom providers cannot set budget
  * [#4712](https://github.com/maximhq/bifrost/issues/4712) - ElevenLabs sound effects (/v1/sound-generation)
  * [#4780](https://github.com/maximhq/bifrost/issues/4780) - Anthropic server-side tool\_search results are dropped on /v1/responses
  * [#4834](https://github.com/maximhq/bifrost/issues/4834) - /v1/rerank is not available with custom providers
  * [#4846](https://github.com/maximhq/bifrost/issues/4846) - Responses stream usage present in response.completed but not persisted in LLM Logs
  * [#4851](https://github.com/maximhq/bifrost/issues/4851) - Governance rate-limit reset causes high CPU in BumpRateLimitUsage
  * [#4870](https://github.com/maximhq/bifrost/issues/4870) - Pooled ChannelMessage retains request body, context, and undelivered response while idle
  * [#4940](https://github.com/maximhq/bifrost/issues/4940) - Show canonical model names instead of Bedrock inference-profile IDs in Model Rankings
  * [#4963](https://github.com/maximhq/bifrost/issues/4963) - Streaming finish\_reason dropped from the accumulated (logged) response
  * [#5002](https://github.com/maximhq/bifrost/issues/5002) - gpt-4o-transcribe-diarize transcription fails due to string segment IDs
  * [#5013](https://github.com/maximhq/bifrost/issues/5013) - OpenAI /responses/compact input serialized as a JSON object causing 400
  * [#5027](https://github.com/maximhq/bifrost/issues/5027) - MCP Tool Execution Timeout placeholder shows 0 instead of real global default
  * [#5036](https://github.com/maximhq/bifrost/issues/5036) - Plugin StreamInterceptionError is flattened on integration routes
  * [#5037](https://github.com/maximhq/bifrost/issues/5037) - Disabled keys break provider model discovery
  * [#5051](https://github.com/maximhq/bifrost/issues/5051) - Add Sarvam AI provider (chat + TTS/STT)
  * [#5061](https://github.com/maximhq/bifrost/issues/5061) - Streaming responses drop citation annotations from the accumulated message
  * [#5093](https://github.com/maximhq/bifrost/issues/5093) - Streaming /v1/responses drops Anthropic redacted\_thinking blocks
  * [#5097](https://github.com/maximhq/bifrost/issues/5097) - Anthropic rejects replayed tool\_use/tool\_result ids from non-conforming upstream providers
  * [#5100](https://github.com/maximhq/bifrost/issues/5100) - additional\_tools loses nested tool types on /v1/responses
  * [#5101](https://github.com/maximhq/bifrost/issues/5101) - Chat-to-Responses tool replay sends role on function\_call input items
  * [#5108](https://github.com/maximhq/bifrost/issues/5108) - Bedrock reasoning\_config silently dropped on cross-provider translation
  * [#5113](https://github.com/maximhq/bifrost/issues/5113) - Gemini/Vertex streaming stops emitting web\_search\_call items after first grounded request
</Update>

<Update label="Core" description="1.7.2">
  * feat: added ChatGPT passthrough support to the OpenAI provider
  * feat: added user-agent tracking schemas with custom user-agent mapping
  * feat: MCP tool execution plugin pipeline improvements
</Update>

<Update label="Framework" description="1.5.2">
  * feat: added user-agent tracking columns, materialized views, and migrations to the log store
  * feat: added endpoint-agent columns (device\_id, app\_key, decision, source) to mcp\_tool\_logs for Edge agent log ingestion
  * fix: removed a duplicate materialized-view rebuild step from the log store migration registry and pointed the app-column step at the correct migration function
  * fix: cleaned up the sidekiq table creation migration
  * chore: upgraded core to v1.7.2
</Update>

<Update label="compat" description="0.1.28">
  * chore: upgraded core to v1.7.2 and framework to v1.5.2
</Update>

<Update label="governance" description="1.6.6">
  * feat: added resolver support for Bifrost Edge fallback pages
  * chore: upgraded core to v1.7.2 and framework to v1.5.2
</Update>

<Update label="jsonparser" description="1.5.29">
  * chore: upgraded core to v1.7.2 and framework to v1.5.2
</Update>

<Update label="logging" description="1.6.2">
  * feat: added user-agent tracking to LLM and MCP logs
  * fix: added missing direct `github.com/google/uuid` dependency
  * chore: upgraded core to v1.7.2 and framework to v1.5.2
</Update>

<Update label="maxim" description="1.6.29">
  * chore: upgraded core to v1.7.2 and framework to v1.5.2
</Update>

<Update label="mocker" description="1.5.29">
  * chore: upgraded core to v1.7.2 and framework to v1.5.2
</Update>

<Update label="modelcatalogresolver" description="1.0.10">
  * chore: upgraded core to v1.7.2 and framework to v1.5.2
</Update>

<Update label="otel" description="1.4.1">
  * chore: upgraded core to v1.7.2 and framework to v1.5.2
</Update>

<Update label="prompts" description="1.0.29">
  * chore: upgraded core to v1.7.2 and framework to v1.5.2
</Update>

<Update label="semanticcache" description="1.5.29">
  * chore: upgraded core to v1.7.2 and framework to v1.5.2
</Update>

<Update label="telemetry" description="1.5.29">
  * chore: upgraded core to v1.7.2 and framework to v1.5.2
</Update>
