---
title: "v1.5.0-prerelease1"
description: "v1.5.0-prerelease1 changelog - 2026-04-01"
---
<Tabs>
  <Tab title="NPX">
    ```bash
    npx -y @maximhq/bifrost --transport-version v1.5.0-prerelease1
    ```
  </Tab>
  <Tab title="Docker">
    ```bash
    docker pull maximhq/bifrost:v1.5.0-prerelease1
    docker run -p 8080:8080 maximhq/bifrost:v1.5.0-prerelease1
    ```
  </Tab>
</Tabs>

<Update label="Bifrost(HTTP)" description="1.5.0-prerelease1">
- feat: dedicated provider keys API — keys are now managed via `/api/providers/{provider}/keys` endpoints instead of being embedded in provider create/update payloads
- feat: VK provider config key_ids now supports ["*"] wildcard to allow all keys; empty key_ids denies all; handler resolves wildcard to AllowAllKeys flag without DB key lookups
- feat: now plugins can start injecting logs at trace level. Just use `ctx.Log(schemas.LogLevelInfo, "Test log")`
- feat: add option to disable automatic MCP tool injection per request
- feat: virtual key MCP configs now act as an execution-time allow-list — tools not permitted by the VK are blocked at inference and MCP tool execution
- refactor: standardize empty array conventions in bifrost. Empty array means no tools/keys are allowed, ["*"] means all tools/keys are allowed.
- feat: add support for request level extra headers in MCP tool execution.
- fix: add support for `x-bf-mcp-include-clients` and `x-bf-mcp-include-tools` request headers to filter MCP tools/list response when using bifrost as an MCP gateway.
- refactor: parallelize model listing for providers to speed up startup time.
- fix: send back accumulated usage in MCP agent mode.
- feat: MCP configuration now supports assigning virtual keys with per-tool access control.
- feat: adds option to allow MCP clients to run on all virtual keys without explicit assignment.
- feat: add support for pricing overrides.
- feat: add StabilityAI provider support to Bedrock.
- fix: handle text, vtt, srt response formats in OpenAI transcription response.

<Warning>
**v1.5.0 contains multiple breaking changes.** See the [v1.5.0 Migration Guide](/migration-guides/v1.5.0) for full before/after examples and a migration checklist.
</Warning>

## Breaking Changes in This Release

This prerelease introduces 9 breaking changes. See the **[v1.5.0 Migration Guide](/migration-guides/v1.5.0)** for full before/after examples, automatic migration details, and a step-by-step checklist.

| # | Breaking Change | Affected |
|---|---|---|
| [1](/migration-guides/v1.5.0#breaking-change-1-empty-array-now-means-deny-all) | Empty array (`[]`) now means "deny all" on all allow-list fields | `config.json`, REST API |
| [2](/migration-guides/v1.5.0#breaking-change-2-allowed_keys-renamed-to-key_ids) | `allowed_keys` renamed to `key_ids` in VK provider configs | `config.json`, REST API |
| [3](/migration-guides/v1.5.0#breaking-change-3-virtual-key-provider_configs-is-deny-by-default) | Virtual Key `provider_configs` is deny-by-default (empty = no providers) | `config.json`, REST API |
| [4](/migration-guides/v1.5.0#breaking-change-4-whitelist-validation) | WhiteList validation: wildcard cannot be mixed, no duplicates | REST API |
| [5](/migration-guides/v1.5.0#breaking-change-5-weight-is-now-nullable) | `weight` is now nullable (`*float64`) on VK provider configs | REST API, Go SDK |
| [6](/migration-guides/v1.5.0#breaking-change-6-provider-keys-api-separated) | Provider keys API separated — `keys` removed from provider payloads | REST API |
| [7](/migration-guides/v1.5.0#breaking-change-7-compact-plugin-restructured) | Compact plugin: `enable_litellm_fallbacks` replaced by three granular options | Plugin config |
| [8](/migration-guides/v1.5.0#breaking-change-8-replicate-image-edits-removed-from-generations-endpoint) | Replicate image edits removed from `/v1/images/generations` | REST API |
| [9](/migration-guides/v1.5.0#breaking-change-9-ollama-and-sgl-per-key-url-configuration) | Ollama and SGL moved to per-key URL configuration | `config.json`, REST API |
| [10](/migration-guides/v1.5.0#breaking-change-10-go-sdk-changes) | Go SDK: `HuggingFaceKeyConfig` removed, `providerRequiresKey()` signature changed | Go SDK |

---
</Update>
<Update label="Core" description="1.5.0">
- feat: add DisableAutoToolInject to MCPToolManagerConfig to suppress automatic MCP tool injection per request
- feat: add BifrostContextKeyMCPAddedTools to context to track MCP tools added to the request
- refactor: standardize empty array conventions in bifrost. Empty array means deny all, ["*"] means allow all for models/tools/keys.
- feat: add support for request-level extra headers in MCP tool execution using BifrostContextKeyMCPExtraHeaders key in context.
- fix: send back accumulated usage in MCP agent mode.
- feat: add StabilityAI provider support to Bedrock.
- fix: handle text, vtt, srt response formats in OpenAI transcription response.

</Update>
<Update label="Framework" description="1.3.0">
- feat: add provider keys CRUD to configstore and in-memory store
- feat: add virtual key access management for MCP clients
- feat: adds option to allow MCP clients to run on all virtual keys
- feat: add image edit input view on logs
- refactor: replace string slice with WhiteList type for model restrictions
- refactor: blacklist models on new convention
- fix: add blacklisted model field in tableKeyFromSchemaKey
- feat: logging in plugins
- chore: adds migration guide for 1.5 and test fixes

</Update>
<Update label="governance" description="1.5.0">
- refactor: standardize empty array conventions for VK Provider & MCP Configs, and makes Provider Config weight optional for routing
- feat: VK MCP config now works as an AllowList
- refactor: standardize empty array conventions for VK Provider Config Allowed Keys
- refactor: standardize empty array conventions for allowed models
- refactor: replace string slices with WhiteList for allowlist fields
- feat: implement scoped pricing override
- refactor: custom pricing refactor
- feat: adds option to allow MCP clients to run on all virtual keys
- refactor: blacklist models on new convention

</Update>
<Update label="jsonparser" description="1.5.0">
- chore: upgraded core to v1.5.0 and framework to v1.3.0

</Update>
<Update label="litellmcompat" description="0.1.0">
- chore: upgraded core to v1.5.0 and framework to v1.3.0

</Update>
<Update label="logging" description="1.5.0">
- feat: add image edit input view on logs
- feat: logging in plugins
- feat: implement scoped pricing override
- refactor: custom pricing refactor

</Update>
<Update label="maxim" description="1.6.0">
- chore: upgraded core to v1.5.0 and framework to v1.3.0

</Update>
<Update label="mocker" description="1.5.0">
- chore: upgraded core to v1.5.0 and framework to v1.3.0

</Update>
<Update label="otel" description="1.2.0">
- chore: upgraded core to v1.5.0 and framework to v1.3.0

</Update>
<Update label="semanticcache" description="1.5.0">
- chore: upgraded core to v1.5.0 and framework to v1.3.0

</Update>
<Update label="telemetry" description="1.5.0">
- feat: implement scoped pricing override
- refactor: custom pricing refactor

</Update>
