Joshua Valluru
d93cc8defd
test(mcp): run public client regressions in the MCP shard
2026-09-20 08:39:51 -07:00
Joshua Valluru
4fda0092d3
fix(mcp): explain missing public client dependencies
2026-09-19 19:52:13 -07:00
Mateo Wang
b4447096e4
Merge pull request #42067 from BerriAI/litellm_genai_adapter_response_schema_tool_params
...
fix(google_genai): forward response schema and tool parameters through the generateContent adapter
2026-09-19 19:43:32 -07:00
kerry-berri
a8790db419
Merge pull request #42077 from BerriAI/litellm-providers/price-sync-openrouter
...
chore(prices): sync OpenRouter prices: 2 models
2026-09-19 19:42:00 -07:00
Mateo Wang
79e25d1e96
Merge pull request #42045 from BerriAI/litellm_lit_8201_notfound_retry_policy
...
fix(router): add NotFoundErrorRetries so a retry policy can pin 404 retries
2026-09-19 19:37:45 -07:00
berriai-litellm-provider-info-sync[bot]
344ce9328b
chore(prices): sync OpenRouter prices: 2 models
...
openrouter/~deepseek/deepseek-pro-latest: max_tokens, max_output_tokens, input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/deepseek/deepseek-v4-pro-0813: max_tokens, max_output_tokens, off_peak_pricing, input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
2026-09-20 02:30:52 +00:00
yuneng-jiang
09e14a485c
Merge pull request #42061 from BerriAI/litellm_fix_gcs_pub_sub_autorouter_golden
...
test(logging): add autorouter estimate keys to the GCS pub/sub spend-log golden
2026-09-19 19:22:41 -07:00
mateo-berri
5eb967d925
fix(google_genai): drop non-object tool parameters instead of forwarding them
2026-09-19 19:19:33 -07:00
Mateo Wang
5417abd586
Merge pull request #42011 from BerriAI/litellm_scrub_default_master_key
...
docs: stop advertising sk-1234 as the master key in shipped configs and examples
2026-09-19 19:05:31 -07:00
Mateo Wang
b6dd3d932c
Merge pull request #42019 from BerriAI/litellm_master_key_boot_enforcement
...
feat(proxy)!: refuse to start with an unset, empty, or publicly known master key
2026-09-19 19:04:02 -07:00
ryan-crabbe-berri
ecf17513fb
refactor(proxy): rename the local development override to dangerously_permit_weak_or_unset_master_key so the name says exactly what it permits
2026-09-19 18:53:14 -07:00
mateo-berri
47ebfa10a0
fix(google_genai): reuse the shared key filter for Gemini-only schema keys
2026-09-19 18:52:00 -07:00
mateo-berri
fba179f2c0
fix(google_genai): forward response schema and tool parameters through the generateContent adapter
2026-09-19 18:31:09 -07:00
joshua-berri
daecea3eb8
Merge pull request #42050 from BerriAI/litellm_mcp_scoped_regressions_4506_rework
...
test(mcp): restore scoped execution and credential isolation regressions
2026-09-20 01:29:44 +00:00
Mateo Wang
93e39d5042
Merge pull request #42062 from BerriAI/litellm_pr38499_batch_retrieve_model_group
...
fix(router): stamp model_group when retrieving a batch, so batch tokens are attributable (internal copy of #38499 )
2026-09-19 18:23:06 -07:00
Yassin Kortam
56b3422cc2
Merge pull request #42046 from BerriAI/litellm_cost_poll_404_no_cooldown
2026-09-19 18:20:27 -07:00
Yassin Kortam
755f5c535d
Merge pull request #41994 from BerriAI/litellm_redis_spend_requeue_safety
2026-09-19 18:19:57 -07:00
yuneng-jiang
fba00f5084
Merge pull request #42054 from BerriAI/litellm_/release-ui-build-95a688
...
chore: rebuild Admin UI bundle from main (build kXnLzJ6ylsRPmgSkCkCKM)
2026-09-19 18:19:33 -07:00
Joshua Valluru
fdc4ad54c5
docs(mcp): remove duplicate regression coverage inventory
2026-09-19 18:18:37 -07:00
kerry-berri
faa2a71fba
Merge pull request #42063 from BerriAI/litellm-providers/price-sync-openrouter
...
chore(prices): sync OpenRouter prices: 2 models
2026-09-19 18:13:28 -07:00
ryan-crabbe-berri
99f99cfb46
fix(proxy): stop the boot when the requested master key migration fails, unless allow_requests_on_db_unavailable tolerates the outage
2026-09-19 18:10:52 -07:00
berriai-litellm-provider-info-sync[bot]
b652aaad4a
chore(prices): sync OpenRouter prices: 2 models
...
openrouter/deepseek/deepseek-v4-flash: input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/z-ai/glm-5.3: input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
2026-09-20 01:00:52 +00:00
Yuneng Jiang
98a3f45d21
chore: update Next.js build artifacts (2026-09-20 00:59 UTC, node v24.19.0)
2026-09-19 17:59:07 -07:00
ryan-crabbe-berri
a6c51ba3de
fix(proxy): never treat plaintext that base64-decodes to nothing as a ciphertext during the master key migration
...
A string such as "*" or "..." has no base64 characters, so it decoded to no bytes and read as an empty plaintext under any key. The migration would have counted it and overwritten it with a ciphertext of the empty string. Also read from the writer database instead of a read replica, report a database error during the migration instead of crashing the boot, skip columns the connected schema lacks across every schema on the search path, cap the JSON walk depth for the recursion detector, and move the boot wiring into one tested function.
2026-09-19 17:53:17 -07:00
kerry-berri
d1773d96e9
Merge pull request #42058 from BerriAI/litellm-providers/price-sync-openrouter
...
chore(prices): sync OpenRouter prices: 5 models
2026-09-19 17:41:47 -07:00
mateo-berri
867a4df347
fix(proxy): claim a finished batch's per-model budget charge atomically
...
A finished batch reports its whole cost on every poll. The charge-once
marker is now taken with one atomic increment on the shared cache, so two
workers polling the same batch at once cannot both charge it, and the
marker's TTL is refreshed on every poll so a batch polled within every
budget window is never charged again after the marker's first expiry.
2026-09-19 17:41:19 -07:00
mateo
144cf9a9ba
test(logging): add autorouter estimate keys to the GCS pub/sub spend-log golden
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-20 00:38:42 +00:00
yucheng-berri
82ddab2405
Merge pull request #41840 from BerriAI/litellm_team_audit_lifecycle
...
fix(team): emit audit events for member_delete and role changes and carry the final roster on team create
2026-09-19 17:37:16 -07:00
ryan-crabbe-berri
38d776bd2b
feat(proxy): re-encrypt stored secrets at boot from LITELLM_MIGRATE_FROM_MASTER_KEY so an unsafe key can be replaced while the proxy refuses to start
...
Rotating through POST /key/regenerate needs a running proxy, which a refused boot does not have. The refusal now counts the stored values that decrypt under the unsafe key. When there are none it only asks for a new key. When there are some it also asks for LITELLM_MIGRATE_FROM_MASTER_KEY, and the next boot with a safe key re-encrypts them and logs that the variable can be deleted. Leaving the variable set afterwards is a no-op with one notice.
2026-09-19 17:32:58 -07:00
yuneng-jiang
1f28813c4d
Merge pull request #42053 from BerriAI/litellm_nova_sonic_v2_e2e_model
...
test(e2e): point the Nova Sonic realtime test at nova-2-sonic
2026-09-19 17:31:07 -07:00
berriai-litellm-provider-info-sync[bot]
260990629a
chore(prices): sync OpenRouter prices: 5 models
...
openrouter/deepseek/deepseek-v4-flash: input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/qwen/qwen3.5-35b-a3b: max_tokens, max_output_tokens, supports_prompt_caching, input_cost_per_token, output_cost_per_token
openrouter/qwen/qwen3.5-9b: max_tokens, max_output_tokens
openrouter/qwen/qwen3.8-27b: input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/z-ai/glm-5.2: input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
2026-09-20 00:30:47 +00:00
yucheng-berri
2ec5c2c7cd
Merge pull request #41740 from BerriAI/litellm_otel_v2_langfuse_llm_spans_only
...
feat(otel v2): opt-in llm_only span scope for Langfuse destinations and the operator Langfuse exporter
2026-09-19 17:24:50 -07:00
Yuneng Jiang
9f84382a24
test(e2e): cite the source and date for the pinned Nova Sonic model id
...
AGENTS.md allows a vendor-owned literal only when its source and date are cited
next to it. A live realtime test cannot avoid naming a model, so record how the
id was checked, and record that a retired id fails as a hang rather than an
error so the next reader does not start by suspecting litellm.
2026-09-19 17:20:00 -07:00
kerry-berri
75f4c11444
Merge pull request #42006 from BerriAI/litellm-providers/price-sync-openrouter
...
chore(prices): sync OpenRouter prices: 2 models
2026-09-19 17:11:50 -07:00
yucheng
de70cf842a
fix(team): run the role update and budget upsert in one transaction under the team lock
...
LiteLLM Rust / rust-lint (push) Has been cancelled
LiteLLM Rust / rust-test (push) Has been cancelled
LiteLLM Rust / rust-wheel (push) Has been cancelled
Terraform Provider / gofmt, vet, build, test (push) Has been cancelled
Terraform Provider / Provider endpoints vs proxy OpenAPI schema (push) Has been cancelled
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-20 00:04:32 +00:00
berriai-litellm-provider-info-sync[bot]
aa8bbdbae4
chore(prices): sync OpenRouter prices: 2 models
...
LiteLLM Rust / rust-lint (push) Has been cancelled
LiteLLM Rust / rust-test (push) Has been cancelled
LiteLLM Rust / rust-wheel (push) Has been cancelled
Terraform Provider / gofmt, vet, build, test (push) Has been cancelled
Terraform Provider / Provider endpoints vs proxy OpenAPI schema (push) Has been cancelled
openrouter/deepseek/deepseek-v4-flash: input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/z-ai/glm-5.2: input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
2026-09-20 00:00:50 +00:00
yucheng
b7db48c7c1
fix(team): 404 a role update whose target left the roster before the locked read
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 23:57:38 +00:00
Yuneng Jiang
ca18755b64
test(e2e): point the Nova Sonic realtime test at nova-2-sonic
...
AWS retired amazon.nova-sonic-v1:0. GetFoundationModel now answers
ResourceNotFoundException "This model version has reached the end of its life",
and opening a bidirectional stream against it fails with ValidationException
"The provided model identifier is invalid". amazon.nova-2-sonic-v1:0 is the
active replacement.
The test passed on builds 219 (2026-09-16) and 246 (2026-09-17) and has failed
every run since, three attempts per build, with no litellm change to the
realtime path in between. The symptom was a clean websocket close: Bedrock ends
the stream rather than erroring, the forwarder treats a None receive as a normal
stream end and closes the client socket, so the client sees ConnectionClosedOK
and the test fails waiting for response.done.
litellm already carries both models in the cost map, with
"deprecation_date": "2026-09-14" on the old one, and the promptStart
transformation already sends the audioOutputConfiguration that nova-2-sonic
requires; only the test constant was left behind.
Verified against live Bedrock with the promptStart shape the transformation
builds: amazon.nova-sonic-v1:0 raises "The provided model identifier is
invalid", amazon.nova-2-sonic-v1:0 opens a session and returns a usageEvent.
The mocked handler and provider-cache tests keep the old id: it is only a label
there, no call reaches AWS.
2026-09-19 16:55:00 -07:00
yucheng
f6e5ef0d26
refactor(otel v2): drop the docstring from conflicting_span_scope_error
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 23:48:52 +00:00
kerry-berri
1fcef68ab7
Merge pull request #42048 from BerriAI/litellm_fix_circleci_cost_and_bedrock_beta
...
Unit Tests: Proxy DB Operations / auth-checks (push) Blocked by required conditions
Unit Tests: Proxy DB Operations / budgets (push) Blocked by required conditions
Unit Tests: Proxy DB Operations / custom-logging (push) Blocked by required conditions
Unit Tests: Proxy DB Operations / db-and-spend (push) Blocked by required conditions
Unit Tests: Proxy DB Operations / endpoints-and-responses (push) Blocked by required conditions
Unit Tests: Proxy DB Operations / proxy-server-core (push) Blocked by required conditions
Unit Tests: Proxy DB Operations / guardrails-hooks (push) Blocked by required conditions
Unit Tests: Proxy DB Operations / jwt-and-keys (push) Blocked by required conditions
Unit Tests: Proxy DB Operations / key-generation (push) Blocked by required conditions
Unit Tests: Proxy DB Operations / logging-misc (push) Blocked by required conditions
Unit Tests: Proxy DB Operations / proxy-runtime (push) Blocked by required conditions
Unit Tests: Proxy DB Operations / proxy-utils (push) Blocked by required conditions
Unit Tests / caching-local (push) Waiting to run
Unit Tests / core-utils (push) Waiting to run
Unit Tests / enterprise-package (push) Waiting to run
Unit Tests / enterprise-routing (push) Waiting to run
Unit Tests / integrations (push) Waiting to run
Unit Tests / All Other Providers (push) Waiting to run
Unit Tests / Vertex AI (push) Waiting to run
Unit Tests / mcp-integration (push) Waiting to run
Unit Tests / misc (push) Waiting to run
Unit Tests / proxy-auth (push) Waiting to run
Unit Tests / proxy-endpoints (push) Waiting to run
Unit Tests / proxy-extras (push) Waiting to run
Unit Tests / proxy-infra (push) Waiting to run
Unit Tests / proxy-server (push) Waiting to run
Unit Tests / responses-caching-types (push) Waiting to run
GitHub Actions Security Analysis / zizmor (push) Waiting to run
Terraform Provider / gofmt, vet, build, test (push) Has been cancelled
Terraform Provider / Provider endpoints vs proxy OpenAPI schema (push) Has been cancelled
fix(test): unbreak the integration-cost and proxy_e2e_anthropic_messages CircleCI jobs on main
2026-09-19 16:45:31 -07:00
yassin
dc4cefe879
fix(router): limit cost poll cooldown exemption to provider 404s
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 23:44:03 +00:00
yuneng-jiang
3df159308d
Merge pull request #42042 from BerriAI/litellm_websearch_activation_status
...
feat(ui): report whether the serving proxy has applied web search interception
2026-09-19 16:42:05 -07:00
Joshua Valluru
479360ae87
test(mcp): restore scoped execution and credential isolation regressions
2026-09-19 16:41:31 -07:00
kerry
7966f50c34
fix(test): run the all-beta-headers bedrock cases on Claude Fable 5.1
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 23:33:29 +00:00
kerry
02736e20cc
fix(test): repin fireworks fallback cache-read case to the 50% default
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 23:33:29 +00:00
joshua-berri
f49fd22875
Merge pull request #42033 from BerriAI/litellm_mcp_redirect_regressions_7738
...
test(mcp): cover SDK redirect compatibility
2026-09-19 23:31:33 +00:00
yassin
d669dac012
fix(router): skip cooldown for background response cost poll 404s
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 23:25:53 +00:00
mateo-berri
a9ad3eaf95
fix(router): add NotFoundErrorRetries so a retry policy can pin 404 retries
...
RetryPolicy had no field for 404s, so any policy that set DefaultRetries made
the router retry every 404 across the pool, including OpenAI's 404 on a missing
response id, which arrives as a BadRequestError whose status_code is 404
NotFoundErrorRetries now governs every answer whose status code is 404 whatever
exception class the mapping picked, ahead of the class walk and DefaultRetries.
A 404 without it still falls back to BadRequestErrorRetries for the
BadRequestError shape and then to DefaultRetries, so existing policies keep
their behavior until the new field is set. The Admin UI retry settings tab
gains a NotFoundError (404) row above the catch-all row
Fixes #36896
2026-09-19 16:25:47 -07:00
mateo-berri
741b10cdc9
chore: merge main into fix/batch-retrieve-model-group
2026-09-19 16:25:39 -07:00
joshua-berri
841193aab2
Merge pull request #42040 from BerriAI/revert-41909-litellm_mcp_oauth_happy_path_e2e
...
Revert "test(e2e): cover MCP OAuth SSO and cold restart persistence"
2026-09-19 23:25:20 +00:00