github maximhq/bifrost ent-v2.5.0-base
Enterprise v2.5.0 base

one hour ago

What's Changed

  • feat(ui): add full Dashboard multi-language i18n by @occcat in #6766
  • feat(ui): type i18n keys against the English catalogs by @impoiler in #7630
  • refactor(ui): extract sidebar navigation into shared nav items by @impoiler in #9325
  • docs(mcp/oauth2): document token exchange stored sign-in default and host restrictions by @Pratham-Mishra04 in #9340
  • docs(relays): rewrite relay docs and document relay access for virtual keys, profiles, and projects by @BearTS in #9323
  • docs: add MCP protocol update docs by @roroghost17 in #9338
  • fix(config): skip URL accessibility check for framework URLs unchanged from stored config by @Pratham-Mishra04 in #9078
  • feat(mcp): accept duration strings for tool_sync_interval alongside bare minutes by @Pratham-Mishra04 in #9079
  • feat(tests/mcpconsole): add chaosmock MCP server fleet with compatibility tests by @Pratham-Mishra04 in #9080
  • feat(tests/chaosmock): add fault injection, per-identity auth, listening streams, and connection tracking to the MCP mock by @Pratham-Mishra04 in #9081
  • feat(tests/mcpconsole): add control API and mcpchaos command for chaos mock MCP server fleet by @Pratham-Mishra04 in #9082
  • feat(mcpconsole/chaosmock): add legacy HTTP+SSE transport to the chaos mock server by @Pratham-Mishra04 in #9083
  • feat(mcpconsole/chaosmock): add STDIO transport via a thin bridge to the fleet by @Pratham-Mishra04 in #9084
  • test(mcp): add Newman MCP harness e2e suite and make target by @Pratham-Mishra04 in #9085
  • test: add sixteen MCP harness tests for auth gates, the OAuth server and the library by @Pratham-Mishra04 in #9086
  • test(mcp): run MCP harness against an mcpchaos fleet and add ADM and EP test cases by @Pratham-Mishra04 in #9087
  • test(mcp): add e2e API harness cases for client create validation, duplicates, delete, and token_exchange by @Pratham-Mishra04 in #9088
  • test: add twelve MCP harness tests for the endpoint handshake, VK grants and include headers by @Pratham-Mishra04 in #9089
  • test: add fourteen MCP harness tests for OAuth consent, tokens and sessions by @Pratham-Mishra04 in #9090
  • test(mcp): verify unauthenticated admin routes leave a real client unchanged in e2e harness by @Pratham-Mishra04 in #9091
  • test(mcp): use a mock library catalog in the e2e harness and check filterdata lacks stdio before publish by @Pratham-Mishra04 in #9092
  • test: add thirteen MCP harness tests for client admin validation, unauthenticated callers, vk_configs and OpenAPI clients by @Pratham-Mishra04 in #9093
  • test: add seventeen MCP harness tests for upstream auth and connection types by @Pratham-Mishra04 in #9094
  • test: add fourteen MCP harness tests for endpoint slugs, credentials and auth modes by @Pratham-Mishra04 in #9095
  • test: add eight MCP harness tests for the redirect allowlist and per-client tool settings by @Pratham-Mishra04 in #9096
  • test(mcp): add e2e Postman cases for tool execute, code mode, and injected tools validation by @Pratham-Mishra04 in #9097
  • test(mcp): add governance e2e tests for virtual MCPs and virtual keys by @Pratham-Mishra04 in #9098
  • test(mcp): add e2e harness cases for library duplicates, installed flag, URL validation, and failure handling by @Pratham-Mishra04 in #9099
  • test: add twenty-one MCP harness tests for MCP log rows, content logging, filters and metrics by @Pratham-Mishra04 in #9100
  • test(mcp): add e2e API tests for client read encodings and PUT patch semantics by @Pratham-Mishra04 in #9101
  • feat(mcpconsole/chaosmock): add server instructions, tool annotations, scripted replies, method-scoped faults and per-tool faults by @Pratham-Mishra04 in #9102
  • feat(mcpconsole/chaosmock): add OAuth 2.1 protected resource and authorization server to mock servers by @Pratham-Mishra04 in #9103
  • feat(chaosmock): add REST routes surface and seed-based server reset by @Pratham-Mishra04 in #9104
  • test: add sixteen MCP harness tests for upstream instructions, tool annotations and injected failures by @Pratham-Mishra04 in #9105
  • test: add twenty-four MCP harness tests for shared OAuth discovery, consent, refresh and reauthorization by @Pratham-Mishra04 in #9106
  • test: add eighteen MCP harness tests for per-user OAuth flows, sessions and temp-token scope by @Pratham-Mishra04 in #9107
  • test: add four MCP harness tests for OpenAPI preview, request mapping, responses and credentials by @Pratham-Mishra04 in #9108
  • test: boot the MCP harness library from a catalog the mock serves over HTTP and add fourteen library tests by @Pratham-Mishra04 in #9109
  • feat(chaosmock): add scriptable LLM provider surface for OpenAI, Anthropic and Gemini formats by @Pratham-Mishra04 in #9110
  • test: boot the MCP harness providers on the mock LLM and add twenty-two tests for MCP tools in model requests by @Pratham-Mishra04 in #9111
  • test: add seventeen MCP harness tests for agent mode on the mock LLM by @Pratham-Mishra04 in #9112
  • test(mcp): add e2e harness scenarios for provider-injected tools (INF-60 to INF-65) by @Pratham-Mishra04 in #9113
  • test: add fourteen MCP harness tests for virtual key grants, per-user auth and tool failures on the mock LLM by @Pratham-Mishra04 in #9114
  • test: add nineteen MCP harness tests for client admin refusals, header credentials and sessions, with config.json clients that boot pending verification by @Pratham-Mishra04 in #9117
  • test: add eight MCP harness tests for upstream auth and connection behaviour, and report known-issue checks as skipped by @Pratham-Mishra04 in #9118
  • test: add six MCP harness tests for the MCP endpoint's timeouts, results, slugs and auth modes by @Pratham-Mishra04 in #9119
  • test: add eight MCP harness tests for the setup lock, Host spoofing and per-client settings by @Pratham-Mishra04 in #9120
  • test: add fourteen MCP harness tests for governance budgets, rate limits, pricing and log aggregates by @Pratham-Mishra04 in #9121
  • test(mcp): add e2e harness cases for setup-lock, token rotation, per-user OAuth, and execute validation by @Pratham-Mishra04 in #9122
  • test: add sixteen MCP harness tests that drive core as a Go SDK by @Pratham-Mishra04 in #9123
  • test: add MCP harness tests for tool sync after a pending client is verified, OpenAPI per-user spec credentials and the per-user OAuth create message by @Pratham-Mishra04 in #9125
  • test: retire the manual MCP auth suite and cover its remaining checks in the MCP harness by @Pratham-Mishra04 in #9126
  • feat: accept SOCKS5 global proxies and turn on the Inference and API toggles by @akshaydeo in #7578
  • test: run the MCP harness's /mcp auth tests in each auth mode that accepts them and cover per-user identity rules by @Pratham-Mishra04 in #9357
  • fix(mcp): keep a per_user_headers client's sample values as its admin credential on create by @Pratham-Mishra04 in #9358
  • fix(mcp): say the per_user_oauth create login is kept as the admin credential by @Pratham-Mishra04 in #9359
  • fix(mcp): answer /mcp refusals with WWW-Authenticate on every 401 and the governance error type by @Pratham-Mishra04 in #9360
  • fix(mcp): refuse a stored OpenAPI credential for a header per_user_headers callers supply by @Pratham-Mishra04 in #9361
  • fix(mcp): start the tool sync checker when a pending client is verified by @Pratham-Mishra04 in #9362
  • fix(mcp): call upstream tools by their exact name and drop the tool name mapping by @Pratham-Mishra04 in #9363
  • fix(mcp): log every code mode call made inside agent mode by @Pratham-Mishra04 in #9364
  • fix(mcp): keep a tool's error flag on /mcp and in the Responses format by @Pratham-Mishra04 in #9365
  • fix(governance): evaluate code mode meta tools like any tool call by @Pratham-Mishra04 in #9366
  • fix(governance): answer VK and virtual MCP caller errors with 400 and 409, not 500 by @Pratham-Mishra04 in #9367
  • fix(mcp): reload the virtual keys that granted a deleted MCP client by @Pratham-Mishra04 in #9368
  • fix(mcp): check vk_configs before an MCP client update applies anything by @Pratham-Mishra04 in #9369
  • fix(mcp): refuse OAuth consent and refresh for an expired virtual key by @Pratham-Mishra04 in #9370
  • fix(mcp): refuse to refresh a grant bound to the /mcp address before an issuer change by @Pratham-Mishra04 in #9371
  • fix(mcp): revoke a replayed authorization code's grant and refuse refresh to clients without the refresh_token grant by @Pratham-Mishra04 in #9372
  • fix(mcp): ignore a trailing slash in issuer_url so no OAuth URL carries // by @Pratham-Mishra04 in #9373
  • fix(mcp): answer 400, 404 and 409 instead of 500 for MCP client create, rename and reconnect mistakes by @Pratham-Mishra04 in #9374
  • fix(mcp): check OAuth client names and slugs at create, keep endpoint_slug, and answer 400/404 for blocked discovery and unknown OAuth configs by @Pratham-Mishra04 in #9375
  • feat: add base_path config for serving under a URL prefix by @akshaydeo in #8919
  • feat: strip the configured base path before routing by @akshaydeo in #8920
  • feat: serve the UI shell under the configured base path by @akshaydeo in #8921
  • feat: resolve UI routes, API calls and assets under the base path by @akshaydeo in #8922
  • feat: carry the base path in server-generated URLs and redirects by @akshaydeo in #8923
  • docs: document serving under a path prefix; add Helm basePath by @akshaydeo in #8924
  • test(e2e): run the dashboard and HTTP routes under a base path by @akshaydeo in #9056
  • fix(e2e): navigate collapsed sidebar groups in SidebarPage by @akshaydeo in #9057
  • feat: export base-path hooks for builds with their own bootstrap by @akshaydeo in #9433
  • feat: trust the global proxy's CA and always verify targets through a proxy by @akshaydeo in #7602
  • bring language toggle in client settings by @akshaydeo in #9437
  • docs updates by @akshaydeo in #9440
  • fix(ui): copyable gateway, virtual MCP and scrape URLs carry server.base_path by @akshaydeo in #9441
  • fix(http): OAuth bootstrap URLs, webhook result_url and discovery carry server.base_path by @akshaydeo in #9442
  • docs,infra: state the server.base_path prefix everywhere a self URL is shown by @akshaydeo in #9443
  • docs(openapi): state the 100-row clamp and default of 25 on paginated list endpoints by @impoiler in #9447
  • feat: anthropic WIF compatibility by @TejasGhatte in #8999
  • test: anthropic WIF tests by @TejasGhatte in #9431
  • test(mcp): update e2e harness for session IDs, list_changed streams, empty prompts/resources, and new error responses by @Pratham-Mishra04 in #9385
  • fix(mcp): refuse unknown auth types and per-user auth types on SSE and STDIO clients by @Pratham-Mishra04 in #9386
  • fix(mcp): allow revoking a pending OAuth flow from the sessions list by @Pratham-Mishra04 in #9387
  • fix(mcp): keep a failed enable unstable with its checker retrying, and let admin operations cancel checker reconnects by @Pratham-Mishra04 in #9388
  • fix(mcp): return max_instructions_length in the MCP client list by @Pratham-Mishra04 in #9389
  • fix(mcp): ignore tool_pricing at client create and drop a deleted client's prices from the catalog by @Pratham-Mishra04 in #9390
  • fix(mcp): keep tls_config on per_user_headers clients so servers behind a custom CA verify by @Pratham-Mishra04 in #9391
  • fix(mcp): mark a per-call client unstable when its first tool discovery fails by @Pratham-Mishra04 in #9392
  • fix(mcp): stop retrying permanent connect errors and refuse an invalid ca_cert_pem when a client is added or edited by @Pratham-Mishra04 in #9393
  • fix(mcp): don't treat a tool's own "forbidden" or 401 error as an upstream auth failure by @Pratham-Mishra04 in #9394
  • feat(ui): remember the log detail messages filter across reloads by @impoiler in #9448
  • fix(mcp): try and apply TLS and SSE header edits to the live client, and let ping edits reach the running checker by @Pratham-Mishra04 in #9395
  • fix(mcp): re-read instructions for sticky clients using the live connection's credential by @Pratham-Mishra04 in #9396
  • fix(mcp): check a client sooner on the unstable cadence after a failed reconnect or dropped SSE stream by @Pratham-Mishra04 in #9397
  • feat(mcp): dial boot MCP clients in the background so an unreachable client doesn't delay the HTTP listener by @Pratham-Mishra04 in #9398
  • fix(mcp): enforce the tool execution timeout for in-process MCP clients by @Pratham-Mishra04 in #9399
  • fix(mcp): apply a client's own tool_execution_timeout to code mode tool calls by @Pratham-Mishra04 in #9400
  • fix(mcp): refresh the credential and redial when an upstream rejects a per-call connection with 401 by @Pratham-Mishra04 in #9402
  • fix(mcp): let a custom library entry reuse the name of a deleted entry by @Pratham-Mishra04 in #9403
  • fix(mcp): skip invalid MCP library catalog entries and stop retrying permanent fetch errors by @Pratham-Mishra04 in #9405
  • fix(mcp): answer 400 instead of 500 when OAuth endpoint discovery fails by @Pratham-Mishra04 in #9406
  • fix(mcp): drop the misleading "after N retries" from connect and tool list errors by @Pratham-Mishra04 in #9407
  • fix(mcp): report the caller's shorter deadline, not the client's tool timeout, in tool call timeout errors by @Pratham-Mishra04 in #9408
  • chore: clarify session header naming by @danpiths in #9492
  • docs: add sagemaker provider and passthrough documentation by @sammaji in #9494
  • fix: preserve realtime and Live logging headers by @danpiths in #9493
  • test(mcp): count server/discover handshakes alongside initialize in SDK concurrency test by @Pratham-Mishra04 in #9463
  • test(mcp): add FAIL-01 and FAIL-12 e2e tests for per-call client creation when the upstream is down or tools/list fails by @Pratham-Mishra04 in #9464
  • test(mcp): cover upstream tool changes reaching /mcp gateway listeners by @Pratham-Mishra04 in #9465
  • feat(mcp): add prompts, resources and completion support to the chaosmock test server by @Pratham-Mishra04 in #9466
  • test(mcp): add e2e harness tests for upstream prompts, resources and completion on /mcp by @Pratham-Mishra04 in #9467
  • test(mcp): add e2e harness tests for /mcp on protocol 2026-07-28 by @Pratham-Mishra04 in #9468
  • test(mcp): add e2e harness tests for connection failures, state filtering, and disabling sticky clients by @Pratham-Mishra04 in #9469
  • test(mcp): cover connection checker outage and recovery against an unreliable upstream by @Pratham-Mishra04 in #9470
  • test(mcp): add e2e harness test for automatic STDIO respawn and tighten the CONN-22 child exit checks by @Pratham-Mishra04 in #9471
  • feat(mcp): add MCP protocol version negotiation and sessionless 2026-07-28 support to the chaosmock test server by @Pratham-Mishra04 in #9472
  • test(mcp): add e2e harness tests for max protocol version caps by @Pratham-Mishra04 in #9473
  • feat(mcp): support tool title, icons, and outputSchema in the chaosmock server by @Pratham-Mishra04 in #9474
  • test(mcp): add e2e harness cases for tool metadata and rich media tool results by @Pratham-Mishra04 in #9475
  • feat(mcp): support Client ID Metadata Documents in the chaosmock OAuth server by @Pratham-Mishra04 in #9476
  • test(mcp): add e2e harness tests for OAuth client metadata documents by @Pratham-Mishra04 in #9477
  • test(mcp): cover issued OAuth access token claims and concurrent consent submits by @Pratham-Mishra04 in #9478
  • feat(mcp): add chaosmock endpoints that drive a real mcp-go OAuth client against external MCP servers by @Pratham-Mishra04 in #9479
  • test(mcp): add OAS-39 e2e test driving a real SDK OAuth client through discovery, consent, and token refresh by @Pratham-Mishra04 in #9480
  • test(mcp): add e2e harness cases for sync intervals, timeouts, TLS and env-sourced headers by @Pratham-Mishra04 in #9481
  • test(mcp): add reply_error to chaosmock and load and upstream-capability harness tests by @Pratham-Mishra04 in #9482
  • test(mcp): cover file:// MCP library URLs and sync intervals in config and missing-file sync by @Pratham-Mishra04 in #9483
  • test(mcp): add GOV-36 cross-surface parity matrix to the MCP e2e harness by @Pratham-Mishra04 in #9484
  • test(mcp): add plain-client and raw stream probes to chaosmock and move discover serverInfo into _meta by @Pratham-Mishra04 in #9485
  • test(mcp): add e2e harness tests driving a real mcp-go SDK client and raw GET streams against /mcp by @Pratham-Mishra04 in #9486
  • test(mcp): add e2e and unit tests for concurrent requests, expired flows, and OSS refusals by @Pratham-Mishra04 in #9487
  • refactor(mcp): move discovered tools and instructions into a pluggable discovery store by @Pratham-Mishra04 in #9040
  • feat(mcp): add per-user discovery storage and config flag, rejected until lifecycle lands by @Pratham-Mishra04 in #9041
  • feat(mcp): add database-backed shared and per-user discovery stores by @Pratham-Mishra04 in #9042
  • feat(mcp): add per-caller connect tool for clients with per-user discovery by @Pratham-Mishra04 in #9043
  • feat(mcp): store per-user tool discovery at sign-in and warn in the UI when tools fail to load by @Pratham-Mishra04 in #9044
  • fix(mcp): delete per-user discoveries along with the credentials they were made with by @Pratham-Mishra04 in #9045
  • refactor(mcp): record pending admin verification explicitly with a stored pending_verification flag by @Pratham-Mishra04 in #9046
  • feat(mcp): enable per_user_discovery and handle turning it on or off by @Pratham-Mishra04 in #9047
  • feat(mcp): list tool names and caller counts for per-user discovery clients in the registry by @Pratham-Mishra04 in #9048
  • feat(ui/mcp): add per-caller tool discovery option for per-user auth MCP clients by @Pratham-Mishra04 in #9049
  • docs(mcp): document per_user_discovery in the OpenAPI spec and config schema by @Pratham-Mishra04 in #9050
  • feat(mcp): serve per-user discovery clients' tools, prompts and resources per caller on the MCP gateway by @Pratham-Mishra04 in #9341
  • fix(logging): skip MCP log entries for sign-in prompts by @Pratham-Mishra04 in #9051
  • perf(mcp): read each client's discovery once per request for its tools, connect tools and instructions by @Pratham-Mishra04 in #9134
  • perf(mcp): share one cached per-user discovery copy across callers with identical discovery by @Pratham-Mishra04 in #9309
  • feat(ui): split the MCP server sheet into a read-only view and a settings editor by @Pratham-Mishra04 in #9311
  • feat(mcp): show per-caller discovery counts in the sessions table by @Pratham-Mishra04 in #9312
  • feat(ui/mcp): add registry for extra access grants in MCP server view sheet by @Pratham-Mishra04 in #9313
  • feat(mcp): add per-user discovery test fixture MCP server example by @Pratham-Mishra04 in #9310
  • fix: skip the per-user auth retry when its client was replaced during the call by @Pratham-Mishra04 in #9128
  • fix: keep a revoke from being undone by a per-user sign-in that finishes during it by @Pratham-Mishra04 in #9129
  • feat: let a deployment gate the per-user OAuth and headers sweeps by @Pratham-Mishra04 in #9130
  • fix: keep a config.json MCP client's stored id when its block declares another client's by @Pratham-Mishra04 in #9131
  • docs(openapi): document the credential block on listed MCP clients by @Pratham-Mishra04 in #9132
  • chore(ui): remove the unused MCP tool selector by @Pratham-Mishra04 in #9133
  • feat(mcp): add a Refresh tools action to re-discover a caller's tools from the sessions page by @Pratham-Mishra04 in #9412
  • fix(transports): return a JSON 404 for unmatched /api paths instead of the dashboard shell by @pcbeingused333 in #9260
  • feat(mcp): add prompts, resources, per-identity faults and gates to chaosmock by @Pratham-Mishra04 in #9413
  • feat(logstore): add client_ip column to log tables by @impoiler in #9409
  • test(mcp): add e2e harness tests for per-user discovery by @Pratham-Mishra04 in #9414
  • test(mcp): refuse browser requests carrying an Origin header on chaosmock control surfaces by @Pratham-Mishra04 in #9511
  • test(mcp): bind e2e harness Bifrost server to 127.0.0.1 by @Pratham-Mishra04 in #9512
  • feat(complexity router): add confidence thresholds to decision model routers by @kohlivrinda in #9328
  • fix(mcp): refresh a per-call credential once when the upstream rejects it at the handshake by @Pratham-Mishra04 in #9415
  • refactor(mcp): export DialBootMCPClients and accept an injectable reconnect function by @Pratham-Mishra04 in #9513
  • docs(guardrails): add Noma Security AI-DR guardrail provider documentation by @Madhuvod in #9344
  • fix(mcp): accept CIMD clients whose document lists grants the server does not offer by @camferguson in #9517
  • fix: Clickhouse Individual Log Viewing at Scale by @17jmumford in #9342
  • [fix]: Anthropic provider - drop empty text blocks in Responses requests by @david-choi-querypie in #9319
  • feat(logging): record the caller's IP on LLM, MCP and relay logs by @impoiler in #9410
  • fix(routing): scope complexity session state per subagent by @Madhuvod in #9347
  • feat(ui): show client IP on log pages by @impoiler in #9411
  • feat(logstore): store user_email and export caller identity to object storage by @impoiler in #9426
  • feat(logging): record the user email on LLM, MCP and relay logs by @impoiler in #9427
  • feat(ui): show user email on log pages and in CSV exports by @impoiler in #9428
  • feat(logging): make client IP capture opt-in via logs_store.capture_client_ip by @impoiler in #9438
  • feat(logs): support multiple values per metadata filter key by @impoiler in #9514
  • feat(ui): allow selecting multiple values per metadata filter key by @impoiler in #9515
  • chore: pin mcp-go to fork release for Apps support by @roroghost17 in #9555
  • feat: pass gateway callers' declared capabilities to upstream MCP servers by @roroghost17 in #9500
  • feat: relay input_required from upstream servers to gateway callers by @roroghost17 in #9501
  • chore: update harness tests for MCP round-trip requests by @roroghost17 in #9502
  • feat: read MCP Apps tool metadata and keep app-only tools away from models by @roroghost17 in #9503
  • feat: serve MCP Apps tools and ui:// resources on the MCP gateway by @roroghost17 in #9504
  • feat: accept MCP tools by the names their own server gave them on the MCP gateway by @roroghost17 in #9505
  • chore: add an MCP Apps fixture server and harness tests for MCP Apps on the gateway by @roroghost17 in #9506
  • fix: let ChatGPT and other real MCP connectors sign in with CIMD, with their documents as test fixtures by @roroghost17 in #9549
  • chore: test real MCP clients signing in to Bifrost's OAuth server in the MCP harness, by DCR and CIMD by @roroghost17 in #9550
  • feat(passthrough): treat the Interactions agent as the model on /genai_passthrough by @impoiler in #9417
  • fix: show the fallback chain only for real fallback attempts by @impoiler in #9559
  • feat(passthrough): name the agent on Gemini Interactions poll records by @impoiler in #9418
  • feat(passthrough): bill each Gemini Interactions run once by @impoiler in #9419
  • fix(jobaccounting): count a Gemini Interactions run as one request by @impoiler in #9557
  • fix: named tool output for openai by @akshaydeo in #9571
  • chore: update helm charts to use client metadata document by @roroghost17 in #9339
  • [fix]: Anthropic provider - preserve requested web tool versions by @ykakade in #9258
  • feat: workload identity credential kind, config schema and UI shell by @BearTS in #9461
  • feat(relay): bring the relay log store to LLM parity by @BearTS in #9449
  • fix(relays): align relay logging with LLM log behavior, covering capture, status, and stale-row eviction by @BearTS in #9450
  • feat(relay-logs): match the Relay Logs API and UI to LLM Logs by @BearTS in #9451
  • feat(schemas): add raw response format and sync helper to keep streamed raw payloads consistent with plugin text edits by @Madhuvod in #9019
  • test(relay-e2e): relay and log-store permutation matrix by @BearTS in #9452
  • feat(schemas): declare raw response formats for Anthropic, Bedrock, Gemini, and Replicate streams and sync text edits into them by @Madhuvod in #9227
  • fix(relays): match passthrough for headers and streams in relays by @BearTS in #9453
  • fix(guardrails): attach raw stream events to their text delta and sync them across providers, replacing the stream text codec by @Madhuvod in #9282
  • feat(redaction): redact streamed raw response text split across frames by @Madhuvod in #9285
  • feat(passthrough): register raw request text rewriters so plugins can redact passthrough bodies by @Madhuvod in #9521
  • feat(passthrough): redact streamed passthrough text and dedupe chunks by index by @Madhuvod in #9548
  • fix(guardrails): redact escaped tool-call argument literals in raw Anthropic and Gemini request bodies by @Madhuvod in #9581
  • fix: web search query reply drops by @akshaydeo in #9590
  • test(mcpconsole): let the mock authorization server forget the clients it registered by @Pratham-Mishra04 in #9560
  • fix(mcp): send a per-user OAuth server back to pending verification when per-user discovery is turned off by @Pratham-Mishra04 in #9561
  • fix(ui): verify a per-user OAuth server after per-user discovery is turned off by @Pratham-Mishra04 in #9562
  • fix(mcp): reword pending per-user server alerts and offer a new-client reregister after a failed verify sign-in by @Pratham-Mishra04 in #9563
  • feat(mcp): collapse failure details, expand long descriptions, and hide TLS for plain HTTP in view sheet by @Pratham-Mishra04 in #9564
  • feat(mcp-registry): make client name a keyboard-accessible button and drop "View details" from the actions menu by @Pratham-Mishra04 in #9565
  • feat(mcp): toggle tool parameters between table and JSON views and inline the View more toggle by @Pratham-Mishra04 in #9566
  • test(mcp): add PUD-72 to PUD-81 e2e harness tests for per-caller tool isolation by @Pratham-Mishra04 in #9567
  • test(mcp): add per-user discovery isolation tests for shared virtual keys and parallel callers by @Pratham-Mishra04 in #9568
  • fix(core): find the key that owns a stored object on multi-key providers by @impoiler in #9556
  • feat(ui): redesign relay detail header and move OpenAPI import into a side sheet by @impoiler in #9569
  • style(ui): tighten command palette radius and header height by @impoiler in #9574
  • fix(ui): localize proxy URL scheme validation messages by @impoiler in #9575
  • fix(ui): show dashboard and mcp logs in config-file-only mode by @impoiler in #9576
  • refactor(mcp-harness): extract shared collection builder helpers into lib/mcp-harness.mjs by @Pratham-Mishra04 in #9605
  • fix(mcp): allow OAuth clients registered without the refresh_token grant to refresh tokens by @Pratham-Mishra04 in #9606
  • test(mcp): add AUTH-59 to AUTH-63 and ADM-88 e2e harness tests for OAuth reauthorization and header key changes by @Pratham-Mishra04 in #9607
  • refactor(mcp): move upstream OAuth e2e helpers into the shared harness library by @Pratham-Mishra04 in #9608
  • test(mcp): add PUD-82 to PUD-86 e2e harness tests for virtual-key grants and session ID handling by @Pratham-Mishra04 in #9615
  • fix(modelcatalog): match pricing model names case-insensitively by @impoiler in #9455
  • fix: poll runware task if sync turns to async output by @TejasGhatte in #9616
  • docs(guardrails): make Noma application_id optional and document virtual key reporting by @Madhuvod in #9618
  • docs(routing): simplify complexity router confidence threshold tooltip across locales by @Madhuvod in #9612
  • feat: workload identity Helm values and docs by @BearTS in #9462
  • feat(governance): make config.json routing rule id optional by @BearTS in #9603
  • chore(helm): sync chart with config.schema.json for 2.1.48 by @BearTS in #9604
  • fix(seed): lower default log batch size to fit Postgres bind limit by @impoiler in #9621
  • feat(mcp): collapse code mode binding level and limits into an accordion in MCP settings by @Pratham-Mishra04 in #9622
  • fix(logstore): keep draining retention past a short batch by @impoiler in #9552
  • test(mcp): add INF-78 to INF-80, AUTH-64, PUD-87 to PUD-90 and GO-37 e2e harness tests by @Pratham-Mishra04 in #9623
  • fix(logstore): let one replica drain each retention table on Postgres by @impoiler in #9553
  • feat(logstore): run Postgres retention cleanup hourly and dedupe ClickHouse deletes per cutoff by @impoiler in #9554
  • feat: log MCP input_required rounds and link each call's rounds by round_trip_id by @roroghost17 in #9586
  • feat: record MCP Apps use in MCP logs by @roroghost17 in #9587
  • feat(ui): show input_required rounds and MCP Apps use in MCP logs by @roroghost17 in #9588
  • fix: preserve explicitly reported zero token usage by @Constantine3 in #8763
  • fix(anthropic): treat Claude Haiku 5.x like Sonnet 5.x for effort and sampling params by @macdod in #9491
  • feat(core): add derived container session counts to tool usage by @impoiler in #9595
  • feat(framework): bill container sessions started through server tools by @impoiler in #9596
  • feat(core): count auto containers for OpenAI and Azure Responses by @impoiler in #9597
  • feat(core): count billable Anthropic code execution containers by @impoiler in #9598
  • feat: bill OpenAI image generation tool tokens by @impoiler in #9599
  • fix(core): count containers started under stored OpenAI context by @impoiler in #9601
  • fix: routing rules for primary targets on 4xx by @akshaydeo in #9292
  • refactor(redaction): remove raw text transformers and keep only the literal rewriter for Anthropic passthrough by @Madhuvod in #9629
  • fix: empty text document data loss in anthropic calls by @akshaydeo in #9290
  • fix(anthropic): drop web_search and code_execution for Claude on Bedrock by @akshaydeo in #9593
  • fix(anthropic): run Codex's client tool search as the caller's own on Claude by @akshaydeo in #9594
  • fix: omit stopSequences for bedrock converse models that reject it by @sammaji in #9507
  • fix: resolve key aliases when looking up supported params for drop-params by @sammaji in #9510
  • feat: support openai prompt cache breakpoint ttl and 12h cache write pricing by @sammaji in #9544
  • test: add openai 12h prompt cache ttl pricing and e2e tests by @sammaji in #9545
  • fix: preserve assistant text alongside tool calls when converting chat to responses messages by @sammaji in #9546
  • fix: strip leaked DSML tag from DeepSeek V3.2 responses on bedrock by @sammaji in #9547
  • test: add bedrock e2e tests for omitting stop sequences on deepseek v3.2 by @sammaji in #9508
  • fix: map prompt cache breakpoints to cache control in requests by @TejasGhatte in #9636
  • fix: add ids to non-streamed gemini reasoning items and keep them on bedrock mantle replay by @sammaji in #9609
  • fix: emit anthropic thinking deltas for raw reasoning_text stream events by @sammaji in #9457
  • fix: preserve replayed reasoning content blocks for vLLM responses requests by @sammaji in #9458
  • fix: keep unsigned thinking blocks for vllm and sglang anthropic requests by @sammaji in #9459
  • fix: preserve codex assistant message content with encrypted_content in openai responses by @sammaji in #9611
  • fix: cache control block on message by @TejasGhatte in #9654
  • fix: adds headerless tool search support for github copilot by @sammaji in #9651
  • fix: strip anthropic-only safeguards param from databricks chat and responses requests by @sammaji in #9652
  • fix: keep message-level cache_control on chat completion messages by @Atharva-Kanherkar in #8713
  • test: add e2e cases for reasoning item ids and codex assistant message replay by @sammaji in #9610
  • fix: tool redaction fix for bedrock inline tools by @akshaydeo in #9658
  • fix: keep gemini minted ids to less than 64 characters by @sammaji in #9660
  • fix: run post-hooks for requests dropped before enqueue and exclude them from upstream metrics by @roroghost17 in #9681
  • fix: handle invalid tool arguments gracefully by @akshaydeo in #9683
  • fix(anthropic): bound web_search and code_execution by the host flag, not the catalog by @akshaydeo in #9682
  • fix(gemini): give non-streamed reasoning items a summary array by @akshaydeo in #9684
  • fix(bedrock): drop non-blob reasoning tokens before Converse by @akshaydeo in #9685
  • fix(openai): drop empty text documents on OpenAI-shaped egress by @akshaydeo in #9686
  • test(harness): read converted_request_type from the body in body mode by @akshaydeo in #9687
  • test(harness): scan DSML stream cases without extra_fields by @akshaydeo in #9688
  • fix(ui): add dark variant of Singulr AI logo and update the existing logo image by @Madhuvod in #9692
  • fix: dropping tool response fields by @akshaydeo in #9695
  • fix(azure): send On Your Data chat requests to the deployments route by @akshaydeo in #9701
  • fix(bedrock): return the bucket region's answer from S3 file operations by @akshaydeo in #9696
  • fix(governance): do not count a passthrough call the upstream refused as a request by @akshaydeo in #9697
  • test(harness): send the setup token on a script's /metrics scrape by @akshaydeo in #9698
  • fix(bedrock): keep messageStop and metadata in a converse stream's raw response by @akshaydeo in #9699
  • fix(schemas): keep a block's prompt_cache_breakpoint when chat is converted to Responses by @akshaydeo in #9700
  • test(harness): align stale case expectations with current gateway behavior by @akshaydeo in #9702
  • test(harness): fix the remaining stale case expectations by @akshaydeo in #9703
  • v2.5.0 by @akshaydeo in #9436
  • fix: test case fixes by @akshaydeo in #9705
  • test case fixes by @akshaydeo in #9706
  • test fixes round 3 by @akshaydeo in #9708
  • encrypted reasoning patch by @akshaydeo in #9713
  • test patches round 5 by @akshaydeo in #9715
  • docs: anthropic wif by @TejasGhatte in #9650

New Contributors

Full Changelog: ent-v2.4.0-base...ent-v2.5.0-base

Don't miss a new bifrost release

NewReleases is sending notifications on new releases.