Skip to main content
Bifrost Enterprise
v1.5.4

Changelog

Release on transports/v1.6.4. Ships a full guardrails redaction engine (PII, secrets, and custom regex redaction with logs-only and reversible modes plus RBAC-gated reveal), a new alerting system with declarative channels and CEL-based rules, and a major SCIM/OIDC provisioning overhaul including SailPoint support, wildcard/glob role mappings, and transactional team/BU mapping ownership transfers. Also picks up the new Sarvam AI provider and durable background jobs from OSS.

✨ Features

  • Guardrails Redaction - New redaction pipeline for guardrails: detect, block, and redact actions for PII providers (Presidio and Azure Language PII, with multi-select entity search), secrets detection, and custom regex rules, with findings composed across guardrails into a single redaction result. Docs
  • Redaction Modes and RBAC Reveal - Redaction supports logs-only and reversible modes, configurable per guardrail in the UI. Reveal of redacted log content is RBAC-gated, redaction and reveal are phase-scoped, guardrail replacements are published to trace exporters, and raw request/response payloads in extra fields are redacted when redaction is enabled.
  • Streaming Output Redaction - Redaction now applies to streaming output for PII providers, including Responses API streams.
  • Alerting - New alerting system with declarative channels and CEL-based rules: channel registry with delivery logic, an evaluation layer sourcing metrics from governance, alert history stored in the log store, config.json loading and reconciliation, a leader-lifecycle-driven alerting manager, a dedicated RBAC resource, and a full management UI with channel icons in history.
  • Wildcard and Glob Role Mappings - Attribute-to-role mappings in OIDC/SCIM configuration now support wildcard and glob pattern matching on attribute values.
  • SailPoint SCIM Provider - SCIM provisioning support enabled for the SailPoint identity provider.
  • Entra Provisioning Performance - Entra group and user fetches are parallelized and batched via the Graph API, with progress reporting, live import counters in the sync UI, and role filtering support.
  • Keycloak Group and Role Propagation - Keycloak group names and roles are propagated to the idpUser during SCIM provisioning.
  • Team/BU Mapping Ownership Management - OIDC team mapping ownership moves are transactional with preflight collision detection, the UI warns on team/BU mapping ownership moves and renames before saving SCIM config, business unit lookup uses source_id with name fallback and backfill, and OIDC-owned team and BU names are reconciled on mapping changes during login and sync.
  • SCIM Config Hot-Reload - SCIM provider configuration changes are gossiped cluster-wide so all nodes hot-reload without a restart.
  • WebSocket Propagation Progress - Access profile propagation job progress is now pushed over WebSocket events instead of polling.
  • Optional Google Workspace Admin Email - Google Workspace adminEmail is now optional; bulk sync is disabled when it is absent or the Directory API is unreachable.
  • MCP Tool Group Lookup by ID - MCP tool groups can be referenced by ID in addition to name during config reconciliation.
  • Leader-Gated OAuth2 Sweep Worker - A leader-gated sweep worker purges expired authorize requests, revoked refresh tokens, and orphaned dynamic clients.
  • Connector Attribution Attributes - Connectors now carry previously missing attribution attributes, with expanded test coverage across the BigQuery, Kafka, Pub/Sub, and Datadog connectors.

🌎 Open Source Features

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

🐞 Fixed

  • OIDC Token Endpoint - Explicit tokenEndpoint is preferred over the auto-constructed URL in OIDC config.
  • Redaction Shared References - Request/response objects are copied before redaction to avoid shared reference mutation; cloning only happens for logs-only mode.
  • Propagate Job Cancellation - Context cancellation is respected when acquiring the semaphore in the propagate job.
  • Access Profile Broadcast - Removed redundant access profile change broadcast on update.
  • BU Mapping Reassignment - BU mapping ownership is transferred on SCIM group reassignment instead of erroring or duplicating.
  • Duplicate Job Execution - The sidekiq reaper was replaced with an atomic dispatcher, preventing duplicate job execution in multi-node clusters.
  • Governance State Sync - Governance no longer blocks on state sync; requests are served from DB state while leader sync retries, and state-sync baselines are snapshotted under lock to prevent concurrent map read/write.
  • Token Refresh Race - Fixed a race condition in token refresh.
  • Prompt Logging - The actual prompt is no longer logged back in responses.
  • BigQuery Writer Double Close - Fixed a double close of the managed writer in the BigQuery connector.
  • Linked Scopes Cleanup - Deleting a linked scope now deletes the linked rule.
  • Sync Users Sheet - The sync users sheet can be closed during the importing step.
  • Governance Rate-Limit Reset CPU (OSS) - Guards against invalid reset timeouts, parallelizes resting-budget flows only when required, and fixes the calendar-based alignment qualifier.
  • Masked Key Persistence (OSS) - Masked provider key previews are never persisted to config storage.
  • OpenShift Arbitrary UIDs (OSS) - Build-time group-0 ownership with no runtime chown.
  • Passthrough Virtual Key Attribution (OSS) - Passthrough calls via the Azure api-key header now attribute to the virtual key.
  • Rerank for Custom Providers (OSS) - /v1/rerank now works with custom OpenAI-compatible providers.
  • Responses Stream Usage (OSS) - Stream usage is persisted when providers omit or reuse sequence numbers.
  • Wildcard allowed_models Repair (OSS) - Bare wildcard allowed_models rows that broke admin provider updates are repaired.
  • Streaming Error Panic (OSS) - Nil-safe tracing span lookup prevents panics on streaming errors.
  • Anthropic Tool ID Sanitization (OSS) - tool_use/tool_result ids are sanitized to Anthropic’s charset.
  • Realtime Transcription Sessions (OSS) - GA transcription-type sessions supported in POST /v1/realtime/client_secrets.
  • Diarized Transcription (OSS) - diarized_json segments and ElevenLabs speaker passthrough supported.
  • Model Discovery (OSS) - Disabled keys are skipped when scheduling model-discovery fetches.
  • MCP Timeout Placeholder (OSS) - The MCP tool execution timeout placeholder shows the real global default.
  • Redacted Thinking Round-Trip (OSS) - Anthropic redacted_thinking blocks round-trip on the Responses surface.
  • Streaming Accumulation (OSS) - Citation annotations and finish_reason are preserved in the accumulated streaming response.
  • Gemini Grounded Streaming (OSS) - Web-search flag is reset when recycling pooled stream state so web_search_call items keep emitting.
  • Vertex gs:// Images (OSS) - gs:// image URLs pass through on Vertex Gemini.
  • Bedrock Truncation Signal (OSS) - max_output_tokens truncation is signaled on the Responses API.
  • Bedrock Reasoning Config (OSS) - reasoning_config is preserved on cross-provider translation so fallbacks keep extended thinking.
  • Anthropic tool_search (OSS) - Server-side tool_search is forwarded and rebuilt on the Responses path.
  • OpenAI Responses Input (OSS) - role is stripped from non-message input items and compaction request input is serialized correctly.
  • additional_tools Support (OSS) - additional_tools message type support added, preserving nested tool types on /v1/responses.
  • Plugin Stream Errors (OSS) - Structured plugin stream errors are emitted on integration routes.
  • Pooled Object Hygiene (OSS) - Pooled ChannelMessage references are zeroed on release and orphaned deferred spans are swept in trace store TTL cleanup.
  • Hybrid Log Token Usage (OSS) - Token usage is rebuilt from denormalized columns in hybrid log list.
  • MCP Tool Ordering (OSS) - Deterministic MCP tool ordering for prompt cache stability.
  • MCP Inline-Auth Links (OSS) - Callers are warned not to truncate the #t= temp-token fragment.
  • Gemini Fixes (OSS) - Web search options map to Google Search grounding, file upload MIME types are preserved, and video reference fields map to instances.
  • OpenAI Parameters (OSS) - Service tier honored in chat completion and max reasoning effort capped.
  • Anthropic Costing (OSS) - Corrected inference geo cost and cache rate for fast mode.
  • SecretVar Parsing (OSS) - SecretVar JSON with ref/env_var fields parses even when value is absent.
  • Telemetry (OSS) - Request id and trace id forwarded, metrics cardinality explosion risk reduced, and status codes sent on OTEL metrics.
  • Dashboard (OSS) - Active time period preserved when applying dimension filters, bucket size thresholds adjusted for month-range durations, user popover with preferred_username fallback, and provider-level keys filtered from the prompt manager selector.
  • API Key Provider Selection (OSS) - Fixed provider selection for API keys.
  • Azure Auth Headers (OSS) - Azure auth headers are passed in helpers.
  • Stream Delta Schema (OSS) - ExtraContent added to ChatStreamResponseChoiceDelta.

🐙 Closed OSS Issues

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

📀 Base OSS version

transports/v1.6.4

🔌 If you are compiling plugin against this release - use following deps