ent-v2.3.0-base
maximhq/bifrostent-v2.3.0-baseOct 13, 2026by akshaydeo
Upgrading?
AI Summary
Enterprise base release focusing on governance improvements, connection reliability, MCP tool management, and telemetry enhancements. Includes business unit governance, dynamic client recovery, and improved tracing capabilities.
Key Highlights
- Enhanced governance with business unit ownership for virtual keys and access profiles
- Improved live connection handling with better dead-session detection and recovery
- New MCP client tool rediscovery capabilities with UI actions
- Enhanced OAuth client recovery with reregistration support for evicted DCR registrations
- Improved tracing with typed LLM spans, cost breakdown exports, and metric dimensions
Breaking Changes
- Authenticated-user-without-access-profile breaking change documented
New Features
- RefreshMCPClientTools for on-demand tool rediscovery across all client types
- ReregisterDynamicClient and POST /api/mcp/client/{id}/reregister endpoint
- Business unit governance for virtual keys and access profiles
- Typed LLM span payload and attribute renderer
- Authenticated gateway transport and CLI improvements
- Model selector component with hidden deprecated models
- Session collapse and rollup aggregates in logs
- Token usage reading through BifrostResponse.NormalizedUsage
Full Release Notes
## What's Changed
* fix(governance): preserve VK provider-config key associations when PUT omits key_ids by @xiechimon in https://github.com/maximhq/bifrost/pull/7362
* fix: preserve live connection on failed make-before-break re-dial instead of tearing it down by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/6921
* fix: trigger reconnect after failed live-connection check instead of re-probing the same dead session by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/6922
* feat: extend dead-session detection and recovery to `executeToolInternal`, renaming `attemptAuthFailureRecovery` to `attemptCallFailureRecovery` by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/6923
* fix: retry probe timeouts but treat dead sessions and auth failures as permanent in `ProbeRetryConfig` by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/6924
* chore: clarify that connect-failure checker stops itself rather than retrying and rename test to match by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/6925
* fix: preserve `pending_verification` state through `EnableClient` and connection checker by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/6926
* test: add STDIO respawn and SSE stream-drop checker reconnect tests by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/6930
* docs: overhaul health monitoring docs to reflect adaptive cadence, automatic reconnect recovery, and simplified config knob by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/6931
* feat: add `RefreshMCPClientTools` for on-demand tool rediscovery across all client types by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/6927
* feat: add "Refresh tools" action to MCP client table for immediate tool re-discovery by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/6928
* docs: add `refresh-tools` endpoint and Manual Tool Refresh section across MCP connection docs by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/6929
* feat: add `flow_id` to reauthorize status polling so stale "authorized" config status is not mistaken for a completed consent by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7041
* docs: add authenticated-user-without-access-profile breaking change and clarify `allow_by_default` scope in v2.1.0 changelog by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7050
* fix: surface context-aware rejection message when inbound bearer token is rejected during delegated exchange by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7051
* feat: add `ReregisterDynamicClient` and `POST /api/mcp/client/{id}/reregister` to recover from evicted DCR registrations by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7228
* feat: add "Reauthorize with a new client" action to re-register OAuth client when provider rejects the existing `client_id` by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7229
* docs: add `reregister` endpoint and "Reauthorizing with a new client" section for invalid/dropped DCR client recovery by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7230
* fix: widen OAuth2 client-controlled columns (`state`, `scope`, `client_name`) from `varchar` to `text` to stop Postgres rejecting long values with `server_error` by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7405
* feat(grant): access profiles can be held by teams, business units and customers by @BearTS in https://github.com/maximhq/bifrost/pull/7251
* feat(governance): a virtual key can be owned by a business unit by @BearTS in https://github.com/maximhq/bifrost/pull/7253
* feat(ui): the enterprise customer sheet no longer edits legacy limits by @BearTS in https://github.com/maximhq/bifrost/pull/7254
* feat(ui): assign a virtual key to a business unit, and show when a profile governs it by @BearTS in https://github.com/maximhq/bifrost/pull/7255
* feat(governance): refuse an entity's own budgets when an external governs it by @BearTS in https://github.com/maximhq/bifrost/pull/7386
* fix(governance): leave a governed entity's stored limits alone when config.json still declares them by @BearTS in https://github.com/maximhq/bifrost/pull/7401
* feat(ui): dac updates for permissions on ui by @BearTS in https://github.com/maximhq/bifrost/pull/7404
* feat: add `LegacyLimitHolderBusinessUnit` constant for business unit governance by @BearTS in https://github.com/maximhq/bifrost/pull/7421
* feat: hide "Add Budget" button when `maxLines` limit is reached for Business units by @BearTS in https://github.com/maximhq/bifrost/pull/7432
* main backmerge by @akshaydeo in https://github.com/maximhq/bifrost/pull/7454
* chore: read token usage through BifrostResponse.NormalizedUsage by @roroghost17 in https://github.com/maximhq/bifrost/pull/7366
* feat: add typed LLM span payload and attribute renderer by @roroghost17 in https://github.com/maximhq/bifrost/pull/7367
* perf: produce trace data only when a connector reads it by @roroghost17 in https://github.com/maximhq/bifrost/pull/7368
* fix: fixes content logging and adds tests by @roroghost17 in https://github.com/maximhq/bifrost/pull/7369
* refactor: skip plugin spans when no connector consumes them by @roroghost17 in https://github.com/maximhq/bifrost/pull/7370
* feat: export the cost breakdown to connectors by @roroghost17 in https://github.com/maximhq/bifrost/pull/7371
* test: add shared e2e export harness for connectors by @roroghost17 in https://github.com/maximhq/bifrost/pull/7372
* refactor: derive connector dimensions from EnrichmentDims by @roroghost17 in https://github.com/maximhq/bifrost/pull/7373
* feat: add metric_dimensions config for x-bf-dim-* metric tags by @roroghost17 in https://github.com/maximhq/bifrost/pull/7389
* feat: export app to connectors by @roroghost17 in https://github.com/maximhq/bifrost/pull/7390
* feat: export raw payloads to connectors by @roroghost17 in https://github.com/maximhq/bifrost/pull/7391
* fix: snapshot `BifrostResponse` before `PostLLMHook` returns to prevent async cache writer from racing core's post-hook mutation by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7304
* feat(cli): add authenticated gateway transport by @R-droid101 in https://github.com/maximhq/bifrost/pull/7279
* feat(cli): add OpenAPI operations and structured output by @R-droid101 in https://github.com/maximhq/bifrost/pull/7280
* feat(cli): support authenticated harness launches by @R-droid101 in https://github.com/maximhq/bifrost/pull/7281
* feat(cli): add management and inference commands by @R-droid101 in https://github.com/maximhq/bifrost/pull/7282
* feat(cli): integrate SSO into the interactive launcher by @R-droid101 in https://github.com/maximhq/bifrost/pull/7283
* docs(cli): document authentication and management workflows by @R-droid101 in https://github.com/maximhq/bifrost/pull/7284
* feat(ui): add responsive `ProviderList` component with overflow chip by @impoiler in https://github.com/maximhq/bifrost/pull/7247
* feat(models): hide deprecated models from unsearched listings, sink them below live ones in search results by @impoiler in https://github.com/maximhq/bifrost/pull/7257
* feat: model selector component by @impoiler in https://github.com/maximhq/bifrost/pull/7258
* ui: model selector usage by @impoiler in https://github.com/maximhq/bifrost/pull/7259
* chore: remove unused model multiselect by @impoiler in https://github.com/maximhq/bifrost/pull/7272
* feat(logs): collapse sessions to earliest chain root with per-session rollup aggregates by @impoiler in https://github.com/maximhq/bifrost/pull/7298
* feat(logs): add `roots_only` and `group_sessions` query params with aggregated child/session fields by @impoiler in https://github.com/maximhq/bifrost/pull/7299
* feat(logs): collapse sessions in grouped view with expandable session rows by @impoiler in https://github.com/maximhq/bifrost/pull/7300
* feat(routing): support pinned provider keys in fallbacks by @impoiler in https://github.com/maximhq/bifrost/pull/7379
* [fix]: preserve Anthropic extra params through Bedrock conversion by @wangrat in https://github.com/maximhq/bifrost/pull/7395
* feat(ui): select provider keys for routing fallbacks by @impoiler in https://github.com/maximhq/bifrost/pull/7380
* adds cost breakdown for llm calls for plugins by @akshaydeo in https://github.com/maximhq/bifrost/pull/7455
* docs(routing): document pinned fallback keys and legacy behavior by @impoiler in https://github.com/maximhq/bifrost/pull/7381
* fix(ui): replace "New" with "Add" across action buttons and remove outline variants by @impoiler in https://github.com/maximhq/bifrost/pull/7407
* feat(ui): add `ProviderSelector` component by @impoiler in https://github.com/maximhq/bifrost/pull/7408
* feat(ui): replace ad-hoc provider selects with a unified `ProviderSelector` component by @impoiler in https://github.com/maximhq/bifrost/pull/7410
* docs(agents): add `ProviderSelector`/`ModelSelector` usage guidelines by @impoiler in https://github.com/maximhq/bifrost/pull/7427
* fix(config): reset empty pricing/model-params URLs to defaults instead of rejecting them by @impoiler in https://github.com/maximhq/bifrost/pull/7449
* Adds Odin config storage and settings API by @akshaydeo in https://github.com/maximhq/bifrost/pull/6212
* Adds Odin settings page by @akshaydeo in https://github.com/maximhq/bifrost/pull/6213
* Adds Odin read-only query tools by @akshaydeo in https://github.com/maximhq/bifrost/pull/6214
* Adds Odin agent endpoint by @akshaydeo in https://github.com/maximhq/bifrost/pull/6215
* Adds Odin topbar button and fixed-width dock by @akshaydeo in https://github.com/maximhq/bifrost/pull/6216
* Adds Odin chat surface by @akshaydeo in https://github.com/maximhq/bifrost/pull/6217
* Gives every panel the same card border, and polishes Odin's chrome by @akshaydeo in https://github.com/maximhq/bifrost/pull/6218
* Adds Odin chat history by @akshaydeo in https://github.com/maximhq/bifrost/pull/6219
* Scopes Odin's queries to whose traffic the question is about by @akshaydeo in https://github.com/maximhq/bifrost/pull/6220
* Odin asks before it answers, with pickable options by @akshaydeo in https://github.com/maximhq/bifrost/pull/6221
* feat(warp): persist log embedding configuration by @akshaydeo in https://github.com/maximhq/bifrost/pull/6847
* feat(warp): index completed logs in vector store by @akshaydeo in https://github.com/maximhq/bifrost/pull/6848
* feat(warp): backfill log embeddings with sidekiq by @akshaydeo in https://github.com/maximhq/bifrost/pull/6849
* feat(warp): expose embedding backfill APIs by @akshaydeo in https://github.com/maximhq/bifrost/pull/6850
* feat(warp): add semantic log search by @akshaydeo in https://github.com/maximhq/bifrost/pull/6851
* feat(warp): configure embeddings and backfill in UI by @akshaydeo in https://github.com/maximhq/bifrost/pull/6852
* minor warp fixes by @akshaydeo in https://github.com/maximhq/bifrost/pull/6882
* feat(warp): query tool gaps by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7068
* feat(warp): utc offset by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7070
* feat(warp): prompt and settings fixes by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7086
* feat(warp):parallel tool calls by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7151
* auth path whitelisting by @akshaydeo in https://github.com/maximhq/bifrost/pull/5765
* feat(warp):context overflow fix by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7183
* feat(warp): fix broken urls and indexing optimizations by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7186
* feat(warp): add warp behind feature flag by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7418
* enforce autoexecute allow list by @akshaydeo in https://github.com/maximhq/bifrost/pull/5766
* Backmerge/main into dev by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7494
* main backmerge by @akshaydeo in https://github.com/maximhq/bifrost/pull/7484
* adds handling for bedrocks weird encryption prefix by @akshaydeo in https://github.com/maximhq/bifrost/pull/7475
* feat(warp): add dedicated Warp RBAC resource for access control by @impoiler in https://github.com/maximhq/bifrost/pull/7499
* feat(warp): redesign config page with grouped sections, grid fields, and date-range picker for backfill by @impoiler in https://github.com/maximhq/bifrost/pull/7502
* docs(warp): add conversation history and log index status endpoints, rename chat schemas to session by @impoiler in https://github.com/maximhq/bifrost/pull/7515
* feat: classify provider failures by `FailureClass` and walk key pool past permanent per-key failures at any `max_retries` by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7211
* feat: propagate provider retry hints as `retry_after_ms` on `BifrostError` by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7212
* Backmerge main by @akshaydeo in https://github.com/maximhq/bifrost/pull/7532
* main backmerge by @akshaydeo in https://github.com/maximhq/bifrost/pull/7535
* feat(governance): add disable_content_logging column to virtual keys by @akshaydeo in https://github.com/maximhq/bifrost/pull/7476
* feat(governance): stamp the virtual key's content-logging decision on the request context by @akshaydeo in https://github.com/maximhq/bifrost/pull/7477
* feat(logging): honor the virtual key's content-logging decision in the log store by @akshaydeo in https://github.com/maximhq/bifrost/pull/7478
* feat(otel): strip exported content for virtual keys that turned content logging off by @akshaydeo in https://github.com/maximhq/bifrost/pull/7479
* feat(governance): expose disable_content_logging on the virtual key API by @akshaydeo in https://github.com/maximhq/bifrost/pull/7480
* feat(ui): content logging control on the virtual key editor, with e2e and docs by @akshaydeo in https://github.com/maximhq/bifrost/pull/7481
* test(e2e): content-logging permutation matrix across key, client, connector and header by @akshaydeo in https://github.com/maximhq/bifrost/pull/7491
* fix: preserve team calendar alignment after restart by @danpiths in https://github.com/maximhq/bifrost/pull/7563
* feat(ui): enterprise Home route, sidebar item and landing by @akshaydeo in https://github.com/maximhq/bifrost/pull/7591
* feat(logstore): single-pass per-user spend for a window by @akshaydeo in https://github.com/maximhq/bifrost/pull/7593
* [feat]: OpenRouter provider - native decisions for TypeSafe jev models by @hcavarsan in https://github.com/maximhq/bifrost/pull/7589
* fix(gemini): strip Authorization header when setting x-goog-api-key for Vertex Express compatibility by @SandyDRawat in https://github.com/maximhq/bifrost/pull/3835
* security audit skill by @akshaydeo in https://github.com/maximhq/bifrost/pull/7604
* [fix]: record output items before closing open items on Gemini streaming Responses by @wofiporia in https://github.com/maximhq/bifrost/pull/7359
* fix: persist `business_unit_id` when updating a virtual key by @BearTS in https://github.com/maximhq/bifrost/pull/7616
* fix: resolve business unit name in virtual keys table assigned-to label by @BearTS in https://github.com/maximhq/bifrost/pull/7619
* fix: logstore sort for postgres by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7509
* logs 'tool call' label by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7510
* feat(warp): call the gateway in-process and remove base_url by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7562
* warp-fixes by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7511
* warp-e2e-suite by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7512
* feat(ui): make toolbars responsive with container queries and icon-only collapse by @impoiler in https://github.com/maximhq/bifrost/pull/7621
* refactor(warp): trim verbose inline comments to concise one-liners by @impoiler in https://github.com/maximhq/bifrost/pull/7622
* fix(ui): add `unfiltered` prop to model selectors in warp, limits, routing, and CEL builder by @impoiler in https://github.com/maximhq/bifrost/pull/7628
* fix(routing): keep custom provider name case in complexity router config by @MohammadHijjawi97 in https://github.com/maximhq/bifrost/pull/7590
* fix: bedrock cache control block drop by @akshaydeo in https://github.com/maximhq/bifrost/pull/7646
* fix: harness api calls for deepseek by @akshaydeo in https://github.com/maximhq/bifrost/pull/7650
* fix: typeSafe native compatibility rejects SDK-valid inputs and loses payload/response fidelity by @akshaydeo in https://github.com/maximhq/bifrost/pull/7652
* [fix]: Gemini/Vertex chat completions honor n by @axelray-dev in https://github.com/maximhq/bifrost/pull/7394
* [fix]: preserve Gemini image signatures in Responses streams by @axelray-dev in https://github.com/maximhq/bifrost/pull/7357
* fixes foreign-function-call-id issue for fallback from gemini to openai by @akshaydeo in https://github.com/maximhq/bifrost/pull/7654
* fix: bedrock provider drops extended-thinking token count by @akshaydeo in https://github.com/maximhq/bifrost/pull/7653
* dependabot fixes by @akshaydeo in https://github.com/maximhq/bifrost/pull/7670
* gemini signed inline image harness call by @akshaydeo in https://github.com/maximhq/bifrost/pull/7660
* fix: remove the unreachable warning icon from vmcps by @roroghost17 in https://github.com/maximhq/bifrost/pull/7663
* feat: add sign in option when temp tokens is disabled by @roroghost17 in https://github.com/maximhq/bifrost/pull/7664
* covers all cases of signature mismatch across the providers by @akshaydeo in https://github.com/maximhq/bifrost/pull/7635
* fixes anthropic-gemini-max-output-token-truncations by @akshaydeo in https://github.com/maximhq/bifrost/pull/7651
* file url failure fixes by @akshaydeo in https://github.com/maximhq/bifrost/pull/7638
* feat(core): per-attempt first-token (TTFT) abort for stream attempts by @akshaydeo in https://github.com/maximhq/bifrost/pull/7503
* feat(core): enforce TTFT deadline per stream attempt with fallback handover by @akshaydeo in https://github.com/maximhq/bifrost/pull/7504
* fix(ui): skip format validation for API-masked secret values in Copilot provider form by @impoiler in https://github.com/maximhq/bifrost/pull/6840
* fix(core): allow GitHub Copilot provider keys to have empty values for GitHub App bundle authentication by @impoiler in https://github.com/maximhq/bifrost/pull/6841
* fix(githubcopilot): distinguish 422 permission-not-granted from repository-access errors with targeted guidance by @impoiler in https://github.com/maximhq/bifrost/pull/6842
* fix(warp): query scoping and logs links by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7667
* feat(governance): auto-delete expired virtual keys with a daily sidekiq job by @impoiler in https://github.com/maximhq/bifrost/pull/7525
* feat(ui): delete-after-expire option on the virtual key expiry picker by @impoiler in https://github.com/maximhq/bifrost/pull/7526
* feat: support optional transaction in `GetModelConfigsByScopeAndScopeIDs` by @BearTS in https://github.com/maximhq/bifrost/pull/7703
* docs(governance): document delete_after_expire for virtual keys by @impoiler in https://github.com/maximhq/bifrost/pull/7527
* fix(ui): bump onboarding widget z-index and remove working-state opacity by @impoiler in https://github.com/maximhq/bifrost/pull/7558
* fix(configstore): preserve client metadata across config reconciliation writes by @impoiler in https://github.com/maximhq/bifrost/pull/7564
* feat(audit-logs): add `omit_ip_addresses` option to suppress client IP recording by @impoiler in https://github.com/maximhq/bifrost/pull/7671
* fix(ui): prevent mobile layout overflow in keys table, model catalog, client settings, and observability by @impoiler in https://github.com/maximhq/bifrost/pull/7672
* fix(governance): change rate limit placeholder from "100" to "No limit" by @impoiler in https://github.com/maximhq/bifrost/pull/7673
* fix(logs): use container queries to prevent metric strip truncation and anchor table status row by @impoiler in https://github.com/maximhq/bifrost/pull/7674
* feat(ui): add `DisabledReason` tooltip wrapper to governance action buttons by @impoiler in https://github.com/maximhq/bifrost/pull/7675
* feat(ui): add infinite scroll pagination to entity selector pickers by @impoiler in https://github.com/maximhq/bifrost/pull/7678
* fix(provider-keys): preserve omitted fields on partial PUT update by @impoiler in https://github.com/maximhq/bifrost/pull/7679
* fix(ui): switch to relative period when enabling live polling from an absolute range by @impoiler in https://github.com/maximhq/bifrost/pull/7685
* fix(ui): render zero reasoning max tokens by @G-XD in https://github.com/maximhq/bifrost/pull/7662
* [fix]: schemas - accept mirrored reasoning shorthand+object when values agree by @Daltonganger in https://github.com/maximhq/bifrost/pull/7648
* fix(semanticcache): isolate cache entries by request family by @Atharva-Kanherkar in https://github.com/maximhq/bifrost/pull/7561
* adds missing harness case for mirrored reasoning by @akshaydeo in https://github.com/maximhq/bifrost/pull/7712
* fix: gemini rejecting tools with $ref by @akshaydeo in https://github.com/maximhq/bifrost/pull/7713
* feat(routing): ttft_timeout_ms on routing rules by @akshaydeo in https://github.com/maximhq/bifrost/pull/7505
* feat(ui): TTFT cutoff field on routing rules by @akshaydeo in https://github.com/maximhq/bifrost/pull/7506
* docs(routing): document routing rule TTFT cutoff by @akshaydeo in https://github.com/maximhq/bifrost/pull/7507
* fix(ui): seed chart containers with a positive initial dimension by @basil-k-aji-dev in https://github.com/maximhq/bifrost/pull/7594
* dependabot fixes by @akshaydeo in https://github.com/maximhq/bifrost/pull/7744
* fix(warp): links that cannot open are no longer clickable by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7736
* feat(complexity): add Typesafe Jev classifier as primary and semantic fallback by @Madhuvod in https://github.com/maximhq/bifrost/pull/7485
* dix(warp): hide a finished backfill once the embedding space changes by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7740
* feat(complexity): add Jev decision cost tracking, RequestType field, and stepped classifier UI by @Madhuvod in https://github.com/maximhq/bifrost/pull/7605
* fix(warp): nudges oown traffic hint and whose keys a ranking covers by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7746
* [docs] : docs for jev router by @Madhuvod in https://github.com/maximhq/bifrost/pull/7647
* feat(warp): read a key and a person the way the dashboard does by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7750
* feat(complexity): add per-tier Jev criteria overrides with UI guidance editors and jev_defaults status endpoint field by @Madhuvod in https://github.com/maximhq/bifrost/pull/7690
* feat: add HTTPTransportResponseHeadersHook in plugins by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7537
* feat(schemas): add `BifrostGuardrailDetection` for detect-only guardrail policy matches by @Madhuvod in https://github.com/maximhq/bifrost/pull/7697
* feat(warp): an unrestricted caller's questions cover the whole deployment by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7752
* docs: add Held Keys section to adaptive load balancing, replace Mermaid diagrams with images by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7531
* docs: updated docs for jev router by @Madhuvod in https://github.com/maximhq/bifrost/pull/7749
* feat: add `BifrostContextKeyLoadBalancerAttempt` and `LoadBalancerMetadataPrefix` to propagate enterprise load balancer routing decisions into log metadata, with system-key filtering and `cluster_node_id` composite index by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7456
* refactor: extract shared `MetricStrip` primitives into a reusable component module by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7644
* docs: add A10 Guardrails provider integration docs by @Madhuvod in https://github.com/maximhq/bifrost/pull/7755
* adds handleing for per-message effort by @akshaydeo in https://github.com/maximhq/bifrost/pull/7714
* fixes access profile summary UI by @akshaydeo in https://github.com/maximhq/bifrost/pull/7642
* fix: remove wrapper padding from adaptive routing page and add `LoadBalancerHistory` cache tag by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7645
* feat: add `requested_provider`/`requested_model` to `RoutingInfo` and response headers so the caller's pre-routing route is visible after a routing rule rewrites it by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7683
* feat: add `CoversAllModels` to `FailureClass` and pin classifier outputs for key-wide failures by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7684
* feat: add downstream-extensible logs registry for routing panel, labelled metadata filters, and reserved key prefixes; hide all load-balancer metadata keys from filter sidebar and detail grid by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7734
* feat(warp): themes related questions sample logs instead of using semantic search by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7756
* feat(warp): feature flag on by default by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7757
* feat: capture and persist upstream mcp server instructions by @roroghost17 in https://github.com/maximhq/bifrost/pull/7516
* feat: forward server instructions on the MCP gateway by @roroghost17 in https://github.com/maximhq/bifrost/pull/7517
* feat: add `ToolUsage.WebSearch` field and deprecate `NumSearchQueries` in token detail by @sammaji in https://github.com/maximhq/bifrost/pull/7624
* feat: inject mcp server instructions into LLM requests by @roroghost17 in https://github.com/maximhq/bifrost/pull/7518
* fix: include server instructions in on-demand MCP tool refresh by @roroghost17 in https://github.com/maximhq/bifrost/pull/7519
* docs: document the Virtual MCP API and deprecate its tool-groups alias by @roroghost17 in https://github.com/maximhq/bifrost/pull/7524
* feat: replace `search_context_cost_per_query` with `web_search_cost_per_request` priced from `tool_usage.web_search.num_requests` by @sammaji in https://github.com/maximhq/bifrost/pull/7687
* feat: add per-mcp server override for max instructions length by @roroghost17 in https://github.com/maximhq/bifrost/pull/7766
* feat: add raw payloads export support by @roroghost17 in https://github.com/maximhq/bifrost/pull/7753
* fix: fix custom tool calls tracing for responses by @roroghost17 in https://github.com/maximhq/bifrost/pull/7738
* feat: per-connector attribute denylist by @roroghost17 in https://github.com/maximhq/bifrost/pull/7754
* chore: update helm charts for excluded attributes and raw payloads for connectors by @roroghost17 in https://github.com/maximhq/bifrost/pull/7758
* fix: update Bifrost labels append call to correctly work with custom labels by @roroghost17 in https://github.com/maximhq/bifrost/pull/7739
* fix: move the shared toggles outside of the pull view for telemetry by @roroghost17 in https://github.com/maximhq/bifrost/pull/7741
* docs: add exclude attributes and raw payloads in connectors by @roroghost17 in https://github.com/maximhq/bifrost/pull/7759
* fix: add metrics_enabled field to config json for telemetry by @roroghost17 in https://github.com/maximhq/bifrost/pull/7745
* feat: retrieve model method by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7419
* fix: report the effective HTTP status on error metrics and spans instead of "unknown" by @roroghost17 in https://github.com/maximhq/bifrost/pull/7451
* fix: give stream errors and key-selection failures a real HTTP status by @roroghost17 in https://github.com/maximhq/bifrost/pull/7611
* dependabot fixes by @akshaydeo in https://github.com/maximhq/bifrost/pull/7796
* feat: add multimodal embedding support for cohere, gemini, and vertex by @TejasGhatte in https://github.com/maximhq/bifrost/pull/2559
* feat: update the embedding span attributes to support the new shape by @roroghost17 in https://github.com/maximhq/bifrost/pull/7804
* feat(warp): update warp indexer to the new embedding input shape by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7805
* feat: add `embedding_input` column and ui display for embedding request inputs by @sammaji in https://github.com/maximhq/bifrost/pull/7001
* chore: add multimodal embedding tests for gemini, vertex and cohere by @sammaji in https://github.com/maximhq/bifrost/pull/7002
* feat: add embedding support for parasail provider by @sammaji in https://github.com/maximhq/bifrost/pull/7096
* feat: add `chart-info` and `chart-info-ink` semantic color tokens for in-progress status by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7809
* docs: add multimodal embeddings guide and update embedding input schema examples by @TejasGhatte in https://github.com/maximhq/bifrost/pull/3367
* chore: add multimodal embeddings harness coverage for content parts, per-item params, batchEmbedContents, Cohere native envelope, Bedrock Cohere v4, and Parasail by @sammaji in https://github.com/maximhq/bifrost/pull/7102
* feat: add titan multimodal embedding support and map `encoding_format` to cohere `embedding_types` by @sammaji in https://github.com/maximhq/bifrost/pull/7459
* feat: preserve `usageMetadata` token counts for vertex and gemini by @sammaji in https://github.com/maximhq/bifrost/pull/7463
* fix: allow gs:// uri for gemini and vertex embeddings by @sammaji in https://github.com/maximhq/bifrost/pull/7549
* feat: add nova multimodal embedding support for bedrock by @sammaji in https://github.com/maximhq/bifrost/pull/7550
* fix: capture raw request in bedrock and vertex embedding responses by @sammaji in https://github.com/maximhq/bifrost/pull/7566
* chore: add harness tests for bedrock nova and titan multimodal embeddings, encoding_format mapping, and vertex embedding usage by @sammaji in https://github.com/maximhq/bifrost/pull/7472
* feat(warp): allow admins to set up multiple chat models by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7814
* ui: add headers section in create MCP form similar to edit by @roroghost17 in https://github.com/maximhq/bifrost/pull/7817
* feat: update OTEL to semconv 1.44.0 by @roroghost17 in https://github.com/maximhq/bifrost/pull/7810
* fix: carry instruction fields through the scoped MCP client refetch by @roroghost17 in https://github.com/maximhq/bifrost/pull/7818
* fix: stop downgrading https metrics endpoints to plain HTTP by @roroghost17 in https://github.com/maximhq/bifrost/pull/7815
* fixes listAllModels returns duplicate and skipped models when a provider listing changes between pages by @akshaydeo in https://github.com/maximhq/bifrost/pull/7771
* fix(ui): widen virtual-keys status column and refine Warp launcher kbd styling by @impoiler in https://github.com/maximhq/bifrost/pull/7735
* fix(modelcatalog): fall back to DB pricing when the datasheet URL hangs by @impoiler in https://github.com/maximhq/bifrost/pull/7737
* feat(e2e): add axe-core accessibility audit with coverage reporting and oxlint jsx-a11y static checks by @impoiler in https://github.com/maximhq/bifrost/pull/7742
* fix(ui): address accessibility issues across components (aria labels, roles, keyboard nav, contrast) by @impoiler in https://github.com/maximhq/bifrost/pull/7743
* fix(ui): replace hardcoded zinc colors with semantic tokens and improve sidebar/tabs accessibility by @impoiler in https://github.com/maximhq/bifrost/pull/7748
* fix(a11y): add aria-labels to progress bars, filters, and log row open button by @impoiler in https://github.com/maximhq/bifrost/pull/7751
* feat(warp): make dock panel resizable by @impoiler in https://github.com/maximhq/bifrost/pull/7765
* feat(bedrock): error on incomplete converse streams missing messageStop by @impoiler in https://github.com/maximhq/bifrost/pull/7797
* refactor(virtual-keys): simplify expiry cleanup notifications to counts only by @impoiler in https://github.com/maximhq/bifrost/pull/7828
* sidekiq jobs in notifications by @akshaydeo in https://github.com/maximhq/bifrost/pull/7820
* ifix: bare claude model hoist thinking blocks by @akshaydeo in https://github.com/maximhq/bifrost/pull/7789
* fix(deps): bump hono to 4.13.7 and litellm to 1.88.6 by @akshaydeo in https://github.com/maximhq/bifrost/pull/7836
* adds support for guardrails in bedrock payloads by @akshaydeo in https://github.com/maximhq/bifrost/pull/7715
* fix(scale): postgres critical fixes for 500M logs, 100k users and VKs by @akshaydeo in https://github.com/maximhq/bifrost/pull/7606
* fix(scale): postgres high-severity fixes for 500M logs, 100k users and VKs by @akshaydeo in https://github.com/maximhq/bifrost/pull/7607
* fix(scale): postgres scale follow-ups and cap handling by @akshaydeo in https://github.com/maximhq/bifrost/pull/7608
* feat(core): vertex aws workload identity federation by @akshaydeo in https://github.com/maximhq/bifrost/pull/7705
* feat(framework,transports): persist and validate vertex aws workload identity by @akshaydeo in https://github.com/maximhq/bifrost/pull/7706
* feat(ui): vertex workload identity (aws) auth tab by @akshaydeo in https://github.com/maximhq/bifrost/pull/7707
* docs: aws workload identity federation for vertex by @akshaydeo in https://github.com/maximhq/bifrost/pull/7708
* feat(core): route aws external_account json through the sdk credential chain by @akshaydeo in https://github.com/maximhq/bifrost/pull/7709
* cap memory alloction for zstd by @akshaydeo in https://github.com/maximhq/bifrost/pull/5782
* guard oauth discovery by @akshaydeo in https://github.com/maximhq/bifrost/pull/5780
* sanitize framework price config url by @akshaydeo in https://github.com/maximhq/bifrost/pull/5781
* scope semantic cache keys by virtual key by @akshaydeo in https://github.com/maximhq/bifrost/pull/5769
* default inference auth on first time setup by @akshaydeo in https://github.com/maximhq/bifrost/pull/5767
* ping oauth discovery url by @akshaydeo in https://github.com/maximhq/bifrost/pull/5779
* unauthenticated proxy blocks by @akshaydeo in https://github.com/maximhq/bifrost/pull/5778
* recover request panic fix by @akshaydeo in https://github.com/maximhq/bifrost/pull/5771
* require auth for provider endpoint changes by @akshaydeo in https://github.com/maximhq/bifrost/pull/5768
* fix(core): add utils http client helper by @akshaydeo in https://github.com/maximhq/bifrost/pull/7847
* fix(framework,transports): use http client for outbound fetches by @akshaydeo in https://github.com/maximhq/bifrost/pull/7848
* fix(core,transports): validate mcp client targets at connect time by @akshaydeo in https://github.com/maximhq/bifrost/pull/7849
* fix(transports): gate provider endpoint updates by @akshaydeo in https://github.com/maximhq/bifrost/pull/7850
* fix(transports,framework): tighten mcp oauth2 server validation by @akshaydeo in https://github.com/maximhq/bifrost/pull/7851
* fix(plugins): scope semantic cache entries per virtual key by @akshaydeo in https://github.com/maximhq/bifrost/pull/7852
* fix(governance): canonicalise model config keys by @akshaydeo in https://github.com/maximhq/bifrost/pull/7853
* fix(transports): verify credentials on auth config update by @akshaydeo in https://github.com/maximhq/bifrost/pull/7854
* fix(core,transports): validate passthrough paths and provider header by @akshaydeo in https://github.com/maximhq/bifrost/pull/7855
* fix(core,transports): bound request decompression and harden realtime request handling by @akshaydeo in https://github.com/maximhq/bifrost/pull/7856
* test(e2e): assert management api guards across auth passes by @akshaydeo in https://github.com/maximhq/bifrost/pull/7857
* main backmerge by @akshaydeo in https://github.com/maximhq/bifrost/pull/7869
* [fix]: use provider-reported cost for transcription pricing by @hmdsefi in https://github.com/maximhq/bifrost/pull/7825
* fix: gemini parameters during fallback by @akshaydeo in https://github.com/maximhq/bifrost/pull/7883
* adds missing transient error detector for pg to retry with chunks by @akshaydeo in https://github.com/maximhq/bifrost/pull/7882
* adds missing tool level transalation for anthropic -> openai caching by @akshaydeo in https://github.com/maximhq/bifrost/pull/7885
* fix(gemini): apply request-level taskType and title to every batched embedding input by @akshaydeo in https://github.com/maximhq/bifrost/pull/7884
* webhooks: require an admin session for private-network endpoints by @akshaydeo in https://github.com/maximhq/bifrost/pull/7886
* mcp: require an admin session for secret references in client fields by @akshaydeo in https://github.com/maximhq/bifrost/pull/7887
* governance: scope code-mode tool discovery to the request's grant by @akshaydeo in https://github.com/maximhq/bifrost/pull/7888
* governance: revoke a virtual key's MCP OAuth grants on rotation by @akshaydeo in https://github.com/maximhq/bifrost/pull/7889
* integrations: read the passthrough model strictly from the forwarded body by @akshaydeo in https://github.com/maximhq/bifrost/pull/7890
* governance: require a model for file-based batches under a model-restricted key by @akshaydeo in https://github.com/maximhq/bifrost/pull/7891
* governance: bind batch lookups to the creating virtual key by @akshaydeo in https://github.com/maximhq/bifrost/pull/7892
* auth: refuse unlisted browser origins on the management API while auth is disabled by @akshaydeo in https://github.com/maximhq/bifrost/pull/7893
* [fix]: Anthropic provider - normalize error.type in the Anthropic error envelope by @jimseiwert in https://github.com/maximhq/bifrost/pull/7916
* [fix]: preserve Mistral streamed text arrays and reject unsupported blocks by @xujiantop-crypto in https://github.com/maximhq/bifrost/pull/7939
* [fix]: send assistant role once on converted chat streams by @hmdsefi in https://github.com/maximhq/bifrost/pull/7699
* feat(ui): org chart route, governance sidebar entry and fallback by @akshaydeo in https://github.com/maximhq/bifrost/pull/7954
* adds all missing harness tests by @akshaydeo in https://github.com/maximhq/bifrost/pull/7907
* [fix]: Require authenticated management access to delete MCP tool logs by @xujiantop-crypto in https://github.com/maximhq/bifrost/pull/7913
* [fix]: Gemini provider - keep schemaless function tools and order tool results by call id by @jimseiwert in https://github.com/maximhq/bifrost/pull/7927
* core: allow typesafe as a custom provider base type by @akshaydeo in https://github.com/maximhq/bifrost/pull/7948
* ui: offer typesafe as a custom provider base format by @akshaydeo in https://github.com/maximhq/bifrost/pull/7949
* docs: document typesafe as a custom provider base type by @akshaydeo in https://github.com/maximhq/bifrost/pull/7950
* fix(core): stop dead provider blocking aggregate model list by @novai42 in https://github.com/maximhq/bifrost/pull/6614
* chore: add `attributeProjectMappings` and `bulkSyncInterval` to config schema by @BearTS in https://github.com/maximhq/bifrost/pull/7803
* fix: validate provider endpoint URL components by @akshaydeo in https://github.com/maximhq/bifrost/pull/7958
* fix: constrain passthrough to inference routes by @akshaydeo in https://github.com/maximhq/bifrost/pull/7959
* fix(core): route every provider egress stack through proxy_config by @akshaydeo in https://github.com/maximhq/bifrost/pull/7567
* fix(transports): apply the global proxy to providers without their own by @akshaydeo in https://github.com/maximhq/bifrost/pull/7568
* fix: validate OAuth callback registration and consent by @akshaydeo in https://github.com/maximhq/bifrost/pull/7960
* fix(core): dial proxies dual-stack so IPv6 proxies work by @akshaydeo in https://github.com/maximhq/bifrost/pull/7569
* refactor(core): run provider auth and URL fetch on fasthttp by @akshaydeo in https://github.com/maximhq/bifrost/pull/7570
* test: pin proxy routing for every permutation by @akshaydeo in https://github.com/maximhq/bifrost/pull/7571
* feat(core): live proxy clients in the HTTP client factory by @akshaydeo in https://github.com/maximhq/bifrost/pull/7573
* feat: build the HTTP client factory in OSS and route webhooks, skills and plugin downloads through it by @akshaydeo in https://github.com/maximhq/bifrost/pull/7574
* feat: route MCP, OAuth, catalog sync and OpenTelemetry through the global API proxy by @akshaydeo in https://github.com/maximhq/bifrost/pull/7575
* feat(core): reach https:// proxies over TLS on every provider stack by @akshaydeo in https://github.com/maximhq/bifrost/pull/7576
* fix: bound code execution resources by @akshaydeo in https://github.com/maximhq/bifrost/pull/7962
* [fix]: Anthropic - preserve stop_sequence stop reason and matched sequence by @jimseiwert in https://github.com/maximhq/bifrost/pull/7921
* global css fix by @akshaydeo in https://github.com/maximhq/bifrost/pull/7985
* adds missing tool level transalation for anthropic -> openai caching (#7885) by @akshaydeo in https://github.com/maximhq/bifrost/pull/7955
* fix(config): skip a governed team's or customer's limits at startup, not only after it by @BearTS in https://github.com/maximhq/bifrost/pull/7794
* feat(config): teams and customers carry access_profile, and LoadConfig reports what it wrote by @BearTS in https://github.com/maximhq/bifrost/pull/7795
* feat(config): the global proxy, with its SCIM, inference and API toggles, in config.json by @BearTS in https://github.com/maximhq/bifrost/pull/7799
* feat(helm): add `proxy_config`, `access_profile` on entities, `business-unit-data`/`customer-data` DAC, and `ttft_timeout_ms` by @BearTS in https://github.com/maximhq/bifrost/pull/7791
* feat(governance): add `proxy_config`, access profile on entities, and `business-unit-data`/`customer-data` DAC scopes to config.json docs and schema by @BearTS in https://github.com/maximhq/bifrost/pull/7792
* feat(logs): redesign grouped view expander with tree lines, turn/fallback labels, and kind markers by @impoiler in https://github.com/maximhq/bifrost/pull/7970
* feat(adaptive-routing): add Incidents page and sidebar nav entry by @impoiler in https://github.com/maximhq/bifrost/pull/7974
* fix(framework): run only pending migration steps on startup by @impoiler in https://github.com/maximhq/bifrost/pull/7994
* feat(customers): add server-side team count to customer list instead of fetching all teams by @impoiler in https://github.com/maximhq/bifrost/pull/7998
* feat(warp): let deployments report row-level caller restriction by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7972
* feat(warp): prefilter semantic search by caller visibility by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7973
* feat: model retrieve for other providers by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7716
* fixes single target ttf field ui capture by @akshaydeo in https://github.com/maximhq/bifrost/pull/7996
* fix: output tokens on fallback and adaptive thinking by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7732
* fix: race condition when LLM span is dropped in telemetry by @roroghost17 in https://github.com/maximhq/bifrost/pull/7731
* tests: mcp tests by @roroghost17 in https://github.com/maximhq/bifrost/pull/7991
* feat: gpt live core structs by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7721
* fix: cost changes for gpt-live and key selection by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7722
* fix: gpt live sessions handling by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7723
* feat: gpt live webrtc handling by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7724
* feat: attach and sip routes by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7725
* feat: content route gpt live by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7726
* fix(warp): resolve calendar days in asker timezone by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7978
* fix(warp): explain refused model access by @kohlivrinda in https://github.com/maximhq/bifrost/pull/7995
* feat: logging for gpt-live api by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7727
* tests: live api by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7728
* tests: openai sdk tests for live by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7993
* feat: live content request by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7999
* fix: cr fixes for live handling by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8011
* feat(schema): generic SSO provider accepts a login displayName by @BearTS in https://github.com/maximhq/bifrost/pull/8045
* fix(ui): business units sidebar entry checks the BusinessUnits permission by @BearTS in https://github.com/maximhq/bifrost/pull/8046
* backmerge by @akshaydeo in https://github.com/maximhq/bifrost/pull/8051
* feat(warp): serve users without access profile by @kohlivrinda in https://github.com/maximhq/bifrost/pull/8049
* docs(guardrails): clarify prompt guardrails judge model requirements and update max_output_tokens default to 1000 by @Madhuvod in https://github.com/maximhq/bifrost/pull/8002
* refactor: update the storage structure for overhead breakdown in logs table by @roroghost17 in https://github.com/maximhq/bifrost/pull/8050
* feat: add `force_reasoning_only_models_to_responses` compat toggle to route chat+tools requests to Responses API for models without `reasoning_with_tool_calls` support by @sammaji in https://github.com/maximhq/bifrost/pull/7806
* chore: update compat plugin docs for `force_reasoning_only_models_to_responses` by @sammaji in https://github.com/maximhq/bifrost/pull/7807
* fix: stamp `ServerSideFallbackModel` when deepseek serves a different model than requested by @sammaji in https://github.com/maximhq/bifrost/pull/7811
* fix: resolve datasheet based server side model for deepseek by @sammaji in https://github.com/maximhq/bifrost/pull/7822
* feat: add agent gateway core contracts by @danpiths in https://github.com/maximhq/bifrost/pull/7772
* feat: persist agent registrations and push state by @danpiths in https://github.com/maximhq/bifrost/pull/7773
* feat: implement agent gateway runtime by @danpiths in https://github.com/maximhq/bifrost/pull/7774
* feat: expose agent gateway transports by @danpiths in https://github.com/maximhq/bifrost/pull/7775
* feat: govern agent access by @danpiths in https://github.com/maximhq/bifrost/pull/7776
* feat: add agent activity logging by @danpiths in https://github.com/maximhq/bifrost/pull/7777
* feat: trace agent gateway operations by @danpiths in https://github.com/maximhq/bifrost/pull/7778
* feat(decisions): add Laya-specific typed fields to decision answers, response and usage by @Madhuvod in https://github.com/maximhq/bifrost/pull/7982
* feat: add agent logs workspace by @danpiths in https://github.com/maximhq/bifrost/pull/7779
* feat(decisions): add Cloudflare Workers AI envelope unwrapping for Clef support by @Madhuvod in https://github.com/maximhq/bifrost/pull/8007
* feat: add agent catalog and push management by @danpiths in https://github.com/maximhq/bifrost/pull/7780
* feat: configure agent gateway settings by @danpiths in https://github.com/maximhq/bifrost/pull/7781
* feat: package agent gateway configuration by @danpiths in https://github.com/maximhq/bifrost/pull/7782
* chore: update agent gateway development environment by @danpiths in https://github.com/maximhq/bifrost/pull/7783
* Bedrock → Responses store propagation fix by @akshaydeo in https://github.com/maximhq/bifrost/pull/8032
* fix(bedrock): keep the reasoning item id when a Converse client replays redactedContent by @akshaydeo in https://github.com/maximhq/bifrost/pull/8033
* chore: add harness tests for deepseek served-model pricing and reasoning-only-to-responses routing by @sammaji in https://github.com/maximhq/bifrost/pull/7823
* fix converse reasoning reply by @akshaydeo in https://github.com/maximhq/bifrost/pull/8044
* fix responses history null logporbes handling by @akshaydeo in https://github.com/maximhq/bifrost/pull/8036
* moves reasoning_effort support to datashseet by @akshaydeo in https://github.com/maximhq/bifrost/pull/8075
* feat(complexity): add decision-model classifier with per-tier guidance criteria and settings sheet by @Madhuvod in https://github.com/maximhq/bifrost/pull/8059
* fix(logstore): include plugin logs in exported s3 payload snapshot by @Madhuvod in https://github.com/maximhq/bifrost/pull/8061
* feat(complexity): add Laya, Nimble, and Clef provider icons and unblock Next without a decision provider by @Madhuvod in https://github.com/maximhq/bifrost/pull/8080
* docs(dac): customer-data grants only what sits under the caller's customers by @BearTS in https://github.com/maximhq/bifrost/pull/8086
* fix(dashboard): count ranking rows the caller cannot name under Other by @BearTS in https://github.com/maximhq/bifrost/pull/8087
* fix(agent-logs): bound filter dropdowns by the DAC dimension ceiling by @BearTS in https://github.com/maximhq/bifrost/pull/8088
* fix(governance): read paginated model configs through ScopedDB by @BearTS in https://github.com/maximhq/bifrost/pull/8089
* fix: vertex video retrieve uses region from the id by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8083
* feat: add `shell` tool and `shell_call`/`shell_call_output` message types with streaming support by @sammaji in https://github.com/maximhq/bifrost/pull/7292
* feat: translate `allowed_callers` between anthropic and openai on chat and responses paths by @sammaji in https://github.com/maximhq/bifrost/pull/7293
* feat: add `apply_patch` tool and `apply_patch_call` message type support across providers by @sammaji in https://github.com/maximhq/bifrost/pull/7301
* fix drop shell and code-interpreter tools on Bedrock providers in responses filter by @sammaji in https://github.com/maximhq/bifrost/pull/7668
* feat: add gemini code execution support for responses api (streaming and non-streaming) by @sammaji in https://github.com/maximhq/bifrost/pull/7711
* fix: add actions array field to `ResponsesComputerToolCall` for newer model responses by @sammaji in https://github.com/maximhq/bifrost/pull/7733
* fix: preserve cache control for anthropic server tools by @sammaji in https://github.com/maximhq/bifrost/pull/7979
* fix: mux oai and anthropic style computer tools by @sammaji in https://github.com/maximhq/bifrost/pull/7980
* fix: treat shell and apply_patch calls as tool calls in semanticcache by @sammaji in https://github.com/maximhq/bifrost/pull/8093
* chore: add harness cases for shell, apply_patch, allowed_callers, and gemini code execution by @sammaji in https://github.com/maximhq/bifrost/pull/7633
* feat(logstore): add option to exclude request types from object storage offloading by @impoiler in https://github.com/maximhq/bifrost/pull/8047
* docs(logs): document object_storage_exclude_request_types for log exports by @impoiler in https://github.com/maximhq/bifrost/pull/8048
* community: add Parlel to MCP library by @impoiler in https://github.com/maximhq/bifrost/pull/8041
* feat(configstore): add ignore_provider_cost provider config by @impoiler in https://github.com/maximhq/bifrost/pull/8052
* feat(modelcatalog): price from catalog when ignore_provider_cost is on by @impoiler in https://github.com/maximhq/bifrost/pull/8053
* feat(logging): store bifrost cost breakdown for providers that ignore reported cost by @impoiler in https://github.com/maximhq/bifrost/pull/8054
* fix(logstore): stop showing an opaque provider total as input cost by @impoiler in https://github.com/maximhq/bifrost/pull/8055
* feat(ui): add pricing tab with ignore provider cost toggle by @impoiler in https://github.com/maximhq/bifrost/pull/8056
* docs(providers): document `ignore_provider_cost` option by @impoiler in https://github.com/maximhq/bifrost/pull/8057
* fix(logstore): make ClickHouse max_query_size configurable and default it to 16 MiB by @impoiler in https://github.com/maximhq/bifrost/pull/8126
* feat(governance): add optional `disabled` field to virtual key MCP config type by @impoiler in https://github.com/maximhq/bifrost/pull/8130
* feat: adds BackgroundJobs rbac permissions by @impoiler in https://github.com/maximhq/bifrost/pull/8132
* refactor: deprecate attribution context keys in favour of `ctx.Grant()` accessors by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/7975
* fix: fall back to sibling keys when a session-bound key is rejected outright by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8100
* feat: add `x-bifrost-request-id` response header and stop forwarding provider `x-bifrost-*` headers by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8101
* fix: reject negative or non-finite weights for keys, virtual key provider configs, and routing targets to prevent weighted-random panic by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8102
* docs: trim redundant explanation from fallback comment in model catalog resolver by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8103
* fix: return 409 conflict instead of 500 for duplicate routing rule priority and print scope ID rather than pointer by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8104
* feat: add `isNew` parameter to `ReloadProvider` so reloads can distinguish added providers from edited ones by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8105
* fix: stop direct keys from fanning out to every provider on model listing by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8106
* fix: restore primary provider response headers when all fallbacks fail so the primary's error isn't returned with the last fallback's headers by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8107
* fix: return provider's own error when a caller-supplied direct key is refused instead of collapsing into 502 `upstream_credentials_exhausted` by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8108
* fix: keep session affinity from binding to fallbacks that served direct-key requests and from moving requests pinned to the head provider's key by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8109
* fix(governance): stop billing dedup from dropping a fallback's usage after a billed primary attempt by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8111
* fix: make the key blacklist tests fail when blacklists are ignored, and correct the session affinity docs by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8112
* fix(core): bind no session key when the caller's direct key serves by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8113
* fix(core): name the fallback a plugin answered in a stream's routing headers by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8114
* fix: harden A2A push configuration and tracing by @danpiths in https://github.com/maximhq/bifrost/pull/8125
* fix(governance): keep inline limits through the config.json prune and off governed teams by @BearTS in https://github.com/maximhq/bifrost/pull/8156
* fix(governance): reconcile virtual key and provider config inline budgets from config.json by @BearTS in https://github.com/maximhq/bifrost/pull/8161
* fix(network): honor DisablePathNormalizing in live fasthttp client by @Madhuvod in https://github.com/maximhq/bifrost/pull/8164
* fix: switching an MCP token-exchange or agent OAuth secret to a reference is saved by @BearTS in https://github.com/maximhq/bifrost/pull/8160
* test(harness): fail the routing fallback key pinning rows when the rule cannot be created, instead of skipping them by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8115
* test(harness): session key affinity on a run-scoped custom provider by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8116
* feat: 100k tier pricing by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8144
* test: key selection and retry coverage on run-scoped providers, with unit tests for backoff, fixed keys and filtered pools by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8117
* test: fallback coverage across drop-in routes, embeddings, streaming responses and governance refusals by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8118
* test: routing rule scope precedence, lifecycle, chains, conditions and fallback coverage by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8119
* test: governance routing coverage for virtual key access, load balancing fallbacks, key restrictions, streaming rate limits and team budgets by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8120
* test: model catalog resolver unit tests and catalog routing coverage for bare models, catalog fallbacks, drop-in routes and virtual key allowlists by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8121
* test: session affinity coverage for streaming, TTL expiry, caller key pins, the anthropic route and per-virtual-key sessions, with matrix repairs and header parsing tests by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8122
* test: requested-provider check on every prefixed inference row, x-model-provider routing on passthrough and Anthropic file and batch routes, and ParseModelString tests by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8123
* test(harness): send the setup token on in-script management calls, and pin passthrough's restriction to the route's own provider by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8124
* fix: try the provider holding the caller's pinned API key first when routing offers it further down the chain by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8138
* docs: clarify circuit breaker fallback chaining and key pin precedence over direct keys by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8170
* dependabot fixes by @akshaydeo in https://github.com/maximhq/bifrost/pull/8178
* fix(tracing): honor ignore_provider_cost and request pricing scopes on streamed cost by @impoiler in https://github.com/maximhq/bifrost/pull/8165
* fix: move batch embeddings into single embeddings when params are same by @sammaji in https://github.com/maximhq/bifrost/pull/8140
* fix: send image-only bedrock cohere embeddings as images[] with input_type image by @sammaji in https://github.com/maximhq/bifrost/pull/8143
* fix: embedding params handling for openai, cohere, and semanticcache by @sammaji in https://github.com/maximhq/bifrost/pull/8146
* fix: nest documentOcr and audioTrackExtraction under embedContentConfig for gemini and vertex embeddings by @sammaji in https://github.com/maximhq/bifrost/pull/8199
* feat(ui): move background jobs into a separate tab in the notification panel by @impoiler in https://github.com/maximhq/bifrost/pull/8211
* [fix]: routing tree - resolve silent truncation beyond 100 rules by @Shashank2985 in https://github.com/maximhq/bifrost/pull/8194
* feat: add opt-in private push callback delivery by @danpiths in https://github.com/maximhq/bifrost/pull/8204
* test: add Agent Gateway lifecycle e2e to the release pipeline by @danpiths in https://github.com/maximhq/bifrost/pull/8206
* chore: updates provider harness by @sammaji in https://github.com/maximhq/bifrost/pull/8150
* feat(warp):improved error codes by @kohlivrinda in https://github.com/maximhq/bifrost/pull/8176
* fix(logstore: keep millisecond precision in clickhouse time-window filters by @kohlivrinda in https://github.com/maximhq/bifrost/pull/8177
* fix(warp): one similarity scale for semantic search, 0.5 default, multi-phrasing fan-out by @kohlivrinda in https://github.com/maximhq/bifrost/pull/8180
* fix(logstore): team, customer and bu filters match multi-value owners on Clickhouse and sqlite by @kohlivrinda in https://github.com/maximhq/bifrost/pull/8182
* fix(logstore): keep error_details in the database when object storage is on by @kohlivrinda in https://github.com/maximhq/bifrost/pull/8183
* fix(warp): reopened failed turns keep their error code by @kohlivrinda in https://github.com/maximhq/bifrost/pull/8184
* fix(logstore): keep millisecond precision in the ClickHouse keyset cursor by @kohlivrinda in https://github.com/maximhq/bifrost/pull/8185
* fix: gpt live tests and direct key by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8133
* fix(warp): say its own queries carry the asker's attribution, and never claim configuration by @kohlivrinda in https://github.com/maximhq/bifrost/pull/8186
* tests: live test updates by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8202
* fix: live in openai custom provider UI by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8203
* fix: add batch ID attribute to logging settlement spans by @sammaji in https://github.com/maximhq/bifrost/pull/8213
* docs: update navbar CTAs and footer layout by @kamyashah-arch in https://github.com/maximhq/bifrost/pull/8224
* fix: preserve reasoning.summary in chat-to-responses conversion by @sammaji in https://github.com/maximhq/bifrost/pull/8214
* community: add FXMacroData to MCP library by @roberttidball in https://github.com/maximhq/bifrost/pull/8005
* fix: detach request-scoped work and plugin Init from *fasthttp.RequestCtx to prevent "missing cancel error" panic on shutdown by @roroghost17 in https://github.com/maximhq/bifrost/pull/8226
* fix: export raw request and provider error body for failed requests by @roroghost17 in https://github.com/maximhq/bifrost/pull/8227
* fix(cli): separate CLI browser auth identity by @R-droid101 in https://github.com/maximhq/bifrost/pull/7579
* chore(helm): sync chart with config.schema.json for v2.1.44 by @BearTS in https://github.com/maximhq/bifrost/pull/8187
* feat(helm): support topologySpreadConstraints on the Bifrost pod by @BearTS in https://github.com/maximhq/bifrost/pull/8188
* feat(helm): add extraContainers and guard native sidecars by @BearTS in https://github.com/maximhq/bifrost/pull/8189
* fix(deps): resolve open Dependabot alerts across CI tools, MCP examples and Python tests by @akshaydeo in https://github.com/maximhq/bifrost/pull/8241
* fix: correct connector export gaps surfaced by the e2e matrix by @roroghost17 in https://github.com/maximhq/bifrost/pull/8228
* [fix]: configstore - serve new skill version when LatestVersion is unset by @ozenyunus35 in https://github.com/maximhq/bifrost/pull/8251
* fix: preserve safeguard results in streaming responses by @danpiths in https://github.com/maximhq/bifrost/pull/8252
* [fix]: preserve cache_control, citations, prompt_cache_breakpoint and cachePoint in deepCopyChatContentBlock by @Shashank2985 in https://github.com/maximhq/bifrost/pull/8216
* [fix]: apply log retention changes without restarting the cleaner by @Constantine3 in https://github.com/maximhq/bifrost/pull/8243
* go mod patches by @akshaydeo in https://github.com/maximhq/bifrost/pull/8200
* fix(logstore): truncate ClickHouse input histories to last message in list queries by @ege-arhan in https://github.com/maximhq/bifrost/pull/8247
* fix(modelcatalog): fall back to lowercase model name in pricing lookup by @impoiler in https://github.com/maximhq/bifrost/pull/8229
* ui: Logs details sheet header stickiness and state preservation by @impoiler in https://github.com/maximhq/bifrost/pull/8240
* fix(core): map output_text to text on multi-part assistant turns by @shreyanshj10 in https://github.com/maximhq/bifrost/pull/8208
* adds snyk to allowed domains in runner by @akshaydeo in https://github.com/maximhq/bifrost/pull/8265
* fix(core): keep the failed tool result marker on OpenAI Responses by @shreyanshj10 in https://github.com/maximhq/bifrost/pull/8209
* feat(decisions)porting v1/decisions to normalised openai shape by @Madhuvod in https://github.com/maximhq/bifrost/pull/8181
* fix(openai): send custom tools as function tools when the datasheet marks them unsupported by @impoiler in https://github.com/maximhq/bifrost/pull/8248
* feat: add injected_tools provider config field by @akshaydeo in https://github.com/maximhq/bifrost/pull/8021
* feat: accept injected_tools on the provider API and config schema by @akshaydeo in https://github.com/maximhq/bifrost/pull/8022
* feat: let provider-injected MCP tools past tool filters by @akshaydeo in https://github.com/maximhq/bifrost/pull/8023
* feat: rewrite requests to carry provider-injected tools by @akshaydeo in https://github.com/maximhq/bifrost/pull/8024
* refactor: split chat and responses dispatch out of the provider handlers by @akshaydeo in https://github.com/maximhq/bifrost/pull/8025
* feat: execute provider-injected tools server side for non-streaming requests by @akshaydeo in https://github.com/maximhq/bifrost/pull/8026
* feat: execute provider-injected tools in streaming chat by @akshaydeo in https://github.com/maximhq/bifrost/pull/8027
* feat(decisions): add OpenAI native /v1/decisions support for gpt-6-luna by @Madhuvod in https://github.com/maximhq/bifrost/pull/8191
* feat: execute provider-injected tools in streaming responses by @akshaydeo in https://github.com/maximhq/bifrost/pull/8028
* feat: serve injected tools on the Anthropic passthrough path by @akshaydeo in https://github.com/maximhq/bifrost/pull/8029
* feat(ui): add a web search tab to provider configuration by @akshaydeo in https://github.com/maximhq/bifrost/pull/8030
* feat(decisions): add OpenAI-format /openai/v1/decisions route by @Madhuvod in https://github.com/maximhq/bifrost/pull/8192
* feat(complexity): support OpenAI decision models like gpt-6-luna in the complexity router by @Madhuvod in https://github.com/maximhq/bifrost/pull/8193
* feat(pricing): add decision-specific rates for chat-row models and skip negative variable-price rates by @Madhuvod in https://github.com/maximhq/bifrost/pull/8249
* [fix]: Routing Tree CEL parser quote and escape handling in celParser by @Shashank2985 in https://github.com/maximhq/bifrost/pull/8173
* chore: refactor e2e ui test suite by @sammaji in https://github.com/maximhq/bifrost/pull/7981
* feat(framework/queue): add queue interfaces, options, store SPI and registry by @akshaydeo in https://github.com/maximhq/bifrost/pull/8217
* feat(framework/queue): add generic store engine and in-memory store by @akshaydeo in https://github.com/maximhq/bifrost/pull/8218
* feat(framework/queue): add SQL store and the logstore queue type for SQLite by @akshaydeo in https://github.com/maximhq/bifrost/pull/8219
* feat(framework/queue): add the Postgres dialect for the logstore queue by @akshaydeo in https://github.com/maximhq/bifrost/pull/8220
* feat(framework/queue): add the ClickHouse store for the logstore queue by @akshaydeo in https://github.com/maximhq/bifrost/pull/8221
* feat(framework/queue): wake consumers across instances with Postgres LISTEN/NOTIFY by @akshaydeo in https://github.com/maximhq/bifrost/pull/8222
* test(framework/queue): add speed and space benchmarks for every backend by @akshaydeo in https://github.com/maximhq/bifrost/pull/8250
* logstore gating for smoother logstore migrations by @akshaydeo in https://github.com/maximhq/bifrost/pull/8264
* review fixes by @akshaydeo in https://github.com/maximhq/bifrost/pull/8285
* fix(core): detect truncated Content-Length response bodies by @Constantine3 in https://github.com/maximhq/bifrost/pull/8287
* fixes mid conversation tool changes by @akshaydeo in https://github.com/maximhq/bifrost/pull/8278
* fix: disable GenAI raw-body passthrough when falling back to non-Google providers by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8230
* fix: record timeout and cancellation classes on the attempt trail for attempts Bifrost ends by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8231
* revert: stop moving the provider holding the caller's pinned API key to the front of the chain by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8232
* docs: update adaptive load balancing endpoints to /api/adaptive-routing and clarify release response semantics by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8233
* test(harness): an isolated serial pass, and setup-token auth plus a poll cap for the routing-wiring collection by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8234
* test: in-process routing scenario coverage for key pins, session affinity, failure classes and fallbacks, plus weighted distribution chi-square tests by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8235
* test(harness): routing rows for rules, governance, catalog, sessions and direct keys, plus a serial direct-key settings folder by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8236
* test(e2e): run routing and model-catalog wiring collections in CI against clean servers booted with `--binary` by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8237
* fix: convert GenAI requests for Claude and other non-Google Model Garden models on Vertex instead of passing the raw body through by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8343
* test: pin provider-injected web search in the provider harness by @akshaydeo in https://github.com/maximhq/bifrost/pull/8031
* fix: cr fixes for mcp web search by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8253
* feat(semanticcache): scope cache entries by identity, with a `disable_identity_scoping` opt-out by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8337
* fix: semantic cache dimension mismatch checks on every vector store, cosine scoring, and plugin update rollback by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8338
* fix(warp): treat Weaviate scores as raw cosine in semantic search like every other vector store by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8339
* feat: emit x-bifrost-cache-* response headers for semantic cache lookups, including streams by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8340
* test(e2e): semantic cache wiring newman suite on Redis and Weaviate by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8341
* fix: governance key narrowing in live by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8293
* fix: failed delegation error by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8294
* fix: invalid request error in realtime by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8295
* fix: session close by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8296
* fix: key admission in unit by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8297
* fix: 15 seconds charge on webrtc initialization of live session by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8298
* fix: delegation error by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8299
* fix: alias resolution in live by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8319
* fix(openai): keep gpt-5.6+ in implicit prompt cache mode when translating cache_control by @akshaydeo in https://github.com/maximhq/bifrost/pull/8334
* fix(live): billing via webrtc channel by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8346
* fix: skip config.json limits on virtual keys governed by an access profile by @BearTS in https://github.com/maximhq/bifrost/pull/8332
* fix: safeguards results in delta by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8154
* fix: extra fields on responses stream chunks by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8169
* fix: mid stream retry logging by @TejasGhatte in https://github.com/maximhq/bifrost/pull/7976
* fix: tool format for kimi moonshotai by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8179
* fix: clamp max outputs and thinking tokens on fallbacks by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8242
* fix: bill usage from cancelled requests in prometheous by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8244
* fix: gpt models implicit caching fix by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8322
* fix: route MCP tool results through output guardrails before logging by @roroghost17 in https://github.com/maximhq/bifrost/pull/8305
* feat(compat): make decision-to-responses emulation opt-in via convert_decision_to_responses by @Madhuvod in https://github.com/maximhq/bifrost/pull/8288
* harness and docs changes for emulation -> responses in compact by @Madhuvod in https://github.com/maximhq/bifrost/pull/8289
* feat(openrouter): route decisions by datasheet supports_decisions row by @Madhuvod in https://github.com/maximhq/bifrost/pull/8301
* feat(complexity): list datasheet-marked decision models for OpenRouter in the complexity router by @Madhuvod in https://github.com/maximhq/bifrost/pull/8303
* feat(providers): adds cloudflare as a new provider by @Madhuvod in https://github.com/maximhq/bifrost/pull/8342
* feat(decisions): add native Clef decision support to the Cloudflare provider by @Madhuvod in https://github.com/maximhq/bifrost/pull/8344
* feat(openapi): add Cloudflare Workers AI provider and key config to docs by @Madhuvod in https://github.com/maximhq/bifrost/pull/8345
* feat(providers): add migration dialog for custom Cloudflare providers and dedupe Cloudflare model list by @Madhuvod in https://github.com/maximhq/bifrost/pull/8351
* feat(decisions): add native Perplexity decider model support by @Madhuvod in https://github.com/maximhq/bifrost/pull/8354
* feat(openrouter): send decision images as plain state items, list live decision models, and forward response headers by @Madhuvod in https://github.com/maximhq/bifrost/pull/8355
* fix: store config.json virtual key limits on model configs by @roroghost17 in https://github.com/maximhq/bifrost/pull/8306
* docs(audit-logs): document the new event type URI by @impoiler in https://github.com/maximhq/bifrost/pull/8269
* docs(alerting): document sort parameters on the alert history endpoint by @impoiler in https://github.com/maximhq/bifrost/pull/8271
* docs(adaptive-routing): document the incident list on the issues endpoint by @impoiler in https://github.com/maximhq/bifrost/pull/8274
* docs(governance): document budget increase requests and override strategies by @impoiler in https://github.com/maximhq/bifrost/pull/8276
* docs(governance): document disabled MCP clients on virtual keys by @impoiler in https://github.com/maximhq/bifrost/pull/8270
* docs(adaptive-routing): document the Incidents page by @impoiler in https://github.com/maximhq/bifrost/pull/8272
* docs(logs): document the grouped view by @impoiler in https://github.com/maximhq/bifrost/pull/8273
* docs(logs): document background jobs in the notification panel by @impoiler in https://github.com/maximhq/bifrost/pull/8275
* fix(ui): move warp dock bottom spacing from inner container to resizable panel by @impoiler in https://github.com/maximhq/bifrost/pull/8360
* adds allow localhost oauth servers for mcp by @akshaydeo in https://github.com/maximhq/bifrost/pull/8347
* feat(decisions): add native System One decision support to the Ollama provider by @Madhuvod in https://github.com/maximhq/bifrost/pull/8363
* fix: stabilize flaky e2e tests for logs and mcp settings by @sammaji in https://github.com/maximhq/bifrost/pull/8365
* adds upsert based writes to avoid losing logs by @akshaydeo in https://github.com/maximhq/bifrost/pull/8350
* feat(core): shared token cache for OAuth-minted provider credentials by @akshaydeo in https://github.com/maximhq/bifrost/pull/8254
* refactor(githubcopilot): mint through the shared token cache by @akshaydeo in https://github.com/maximhq/bifrost/pull/8255
* feat(core): oauth_key_config mints bearers for OpenAI-compatible providers by @akshaydeo in https://github.com/maximhq/bifrost/pull/8256
* feat(transport): persist, validate and expose oauth_key_config by @akshaydeo in https://github.com/maximhq/bifrost/pull/8257
* feat(ui): OAuth-minted keys for OpenAI-compatible providers by @akshaydeo in https://github.com/maximhq/bifrost/pull/8258
* ui: a2a ui fixes by @impoiler in https://github.com/maximhq/bifrost/pull/8336
* docs: oauth_key_config for custom OpenAI-compatible providers by @akshaydeo in https://github.com/maximhq/bifrost/pull/8259
* feat: add session grouping and raw capture, refine log views by @danpiths in https://github.com/maximhq/bifrost/pull/8364
* feat(injected-tools): inject any number of named MCP tools per provider by @akshaydeo in https://github.com/maximhq/bifrost/pull/8366
* feat(ui): replace the provider Web Search tab with a Tools table by @akshaydeo in https://github.com/maximhq/bifrost/pull/8367
* test(injected-tools): pin named injected tools in the harness and E2E by @akshaydeo in https://github.com/maximhq/bifrost/pull/8368
* docs(helm): add Cloudflare provider and expanded decision model providers to v2.1.44 changelog by @Madhuvod in https://github.com/maximhq/bifrost/pull/8378
* feat: update server instructions forwarding when code mode is on by @roroghost17 in https://github.com/maximhq/bifrost/pull/8371
* feat(ui): add motion and smooth streaming animations to Warp chat by @impoiler in https://github.com/maximhq/bifrost/pull/8380
* docs: identity sync guide and align IdP setup docs by @BearTS in https://github.com/maximhq/bifrost/pull/8373
* docs: data access control docs and add teams, business units & customers guide by @BearTS in https://github.com/maximhq/bifrost/pull/8375
* docs: access profile docs update for teams customers and bu by @BearTS in https://github.com/maximhq/bifrost/pull/8379
* fix: ws close in live by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8372
* fix: reasoning strip with item ids by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8374
* fix: live provider key header by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8376
* fix: sideband request logs by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8381
* fix(complexity-router): ignore model-listing failures for decision providers and open the model selector with the full list by @Madhuvod in https://github.com/maximhq/bifrost/pull/8385
* fix: vertex passthrough version prefix by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8134
* fix(ui): hide sentinel values in selectors, add dark mode MCP badges, and use container queries by @impoiler in https://github.com/maximhq/bifrost/pull/8387
* fix(sessionaffinity): drop session key bindings to keys removed from single-key pools by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8384
* test(gateway): fallback serves on an allowed key when a key pin falls outside the virtual key's key_ids by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8402
* fix(realtime): answer unmapped ephemeral tokens on Azure with a client error and recover WebSocket session panics by @akshaydeo in https://github.com/maximhq/bifrost/pull/8282
* test(gateway): session drops its binding when a virtual key's key_ids shrink to one key by @Pratham-Mishra04 in https://github.com/maximhq/bifrost/pull/8403
* fix(replicate): keep file list pagination on the configured file endpoint by @akshaydeo in https://github.com/maximhq/bifrost/pull/8290
* fix(governance): bind provider objects to the virtual key that created them by @akshaydeo in https://github.com/maximhq/bifrost/pull/8292
* fix(governance): bind provider objects under every id form the provider accepts by @akshaydeo in https://github.com/maximhq/bifrost/pull/8317
* fix(live): bind a live session to the virtual key that opened it by @akshaydeo in https://github.com/maximhq/bifrost/pull/8331
* fix(http): apply the management API cross-origin rule without a config store by @akshaydeo in https://github.com/maximhq/bifrost/pull/8300
* fix(configstore): match legacy plaintext lookups only against plaintext rows by @akshaydeo in https://github.com/maximhq/bifrost/pull/8302
* fix(tracing): redact the virtual key header in captured request headers by @akshaydeo in https://github.com/maximhq/bifrost/pull/8304
* fix(governance): classify file batches by what the provider executes by @akshaydeo in https://github.com/maximhq/bifrost/pull/8318
* fix(governance): check every model a passthrough body names by @akshaydeo in https://github.com/maximhq/bifrost/pull/8321
* fix(providers): treat the Vertex credential JSON as a key dial target by @akshaydeo in https://github.com/maximhq/bifrost/pull/8330
* fix(warp ui): max iterations ui by @kohlivrinda in https://github.com/maximhq/bifrost/pull/8401
* fix: export failure classification and end-to-end TTFT on traces by @roroghost17 in https://github.com/maximhq/bifrost/pull/8404
* fix(transports): bound request decompression by what the caller sent by @akshaydeo in https://github.com/maximhq/bifrost/pull/8333
* fix(replicate): keep file list pagination on the configured file endpoint (#8290) by @akshaydeo in https://github.com/maximhq/bifrost/pull/8405
* fix(plugins): gate built-in plugin endpoints and secret references behind real auth by @akshaydeo in https://github.com/maximhq/bifrost/pull/8335
* follow up harness fixes by @akshaydeo in https://github.com/maximhq/bifrost/pull/8407
* backmerge main to dev by @BearTS in https://github.com/maximhq/bifrost/pull/8409
* fix: prefer realtime catalog rates for realtime requests by @danpiths in https://github.com/maximhq/bifrost/pull/8411
* fix: update fireworks test models, bump token budgets and disable openai text completion tests by @sammaji in https://github.com/maximhq/bifrost/pull/8377
* feat: add agent name and correlation id filters to warp logs tools by @sammaji in https://github.com/maximhq/bifrost/pull/8388
* test: skip test case already expected to fail on -race and fix failing queue tests by @sammaji in https://github.com/maximhq/bifrost/pull/8389
* tests: live tests in CI by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8415
* docs(decisions): document Cloudflare, Perplexity, Ollama and self-hosted decision models and rework decision emulation docs by @Madhuvod in https://github.com/maximhq/bifrost/pull/8397
* docs(guardrails): document regex allowed_values and profile execution order by @Madhuvod in https://github.com/maximhq/bifrost/pull/8410
* docs(warp): add warp docs by @kohlivrinda in https://github.com/maximhq/bifrost/pull/8416
* fix: drop reasoning.summary for models that don't support it by @sammaji in https://github.com/maximhq/bifrost/pull/8408
* fix: anthropic tool normalization on claude bedrock modelsz by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8417
* tests: live tests on ci for workflows by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8420
* fix(transports): charge the decompression budget for bytes actually inflated by @akshaydeo in https://github.com/maximhq/bifrost/pull/8431
* fix(logstore): keep Postgres log batches from failing on NUL bytes, invalid UTF-8 and jsonb-rejected escapes by @akshaydeo in https://github.com/maximhq/bifrost/pull/8428
* fix(providers): end large-response log previews on a UTF-8 boundary by @akshaydeo in https://github.com/maximhq/bifrost/pull/8429
* fix(logging): store binary log bodies as a size placeholder by @akshaydeo in https://github.com/maximhq/bifrost/pull/8430
* regression fixes for pgtextsafety by @akshaydeo in https://github.com/maximhq/bifrost/pull/8437
* adds toggle for virtul key level objct ownership by @akshaydeo in https://github.com/maximhq/bifrost/pull/8427
* tests: harness tests fixes by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8413
* fix: live sheet ui by @TejasGhatte in https://github.com/maximhq/bifrost/pull/8414
* fix(integrations): type mid-stream errors as event: error on openai responses routes by @akshaydeo in https://github.com/maximhq/bifrost/pull/8421
* fix(gemini): keep Responses-path parity for JSON mode with tools, native retrieval tools, candidateCount and logprobs by @akshaydeo in https://github.com/maximhq/bifrost/pull/8422
* fix: cohere replay thinking order, decisions tool_choice gate, served tier on chat bridge, bare sonar routing, mcp server_label, legacy prompt framing by @akshaydeo in https://github.com/maximhq/bifrost/pull/8423
* test(harness): scope MCP auto-injection to a serial window and fix stale harness cases by @akshaydeo in https://github.com/maximhq/bifrost/pull/8424
* fix: MCP agent loop keeps earlier turns, the turn-1 route and caller cache points by @akshaydeo in https://github.com/maximhq/bifrost/pull/8425
* fix(deepseek): downgrade json_schema response_format to json_object by @akshaydeo in https://github.com/maximhq/bifrost/pull/8432
* model catalog burst fix in multinode env by @akshaydeo in https://github.com/maximhq/bifrost/pull/8438
* fix(gemini): carry urlContextMetadata and forward native tool entries byte-faithfully on the Responses path by @akshaydeo in https://github.com/maximhq/bifrost/pull/8433
* fix(core): keep caller-fault errors from running catalog-inferred fallbacks; forward raw gemini logprobs by @akshaydeo in https://github.com/maximhq/bifrost/pull/8434
* updates migration flow for indices by @akshaydeo in https://github.com/maximhq/bifrost/pull/8439
* fix(configstore): bind large provider-object id lists as one parameter by @akshaydeo in https://github.com/maximhq/bifrost/pull/8435
* fix(mcp): return 404 for deleting or updating an unknown MCP client by @akshaydeo in https://github.com/maximhq/bifrost/pull/8436
* fix(core): read the message context before abandoning delivery by @akshaydeo in https://github.com/maximhq/bifrost/pull/8440
* v2.3.0 by @akshaydeo in https://github.com/maximhq/bifrost/pull/8399
* fixes schema validation by @akshaydeo in https://github.com/maximhq/bifrost/pull/8442
* test case fixes round 2 by @akshaydeo in https://github.com/maximhq/bifrost/pull/8444
* test fixes round 2 & 3 by @akshaydeo in https://github.com/maximhq/bifrost/pull/8445
* test case fixed round 4 by @akshaydeo in https://github.com/maximhq/bifrost/pull/8446
* fixed server shutdown race relay by @akshaydeo in https://github.com/maximhq/bifrost/pull/8447
* test case fixes round 5 by @akshaydeo in https://github.com/maximhq/bifrost/pull/8448
* test fixes round 6 by @akshaydeo in https://github.com/maximhq/bifrost/pull/8451
## New Contributors
* @xiechimon made their first contribution in https://github.com/maximhq/bifrost/pull/7362
* @wangrat made their first contribution in https://github.com/maximhq/bifrost/pull/7395
* @hcavarsan made their first contribution in https://github.com/maximhq/bifrost/pull/7589
* @SandyDRawat made their first contribution in https://github.com/maximhq/bifrost/pull/3835
* @wofiporia made their first contribution in https://github.com/maximhq/bifrost/pull/7359
* @MohammadHijjawi97 made their first contribution in https://github.com/maximhq/bifrost/pull/7590
* @Daltonganger made their first contribution in https://github.com/maximhq/bifrost/pull/7648
* @hmdsefi made their first contribution in https://github.com/maximhq/bifrost/pull/7825
* @jimseiwert made their first contribution in https://github.com/maximhq/bifrost/pull/7916
* @xujiantop-crypto made their first contribution in https://github.com/maximhq/bifrost/pull/7939
* @novai42 made their first contribution in https://github.com/maximhq/bifrost/pull/6614
* @Shashank2985 made their first contribution in https://github.com/maximhq/bifrost/pull/8194
* @kamyashah-arch made their first contribution in https://github.com/maximhq/bifrost/pull/8224
* @roberttidball made their first contribution in https://github.com/maximhq/bifrost/pull/8005
* @ozenyunus35 made their first contribution in https://github.com/maximhq/bifrost/pull/8251
* @ege-arhan made their first contribution in https://github.com/maximhq/bifrost/pull/8247
* @shreyanshj10 made their first contribution in https://github.com/maximhq/bifrost/pull/8208
**Full Changelog**: https://github.com/maximhq/bifrost/compare/ent-v2.2.6-base...ent-v2.3.0-baseRelated Repositories
Terminal session manager for AI coding agents. One TUI for Claude, Gemini, OpenCode, Codex, and more.
Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models.
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
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
The world’s fastest framework for building websites.