Skip to content
Merged

v2.3.0 #8399

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
674 commits
Select commit Hold shift + click to select a range
449938a
fix(logstore): make ClickHouse max_query_size configurable and defaul…
impoiler Oct 7, 2026
d3924f0
feat(governance): add optional `disabled` field to virtual key MCP co…
impoiler Oct 7, 2026
580bcfb
feat: adds BackgroundJobs rbac permissions (#8132)
impoiler Oct 7, 2026
f682ca3
refactor: deprecate attribution context keys in favour of `ctx.Grant(…
Pratham-Mishra04 Oct 7, 2026
fcc0ebf
fix: fall back to sibling keys when a session-bound key is rejected o…
Pratham-Mishra04 Oct 7, 2026
d45ccbe
feat: add `x-bifrost-request-id` response header and stop forwarding …
Pratham-Mishra04 Oct 7, 2026
a38da2d
fix: reject negative or non-finite weights for keys, virtual key prov…
Pratham-Mishra04 Oct 7, 2026
ef18d7f
docs: trim redundant explanation from fallback comment in model catal…
Pratham-Mishra04 Oct 7, 2026
3f6f1f1
fix: return 409 conflict instead of 500 for duplicate routing rule pr…
Pratham-Mishra04 Oct 7, 2026
51c1b63
feat: add `isNew` parameter to `ReloadProvider` so reloads can distin…
Pratham-Mishra04 Oct 7, 2026
956bf27
fix: stop direct keys from fanning out to every provider on model lis…
Pratham-Mishra04 Oct 7, 2026
7fc48a1
fix: restore primary provider response headers when all fallbacks fai…
Pratham-Mishra04 Oct 7, 2026
6d6acce
fix: return provider's own error when a caller-supplied direct key is…
Pratham-Mishra04 Oct 7, 2026
1070c07
fix: keep session affinity from binding to fallbacks that served dire…
Pratham-Mishra04 Oct 7, 2026
65e940d
fix(governance): stop billing dedup from dropping a fallback's usage …
Pratham-Mishra04 Oct 7, 2026
43be333
fix: make the key blacklist tests fail when blacklists are ignored, a…
Pratham-Mishra04 Oct 7, 2026
ee7eb4d
fix(core): bind no session key when the caller's direct key serves (#…
Pratham-Mishra04 Oct 7, 2026
b4ace69
fix(core): name the fallback a plugin answered in a stream's routing …
Pratham-Mishra04 Oct 7, 2026
a404aa7
fix: harden A2A push configuration and tracing (#8125)
danpiths Oct 7, 2026
56ca05e
fix(governance): keep inline limits through the config.json prune and…
BearTS Oct 8, 2026
9cbe058
fix(governance): reconcile virtual key and provider config inline bud…
BearTS Oct 8, 2026
b7f444e
fix(network): honor DisablePathNormalizing in live fasthttp client (#…
Madhuvod Oct 8, 2026
53c8cd1
fix: switching an MCP token-exchange or agent OAuth secret to a refer…
BearTS Oct 8, 2026
77dcdaa
test(harness): fail the routing fallback key pinning rows when the ru…
Pratham-Mishra04 Oct 8, 2026
a9bee24
test(harness): session key affinity on a run-scoped custom provider (…
Pratham-Mishra04 Oct 8, 2026
4522876
feat: 100k tier pricing (#8144)
TejasGhatte Oct 8, 2026
2d115b3
test: key selection and retry coverage on run-scoped providers, with …
Pratham-Mishra04 Oct 8, 2026
d712379
test: fallback coverage across drop-in routes, embeddings, streaming …
Pratham-Mishra04 Oct 8, 2026
b46ebbe
test: routing rule scope precedence, lifecycle, chains, conditions an…
Pratham-Mishra04 Oct 8, 2026
1285264
test: governance routing coverage for virtual key access, load balanc…
Pratham-Mishra04 Oct 8, 2026
648e38a
test: model catalog resolver unit tests and catalog routing coverage …
Pratham-Mishra04 Oct 8, 2026
ea83bec
test: session affinity coverage for streaming, TTL expiry, caller key…
Pratham-Mishra04 Oct 8, 2026
65a745a
test: requested-provider check on every prefixed inference row, x-mod…
Pratham-Mishra04 Oct 8, 2026
898cf43
test(harness): send the setup token on in-script management calls, an…
Pratham-Mishra04 Oct 8, 2026
cd93e87
fix: try the provider holding the caller's pinned API key first when …
Pratham-Mishra04 Oct 8, 2026
dfa5706
docs: clarify circuit breaker fallback chaining and key pin precedenc…
Pratham-Mishra04 Oct 8, 2026
8988243
dependabot fixes (#8178)
akshaydeo Oct 8, 2026
2fda420
fix(tracing): honor ignore_provider_cost and request pricing scopes o…
impoiler Oct 8, 2026
deaa1ff
fix: move batch embeddings into single embeddings when params are sam…
sammaji Oct 9, 2026
e2542dd
fix: send image-only bedrock cohere embeddings as images[] with input…
sammaji Oct 9, 2026
6242200
fix: embedding params handling for openai, cohere, and semanticcache …
sammaji Oct 9, 2026
cc119c8
fix: nest documentOcr and audioTrackExtraction under embedContentConf…
sammaji Oct 9, 2026
4e2a613
feat(ui): move background jobs into a separate tab in the notificatio…
impoiler Oct 9, 2026
71d0886
[fix]: routing tree - resolve silent truncation beyond 100 rules (#8194)
Shashank2985 Oct 9, 2026
67481bc
feat: add opt-in private push callback delivery (#8204)
danpiths Oct 9, 2026
ee74424
test: add Agent Gateway lifecycle e2e to the release pipeline (#8206)
danpiths Oct 9, 2026
c22aeec
chore: updates provider harness (#8150)
sammaji Oct 9, 2026
48ae9aa
feat(warp):improved error codes (#8176)
kohlivrinda Oct 9, 2026
c15ee8c
fix(logstore: keep millisecond precision in clickhouse time-window fi…
kohlivrinda Oct 9, 2026
8a9c8fd
fix(warp): one similarity scale for semantic search, 0.5 default, mul…
kohlivrinda Oct 9, 2026
8aae588
fix(logstore): team, customer and bu filters match multi-value owners…
kohlivrinda Oct 9, 2026
faa15c0
fix(logstore): keep error_details in the database when object storage…
kohlivrinda Oct 9, 2026
a87e84d
fix(warp): reopened failed turns keep their error code (#8184)
kohlivrinda Oct 9, 2026
dcce02c
fix(logstore): keep millisecond precision in the ClickHouse keyset cu…
kohlivrinda Oct 9, 2026
5088041
fix: gpt live tests and direct key (#8133)
TejasGhatte Oct 9, 2026
8aaee37
fix(warp): say its own queries carry the asker's attribution, and nev…
kohlivrinda Oct 9, 2026
f90569f
tests: live test updates (#8202)
TejasGhatte Oct 9, 2026
6ea93d7
fix: live in openai custom provider UI (#8203)
TejasGhatte Oct 9, 2026
fa31768
fix: add batch ID attribute to logging settlement spans (#8213)
sammaji Oct 9, 2026
e43f074
fix: preserve reasoning.summary in chat-to-responses conversion (#8214)
sammaji Oct 9, 2026
9e79871
community: add FXMacroData to MCP library (#8005)
roberttidball Oct 9, 2026
ecacac0
fix: detach request-scoped work and plugin Init from *fasthttp.Reques…
roroghost17 Oct 9, 2026
7030c03
fix: export raw request and provider error body for failed requests (…
roroghost17 Oct 9, 2026
8e8a960
fix(cli): separate CLI browser auth identity (#7579)
R-droid101 Oct 9, 2026
1a63bb0
chore(helm): sync chart with config.schema.json for v2.1.44 (#8187)
BearTS Oct 9, 2026
e036927
feat(helm): support topologySpreadConstraints on the Bifrost pod (#8188)
BearTS Oct 9, 2026
64b7659
feat(helm): add extraContainers and guard native sidecars (#8189)
BearTS Oct 9, 2026
029eb6b
fix(deps): resolve open Dependabot alerts across CI tools, MCP exampl…
akshaydeo Oct 9, 2026
61cadcc
fix: correct connector export gaps surfaced by the e2e matrix (#8228)
roroghost17 Oct 9, 2026
63c3db9
[fix]: configstore - serve the new version on skill update when Lates…
ozenyunus35 Oct 9, 2026
3827f18
fix: preserve safeguard results in streaming responses (#8252)
danpiths Oct 9, 2026
649c3aa
[fix]: preserve cache_control, citations, prompt_cache_breakpoint and…
Shashank2985 Oct 9, 2026
f39e83a
[fix]: apply log retention changes without restarting the cleaner (#8…
Constantine3 Oct 9, 2026
25e4587
go mod patches (#8200)
akshaydeo Oct 9, 2026
b5379f3
fix(logstore): truncate ClickHouse input histories to last message in…
ege-arhan Oct 10, 2026
6c8e293
fix(modelcatalog): fall back to lowercase model name in pricing looku…
impoiler Oct 10, 2026
1a3b4fa
ui: Logs details sheet header stickiness and state preservation (#8240)
impoiler Oct 10, 2026
57ae432
fix(core): map output_text to text on multi-part assistant turns (#8208)
shreyanshj10 Oct 10, 2026
87e6d00
adds snyk to allowed domains in runner (#8265)
akshaydeo Oct 10, 2026
9c7046f
fix(core): keep the failed tool result marker on OpenAI Responses (#8…
shreyanshj10 Oct 10, 2026
8c66e10
feat(decisions)porting v1/decisions to normalised openai shape (#8181)
Madhuvod Oct 10, 2026
f1252ed
fix(openai): send custom tools as function tools when the datasheet m…
impoiler Oct 10, 2026
9b33089
feat: add injected_tools provider config field (#8021)
akshaydeo Oct 10, 2026
9b35802
feat: accept injected_tools on the provider API and config schema (#8…
akshaydeo Oct 10, 2026
fa8fc95
feat: let provider-injected MCP tools past tool filters (#8023)
akshaydeo Oct 10, 2026
3c6456b
feat: rewrite requests to carry provider-injected tools (#8024)
akshaydeo Oct 10, 2026
dac6841
refactor: split chat and responses dispatch out of the provider handl…
akshaydeo Oct 10, 2026
9596629
feat: execute provider-injected tools server side for non-streaming r…
akshaydeo Oct 10, 2026
9701676
feat: execute provider-injected tools in streaming chat (#8027)
akshaydeo Oct 10, 2026
956543a
feat(decisions): add OpenAI native /v1/decisions support for gpt-6-lu…
Madhuvod Oct 10, 2026
721f2c5
feat: execute provider-injected tools in streaming responses (#8028)
akshaydeo Oct 10, 2026
bd49b9b
feat: serve injected tools on the Anthropic passthrough path (#8029)
akshaydeo Oct 10, 2026
7c112b1
feat(ui): add a web search tab to provider configuration (#8030)
akshaydeo Oct 10, 2026
870fa4d
feat(decisions): add OpenAI-format /openai/v1/decisions route (#8192)
Madhuvod Oct 10, 2026
e276da1
feat(complexity): support OpenAI decision models like gpt-6-luna in t…
Madhuvod Oct 10, 2026
f04f09a
feat(pricing): add decision-specific rates for chat-row models and sk…
Madhuvod Oct 10, 2026
b165f49
[fix]: Routing Tree CEL parser quote and escape handling in celParser…
Shashank2985 Oct 10, 2026
5f4430a
chore: refactor e2e ui test suite (#7981)
sammaji Oct 10, 2026
85b520b
feat(framework/queue): add queue interfaces, options, store SPI and r…
akshaydeo Oct 10, 2026
3c9f964
feat(framework/queue): add generic store engine and in-memory store (…
akshaydeo Oct 10, 2026
ab9a159
feat(framework/queue): add SQL store and the logstore queue type for …
akshaydeo Oct 10, 2026
5d383a3
feat(framework/queue): add the Postgres dialect for the logstore queu…
akshaydeo Oct 10, 2026
ba7e384
feat(framework/queue): add the ClickHouse store for the logstore queu…
akshaydeo Oct 10, 2026
01c52bd
feat(framework/queue): wake consumers across instances with Postgres …
akshaydeo Oct 10, 2026
62d3ff5
test(framework/queue): add speed and space benchmarks for every backe…
akshaydeo Oct 10, 2026
975901b
logstore gating for smoother logstore migrations (#8264)
akshaydeo Oct 10, 2026
38b0103
review fixes (#8285)
akshaydeo Oct 10, 2026
909f430
[fix]: core/providers/utils - reject truncated Content-Length streams…
Constantine3 Oct 10, 2026
4521d4c
fixes mid conversation tool changes (#8278)
akshaydeo Oct 10, 2026
9ba76e0
fix: disable GenAI raw-body passthrough when falling back to non-Goog…
Pratham-Mishra04 Oct 11, 2026
e60e23e
fix: record timeout and cancellation classes on the attempt trail for…
Pratham-Mishra04 Oct 11, 2026
f5a34a0
revert: stop moving the provider holding the caller's pinned API key …
Pratham-Mishra04 Oct 11, 2026
8a8e7af
docs: update adaptive load balancing endpoints to /api/adaptive-routi…
Pratham-Mishra04 Oct 11, 2026
514a70c
test(harness): an isolated serial pass, and setup-token auth plus a p…
Pratham-Mishra04 Oct 11, 2026
86431e6
test: in-process routing scenario coverage for key pins, session affi…
Pratham-Mishra04 Oct 11, 2026
adad5b4
test(harness): routing rows for rules, governance, catalog, sessions …
Pratham-Mishra04 Oct 11, 2026
8678c86
test(e2e): run routing and model-catalog wiring collections in CI aga…
Pratham-Mishra04 Oct 11, 2026
aba63d7
fix: convert GenAI requests for Claude and other non-Google Model Gar…
Pratham-Mishra04 Oct 11, 2026
eac83a2
test: pin provider-injected web search in the provider harness (#8031)
akshaydeo Oct 11, 2026
a9aedf5
fix: cr fixes for mcp web search (#8253)
TejasGhatte Oct 11, 2026
94d9802
feat(semanticcache): scope cache entries by identity, with a `disable…
Pratham-Mishra04 Oct 11, 2026
a12d34c
fix: semantic cache dimension mismatch checks on every vector store, …
Pratham-Mishra04 Oct 11, 2026
6430c61
fix(warp): treat Weaviate scores as raw cosine in semantic search lik…
Pratham-Mishra04 Oct 11, 2026
0c6672c
feat: emit x-bifrost-cache-* response headers for semantic cache look…
Pratham-Mishra04 Oct 11, 2026
a727d01
test(e2e): semantic cache wiring newman suite on Redis and Weaviate (…
Pratham-Mishra04 Oct 11, 2026
ae69eec
fix: governance key narrowing in live (#8293)
TejasGhatte Oct 11, 2026
30a923a
fix: failed delegation error (#8294)
TejasGhatte Oct 11, 2026
10773e7
fix: invalid request error in realtime (#8295)
TejasGhatte Oct 11, 2026
fdff6f7
fix: session close (#8296)
TejasGhatte Oct 11, 2026
5a38f92
fix: key admission in unit (#8297)
TejasGhatte Oct 11, 2026
d4b5014
fix: 15 seconds charge on webrtc initialization of live session (#8298)
TejasGhatte Oct 11, 2026
311eb30
fix: delegation error (#8299)
TejasGhatte Oct 11, 2026
ae412aa
fix: alias resolution in live (#8319)
TejasGhatte Oct 11, 2026
8ad3e0c
fix(openai): keep gpt-5.6+ in implicit prompt cache mode when transla…
akshaydeo Oct 11, 2026
35be3a4
fix(live): billing via webrtc channel (#8346)
TejasGhatte Oct 11, 2026
ff8c2f0
fix: skip config.json limits on virtual keys governed by an access pr…
BearTS Oct 11, 2026
c04fc0b
fix: safeguards results in delta (#8154)
TejasGhatte Oct 11, 2026
9184b6f
fix: extra fields on responses stream chunks (#8169)
TejasGhatte Oct 11, 2026
6167123
fix: mid stream retry logging (#7976)
TejasGhatte Oct 11, 2026
009605e
fix: tool format for kimi moonshotai (#8179)
TejasGhatte Oct 11, 2026
8478e86
fix: clamp max outputs and thinking tokens on fallbacks (#8242)
TejasGhatte Oct 11, 2026
f8028b0
fix: bill usage from cancelled requests in prometheous (#8244)
TejasGhatte Oct 11, 2026
aea0c9f
fix: gpt models implicit caching fix (#8322)
TejasGhatte Oct 11, 2026
dbf9447
fix: route MCP tool results through output guardrails before logging …
roroghost17 Oct 12, 2026
751604b
feat(compat): make decision-to-responses emulation opt-in via convert…
Madhuvod Oct 12, 2026
5c6fe5a
harness and docs changes for emulation -> responses in compact (#8289)
Madhuvod Oct 12, 2026
408bd92
feat(openrouter): route decisions by datasheet supports_decisions row…
Madhuvod Oct 12, 2026
e3c9a19
feat(complexity): list datasheet-marked decision models for OpenRoute…
Madhuvod Oct 12, 2026
8a45106
feat(providers): adds cloudflare as a new provider (#8342)
Madhuvod Oct 12, 2026
f796eaa
feat(decisions): add native Clef decision support to the Cloudflare p…
Madhuvod Oct 12, 2026
a8d9b5a
feat(openapi): add Cloudflare Workers AI provider and key config to d…
Madhuvod Oct 12, 2026
9c3f280
feat(providers): add migration dialog for custom Cloudflare providers…
Madhuvod Oct 12, 2026
9c53cc1
feat(decisions): add native Perplexity decider model support (#8354)
Madhuvod Oct 12, 2026
35b9868
feat(openrouter): send decision images as plain state items, list liv…
Madhuvod Oct 12, 2026
2358c19
fix: store config.json virtual key limits on model configs (#8306)
roroghost17 Oct 12, 2026
638833e
docs(audit-logs): document the new event type URI (#8269)
impoiler Oct 12, 2026
b24c2b5
docs(alerting): document sort parameters on the alert history endpoin…
impoiler Oct 12, 2026
e6bcb1e
docs(adaptive-routing): document the incident list on the issues endp…
impoiler Oct 12, 2026
9dfe9b9
docs(governance): document budget increase requests and override stra…
impoiler Oct 12, 2026
1a328b4
docs(governance): document disabled MCP clients on virtual keys (#8270)
impoiler Oct 12, 2026
6368601
docs(adaptive-routing): document the Incidents page (#8272)
impoiler Oct 12, 2026
66159dc
docs(logs): document the grouped view (#8273)
impoiler Oct 12, 2026
93df319
docs(logs): document background jobs in the notification panel (#8275)
impoiler Oct 12, 2026
daa738c
fix(ui): move warp dock bottom spacing from inner container to resiza…
impoiler Oct 12, 2026
9999477
adds allow localhost oauth servers for mcp (#8347)
akshaydeo Oct 12, 2026
8d6b108
feat(decisions): add native System One decision support to the Ollama…
Madhuvod Oct 12, 2026
e48e77d
fix: stabilize flaky e2e tests for logs and mcp settings (#8365)
sammaji Oct 12, 2026
f725936
adds upsert based writes to avoid losing logs (#8350)
akshaydeo Oct 12, 2026
9a5810c
feat(core): shared token cache for OAuth-minted provider credentials …
akshaydeo Oct 12, 2026
0ef1d9d
refactor(githubcopilot): mint through the shared token cache (#8255)
akshaydeo Oct 12, 2026
a14689b
feat(core): oauth_key_config mints bearers for OpenAI-compatible prov…
akshaydeo Oct 12, 2026
ac40d53
feat(transport): persist, validate and expose oauth_key_config (#8257)
akshaydeo Oct 12, 2026
72ab5ff
feat(ui): OAuth-minted keys for OpenAI-compatible providers (#8258)
akshaydeo Oct 12, 2026
8f15934
ui: a2a ui fixes (#8336)
impoiler Oct 12, 2026
cb677ee
docs: oauth_key_config for custom OpenAI-compatible providers (#8259)
akshaydeo Oct 12, 2026
3457ef8
feat: add session grouping and raw capture, refine log views (#8364)
danpiths Oct 12, 2026
1b1bed5
feat(injected-tools): inject any number of named MCP tools per provid…
akshaydeo Oct 12, 2026
786badb
feat(ui): replace the provider Web Search tab with a Tools table (#8367)
akshaydeo Oct 12, 2026
fa63929
test(injected-tools): pin named injected tools in the harness and E2E…
akshaydeo Oct 12, 2026
35e7809
docs(helm): add Cloudflare provider and expanded decision model provi…
Madhuvod Oct 12, 2026
fcefd08
feat: update server instructions forwarding when code mode is on (#8371)
roroghost17 Oct 12, 2026
27396e8
feat(ui): add motion and smooth streaming animations to Warp chat (#8…
impoiler Oct 12, 2026
5262f1c
docs: identity sync guide and align IdP setup docs (#8373)
BearTS Oct 12, 2026
5fceb27
docs: data access control docs and add teams, business units & custom…
BearTS Oct 12, 2026
55631ee
docs: access profile docs update for teams customers and bu (#8379)
BearTS Oct 12, 2026
2b5c201
fix: ws close in live (#8372)
TejasGhatte Oct 12, 2026
9ae9b02
fix: reasoning strip with item ids (#8374)
TejasGhatte Oct 12, 2026
464075b
fix: live provider key header (#8376)
TejasGhatte Oct 12, 2026
83bebcb
fix: sideband request logs (#8381)
TejasGhatte Oct 12, 2026
59caf82
fix(complexity-router): ignore model-listing failures for decision pr…
Madhuvod Oct 12, 2026
82f2754
fix: vertex passthrough version prefix (#8134)
TejasGhatte Oct 12, 2026
bde766c
fix(ui): hide sentinel values in selectors, add dark mode MCP badges,…
impoiler Oct 12, 2026
b10116a
fix(sessionaffinity): drop session key bindings to keys removed from …
Pratham-Mishra04 Oct 12, 2026
fa14ed1
test(gateway): fallback serves on an allowed key when a key pin falls…
Pratham-Mishra04 Oct 12, 2026
eb3b58e
fix(realtime): answer unmapped ephemeral tokens on Azure with a clien…
akshaydeo Oct 12, 2026
11da9c7
test(gateway): session drops its binding when a virtual key's key_ids…
Pratham-Mishra04 Oct 12, 2026
fb7cd10
fix(replicate): keep file list pagination on the configured file endp…
akshaydeo Oct 12, 2026
1f890c1
fix(governance): bind provider objects to the virtual key that create…
akshaydeo Oct 12, 2026
a535ff8
fix(governance): bind provider objects under every id form the provid…
akshaydeo Oct 12, 2026
e6ec82c
fix(live): bind a live session to the virtual key that opened it (#8331)
akshaydeo Oct 12, 2026
a1689b1
fix(http): apply the management API cross-origin rule without a confi…
akshaydeo Oct 12, 2026
cb33cd2
fix(configstore): match legacy plaintext lookups only against plainte…
akshaydeo Oct 12, 2026
cee6a25
fix(tracing): redact the virtual key header in captured request heade…
akshaydeo Oct 12, 2026
c1672e8
fix(governance): classify file batches by what the provider executes …
akshaydeo Oct 12, 2026
4df9b7f
fix(governance): check every model a passthrough body names (#8321)
akshaydeo Oct 12, 2026
5123d07
fix(providers): treat the Vertex credential JSON as a key dial target…
akshaydeo Oct 12, 2026
5164fda
fix(warp ui): max iterations ui (#8401)
kohlivrinda Oct 12, 2026
374c8e6
fix: export failure classification and end-to-end TTFT on traces (#8404)
roroghost17 Oct 12, 2026
925a3ff
fix(transports): bound request decompression by what the caller sent …
akshaydeo Oct 12, 2026
116466e
fix(replicate): keep file list pagination on the configured file endp…
akshaydeo Oct 12, 2026
02dbb51
fix(plugins): gate built-in plugin endpoints and secret references be…
akshaydeo Oct 12, 2026
cb74c3f
follow up harness fixes (#8407)
akshaydeo Oct 12, 2026
1e7d1ee
backmerge main to dev (#8409)
BearTS Oct 12, 2026
03356f9
fix: prefer realtime catalog rates for realtime requests (#8411)
danpiths Oct 12, 2026
15924ff
Merge branch 'main' into dev
akshaydeo Oct 12, 2026
b55b245
removed duplicates
akshaydeo Oct 12, 2026
339db4e
build fix for security view
akshaydeo Oct 12, 2026
760428c
fix: update fireworks test models, bump token budgets and disable ope…
sammaji Oct 12, 2026
1c27a64
feat: add agent name and correlation id filters to warp logs tools (#…
sammaji Oct 12, 2026
2237b2a
test: skip test case already expected to fail on -race and fix failin…
sammaji Oct 12, 2026
47eafca
tests: live tests in CI (#8415)
TejasGhatte Oct 12, 2026
dbe5e42
docs(decisions): document Cloudflare, Perplexity, Ollama and self-hos…
Madhuvod Oct 12, 2026
d58caa0
docs(guardrails): document regex allowed_values and profile execution…
Madhuvod Oct 12, 2026
973bf9b
docs(warp): add warp docs (#8416)
kohlivrinda Oct 12, 2026
c2c2b4e
fix: drop reasoning.summary for models that don't support it (#8408)
sammaji Oct 12, 2026
af365a9
fix: anthropic tool normalization on claude bedrock modelsz (#8417)
TejasGhatte Oct 12, 2026
955c4a0
tests: live tests on ci for workflows (#8420)
TejasGhatte Oct 12, 2026
9755f33
fix(transports): charge the decompression budget for bytes actually i…
akshaydeo Oct 12, 2026
aa88426
fix(logstore): keep Postgres log batches from failing on NUL bytes, i…
akshaydeo Oct 12, 2026
42b26e8
fix(providers): end large-response log previews on a UTF-8 boundary (…
akshaydeo Oct 12, 2026
f3fbe98
fix(logging): store binary log bodies as a size placeholder (#8430)
akshaydeo Oct 12, 2026
318f021
regression fixes for pgtextsafety (#8437)
akshaydeo Oct 12, 2026
2472830
adds toggle for virtul key level objct ownership (#8427)
akshaydeo Oct 12, 2026
54baaee
tests: harness tests fixes (#8413)
TejasGhatte Oct 12, 2026
935a5d6
fix: live sheet ui (#8414)
TejasGhatte Oct 12, 2026
f6e30e0
fix(integrations): type mid-stream errors as event: error on openai r…
akshaydeo Oct 12, 2026
09b7a31
fix(gemini): keep Responses-path parity for JSON mode with tools, nat…
akshaydeo Oct 12, 2026
da564b1
fix: cohere replay thinking order, decisions tool_choice gate, served…
akshaydeo Oct 12, 2026
18a44ed
test(harness): scope MCP auto-injection to a serial window and fix st…
akshaydeo Oct 12, 2026
d4e7d6a
fix: MCP agent loop keeps earlier turns, the turn-1 route and caller …
akshaydeo Oct 12, 2026
9255ff4
fix(deepseek): downgrade json_schema response_format to json_object (…
akshaydeo Oct 12, 2026
08556b2
model catalog burst fix in multinode env (#8438)
akshaydeo Oct 12, 2026
bfc3f22
fix(gemini): carry urlContextMetadata and forward native tool entries…
akshaydeo Oct 12, 2026
a5a69a9
fix(core): keep caller-fault errors from running catalog-inferred fal…
akshaydeo Oct 12, 2026
2864459
updates migration flow for indices (#8439)
akshaydeo Oct 12, 2026
8a730d1
fix(configstore): bind large provider-object id lists as one paramete…
akshaydeo Oct 12, 2026
e44aac8
fix(mcp): return 404 for deleting or updating an unknown MCP client (…
akshaydeo Oct 12, 2026
4f3e0fb
fix(core): read the message context before abandoning delivery (#8440)
akshaydeo Oct 12, 2026
a00d2cc
adds changelog for 2.0.0
akshaydeo Oct 12, 2026
c649d08
removed unnecesaary links
akshaydeo Oct 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .claude/skills/add-pricing-field/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ by tests.
| Field reference docs | `docs/providers/custom-pricing.mdx` | Row in the relevant section's table |
| Architecture excerpt | `docs/architecture/framework/model-catalog.mdx` | Optional — file says "excerpt", but keep the "Costs - Other"-style section current when touching an adjacent field |
| UI override type | `ui/lib/types/governance.ts`, `PricingOverridePatch` | `field_name?: number;` |
| UI override form | `ui/app/workspace/custom-pricing/overrides/pricingOverrideSheet.tsx`, `PRICING_FIELDS` | `{ key, label, group, requestTypeGroups }` entry |
| UI override form | `ui/app/workspace/custom-pricing/overrides/pricingFields.ts`, `PRICING_FIELDS` | `{ key, label, group, requestTypeGroups }` entry |
| Tests | `framework/modelcatalog/datasheet/cost_test.go`, `overrides_test.go` | One cost-calculation test, one `patchPricing` test |

---
Expand Down Expand Up @@ -166,7 +166,7 @@ in-scope for this change.

1. `ui/lib/types/governance.ts` — add `field_name?: number;` to `PricingOverridePatch`, in the
matching comment section.
2. `ui/app/workspace/custom-pricing/overrides/pricingOverrideSheet.tsx` — add an entry to
2. `ui/app/workspace/custom-pricing/overrides/pricingFields.ts` — add an entry to
`PRICING_FIELDS`: `key` (exact JSON field name), a short human `label`, `group` (which visual
section it renders under — usually matches an existing sibling field's group), and
`requestTypeGroups` (which of `chat/embedding/rerank/audio/image/video/ocr` it applies to, per
Expand Down Expand Up @@ -200,7 +200,7 @@ clean run with no matching text would falsely report failure). If you want to sc
just the touched files, capture it to a variable first and check `tsc`'s exit status separately:
```bash
tsc_out=$(./node_modules/.bin/tsc --noEmit -p tsconfig.json 2>&1); tsc_status=$?
echo "$tsc_out" | grep -i "pricingOverrideSheet\|governance.ts" || true
echo "$tsc_out" | grep -i "pricingFields\|governance.ts" || true
[ "$tsc_status" -eq 0 ]
```

Expand Down
12 changes: 10 additions & 2 deletions .claude/skills/harness-test-writer/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,11 @@ Conventions (match the existing collection exactly):
a streaming variant if the route streams, and where applicable a second route that
pins the same invariant independently (e.g. native `/v1/responses` alongside the
converted `/v1/chat/completions` path).
- **Non-200 expectations**: the collection-level test script asserts HTTP 200 on every
request unless the request NAME carries a status tag: `[EXPECT-4XX]` (any 4xx, for
"the field reached the provider and it rejected it" pins) or an exact `[EXPECT-<code>]`
such as `[EXPECT-422]`. Put the tag in the name of every case that expects a non-200
reply, or the run fails on the injected "Status code is 200" assertion.
- **Test scripts** (Postman `event[].script.exec`, plain ES5 JavaScript):
- Never skip any error status code. Do NOT open the script with an early-return
guard like `if ([401, 403, 429, 500, 502, 503, 504].indexOf(pm.response.code) !== -1) { return; }`
Expand Down Expand Up @@ -161,10 +166,13 @@ The augment script only regenerates its own "(generated)" folders, so a new top-
folder passes through untouched - but run it anyway to catch parse breakage.

Do NOT auto-run the live suite: it starts a gateway and makes paid provider calls.
Report the run command and offer to execute it:
Report the run command and offer to execute it. The keyword is descriptive text from the
case or folder names, never an issue number, and the gateway port is explicit because
worktrees run side by side (avoid 8080 and 8090, the harness viewer's port, unless free):

```bash
make run-provider-harness-test PROVIDER=<provider> FEATURE="<distinctive keyword from your case names>"
make dev PORT=<port> APP_DIR=$(pwd)/tests/integrations/python
make run-provider-harness-test PROVIDER=<provider> FEATURE="<distinctive keyword from your case names>" BASE_URL=http://localhost:<port>
```

## Step 7 - Report
Expand Down
6 changes: 4 additions & 2 deletions .claude/skills/investigate-issue/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -876,10 +876,12 @@ Once all approved changes are applied:
make dev PORT=<port> APP_DIR=$(pwd)/tests/integrations/python # in the background; wait for /health = 200
```
```bash
make run-provider-harness-test PROVIDER=<provider> FEATURE="<keyword>"
make run-provider-harness-test PROVIDER=<provider> FEATURE="<keyword>" BASE_URL=http://localhost:<port>
# cross-cutting change: the curated smoke set instead
make run-provider-harness-test SMOKE=1
make run-provider-harness-test SMOKE=1 BASE_URL=http://localhost:<port>
```
`<keyword>` is descriptive text that appears in the case or folder names (for example
`"sdk fidelity"`), never an issue or PR number; verify it with `filter-collection.mjs` first.
Report the provider status table and `tmp/harness-failures.md` findings, and state exactly
which scope ran. See AGENTS.md "Every wire-visible change ships with a provider-harness
case" and "Every non-exempt wire-visible fix ends with unit tests, then a harness command
Expand Down
83 changes: 83 additions & 0 deletions .claude/skills/security-audit/AI-AND-LLM.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# AI, LLM, and Agent Hunting

#### When to use this file

Reach for this file when a language model participates in a trust-sensitive decision: chatbots and assistants, RAG pipelines, persistent agent memory, agent/tool-calling loops, MCP servers and clients, code that builds prompts from untrusted input, or code that consumes model output and acts on it. The important data flow is *untrusted content → model or memory → capability, authority, or sink*.

Use this alongside `ATTACK-CLASSES.md`, not instead of it. Transport, access control, query construction, filesystem use, and output rendering remain ordinary trust boundaries. This file covers the model-specific delegation layer. Split large targets by retrieval, memory, tool dispatch, MCP, and output handling.

## Core discipline (include in every agent prompt for this domain)

```
- Prompt injection alone is not a finding. Require a code-level boundary failure: content reaches another principal's context, invokes authority the requester lacks, discloses data they cannot read, or drives a sink they cannot reach directly.
- Model output, memory, tool descriptions, and MCP responses are untrusted inputs. Point to the code that grants authority, trusts output, writes durable state, or feeds a sink.
- A guardrail prompt is not a security boundary. Count only deterministic checks, resource-scoped authorization, isolation, binding, and constrained credentials.
- State the attacker, affected principal, effective execution identity, resource, exact action, authority used, and observable impact. An intentional direct request to use the requester's existing authority is not a delegation defect merely because a model executes it.
- Authorization and action binding are separate controls. Attacker-controlled content that causes an action under an affected principal's valid authority is an action-binding failure when that principal did not intentionally request or approve the exact action.
- Classify every candidate as `confirmed` only after source evidence and bounded local validation establish the boundary and result. Use `needs_validation` when a required provider, deployment, model, renderer, or identity behavior is not observable locally.
```

## Context, retrieval, and memory attack classes (subagent_type: `general`)

**Indirect injection through retrieved or ingested content**
An attacker can write a RAG document, indexed page, file, email, issue body, tool response, or metadata that enters a different principal's model context. Trace who can write each source, how retrieval scopes it, whose session consumes it, and what capability is enabled there. Check isolation, resource authorization, and binding to the consuming principal's intent separately. The defect is a missing deterministic control, not persuasive text by itself.

**Cross-session or cross-tenant context bleed**
Conversation history, embeddings, retrieval results, or prompt caches are keyed too broadly. Verify tenant and ACL filters in the query itself and every cache key. A tenant field stored on an object is not enforcement if an alternate query, shared cache, or batch path omits it.

**Persistent memory poisoning**
Attacker-controlled content or model summaries are written into memory that later shapes another task, user, or privileged session. Review who may create, update, merge, and delete memory; its provenance and tenant scope; whether low-trust observations become durable instructions or facts; and whether retrieval distinguishes user preferences from tool policy. Memory intentionally saved by a user and used only for that user's intentional, allowed requests is not a cross-boundary finding.

**Prompt role and provenance confusion**
Prompt assembly lets untrusted text impersonate a system message, prior turn, tool result, policy, or memory record. Look for string concatenation, untyped history, caller-controlled role fields, and serialization round trips that lose source labels. Confirm that the forged provenance changes a deterministic trust decision or reaches a meaningful capability.

## Tool and action attack classes (subagent_type: `general`)

**Tool-argument injection into a downstream sink**
Model-produced arguments reach SQL, shell, file, URL-fetch, or privileged APIs without handler-side validation. Treat the tool schema as input parsing, then follow each field from decoded call to sink. Structured output narrows shape; it does not establish authorization, safe paths, safe URLs, or query semantics.

**Excessive agency and confused-deputy authority**
The agent uses a service identity or broad credential, while the tool handler does not re-check the requesting principal's permission on the named resource. Verify both the effective identity and whether the caller could perform that exact operation through the normal product interface. A shared credential with enforced per-user query scope is not a defect.

**Action-confirmation and approval binding**
A user approves one described action but execution can use changed arguments, a different resource, a different principal, or a later model turn. An action-binding defect also exists when attacker-controlled content causes a side effect under a victim's valid authority without the victim's intentional request or approval, even if generic authorization permits the victim to perform it. Review whether intent or confirmation binds the normalized tool name, complete argument object, requester, target, amount, expiry, and batch membership. Check retries and resumed sessions: an approval must not authorize a mutated or duplicate side effect.

**Tool-schema and dispatcher disagreement**
The schema accepts aliases, extra fields, duplicate keys, coercions, nested free-form objects, or out-of-range values that the dispatcher or handler interprets differently. Compare schema validation, canonicalization, generated bindings, and handler defaults. Validate again where values become resource selectors or security-relevant options.

**Unbounded delegated action loops**
A bounded request can enqueue repeated spend, send, mutation, or external API work without a per-request budget, per-action authorization, cancellation, or idempotency control. Confirm impact on shared cost, quotas, other users, or durable state. Do not test by exhausting a service; use code-level accounting and a locally bounded loop.

## MCP and sub-agent trust classes (subagent_type: `general`)

**Sub-agent and MCP trust inheritance**
A delegated task receives the full session, credentials, memory, or capabilities rather than the least authority required. Check the principal and tenant carried into each call, capability narrowing, credential audience, and whether delegated results are treated as untrusted on return.

**MCP server and tool identity confusion**
Calls or results are routed by attacker-influenceable server names, tool names, request IDs, resource URIs, or model-selected aliases rather than the authenticated connection and outstanding request. Check whether two servers can claim the same tool or resource identity, whether reconnect changes the binding, and whether a response from one server can satisfy another server's pending call.

**MCP metadata and schema as policy**
Tool descriptions, resource metadata, prompts, completion hints, or schemas supplied by an MCP peer are trusted as policy or authorization. These fields can guide the model but cannot grant capability. Find the deterministic allowlist, server identity check, and handler authorization that remain authoritative when metadata conflicts.

## Output and disclosure attack classes (subagent_type: `general`)

**Insecure output rendering**
Model output reaches an executing HTML, Markdown, template, URL, or command sink without the sink's required encoding and policy. For browser rendering, verify auto-loaded resources and CSP or sanitization in `CLIENT-SIDE.md`; renderer behavior outside the repository makes the candidate `needs_validation`.

**Sensitive context extraction**
The assembled context contains credentials, another user's data, private source, or policy values that themselves grant access, and user-influenced output exposes them. Read prompt assembly and data-fetch code. Disclosure of generic instructions or behavior that does not cross a data boundary is not a finding.

## Universal moves (apply across the above)

- Draw four maps first: each execution identity, each capability, every writable context or memory source, and each output destination. Then connect the principal at the start to the authority at the end.
- Start at side-effecting tools and work backward through dispatcher, schema, confirmation, model context, retrieval, and ingestion. Start at durable memory reads and trace every writer.
- Compare direct, queued, retry, resume, batch, and delegated paths for the same action. The strongest gate must apply after arguments are final and before every side effect.

## Validation rules (apply before reporting ANY finding here)

1. Name the crossed boundary and observable result: attacker, affected principal or shared resource, execution identity, target, and unauthorized or unrequested action or disclosure.
2. For confused-deputy authority claims, prove the tool lacks requester-and-resource authorization and that the attacker cannot perform the same action normally. For action-binding claims, instead prove attacker-controlled content caused an action under the affected principal's authority that the principal did not intentionally request or approve. Valid generic authorization does not establish that intent.
3. For memory or retrieval claims, cite both the attacker-controlled write and the later cross-principal read or privileged decision. A shared record without a reachable consumer is not enough.
4. For action binding, establish the intentional request or normalized approved object, if any, and compare it with the object the handler uses. Confirm a locally observable unrequested action, mutation, duplicate, or authority change without extending the test into harmful execution. For schema disagreement, compare the normalized validated object with the handler's object.
5. For MCP identity claims, verify the authenticated connection, request correlation, tool namespace, and effective credential. Mark `needs_validation` if external server identity or deployment routing is required.
6. Return `confirmed` findings only with a complete source trace and meaningful result. Return `needs_validation` for a specific unresolved boundary fact and state the bounded local or owner-observed check needed to resolve it.
Loading
Loading