Changelog
Release ontransports/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_idwith 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
adminEmailis 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_idin 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
sidekiqbackground-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.jsonwith 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
shouldSweepgate on the OAuth2 sweep worker. - Mirrored Schema Support -
schema_url/BIFROST_SCHEMA_URLfor 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.portstring support, andbifrost.mcp.toolGroups[*].id.
🐞 Fixed
- OIDC Token Endpoint - Explicit
tokenEndpointis 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-keyheader now attribute to the virtual key. - Rerank for Custom Providers (OSS) -
/v1/reranknow 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_modelsrows 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_resultids 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_jsonsegments 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_thinkingblocks round-trip on the Responses surface. - Streaming Accumulation (OSS) - Citation annotations and
finish_reasonare preserved in the accumulated streaming response. - Gemini Grounded Streaming (OSS) - Web-search flag is reset when recycling pooled stream state so
web_search_callitems keep emitting. - Vertex gs:// Images (OSS) -
gs://image URLs pass through on Vertex Gemini. - Bedrock Truncation Signal (OSS) -
max_output_tokenstruncation is signaled on the Responses API. - Bedrock Reasoning Config (OSS) -
reasoning_configis preserved on cross-provider translation so fallbacks keep extended thinking. - Anthropic tool_search (OSS) - Server-side
tool_searchis forwarded and rebuilt on the Responses path. - OpenAI Responses Input (OSS) -
roleis stripped from non-message input items and compaction requestinputis serialized correctly. - additional_tools Support (OSS) -
additional_toolsmessage 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) -
SecretVarJSON withref/env_varfields parses even whenvalueis 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_usernamefallback, 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) -
ExtraContentadded toChatStreamResponseChoiceDelta.
🐙 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
