Mateo Wang
3d26a29a1a
Merge pull request #42283 from BerriAI/litellm_mid_stream_fallback_walks_full_list
...
fix(router): walk every entry of a fallback list after a mid-stream failure
2026-09-21 15:14:04 -07:00
Yujong Lee
dd175245cf
Merge origin/main into litellm_valkey_semantic_native_cache
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:13:55 +00:00
Yujong Lee
2129a94e56
Merge remote-tracking branch 'origin/main' into litellm_native_redis_semantic_cache
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:13:38 +00:00
Mateo Wang
7ae61b62ed
Merge pull request #42323 from BerriAI/litellm_stream_usage_keep_explicit_zero
...
fix(streaming): keep an explicit provider prompt_tokens=0 or completion_tokens=0 in streamed usage
2026-09-21 15:13:21 -07:00
Yujong Lee
f7b96c9ced
Merge origin/main into litellm_native_disk_cache
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:13:09 +00:00
Yujong Lee
5ca7968812
Merge remote-tracking branch 'origin/main' into litellm_rust_cache_s3
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
# Conflicts:
# litellm-rust/crates/python-bridge/src/cache/config.rs
# litellm-rust/crates/python-bridge/src/cache/facade.rs
# litellm-rust/crates/python-bridge/src/cache/handle.rs
# litellm-rust/crates/python-bridge/src/cache/native.rs
2026-09-21 22:12:40 +00:00
ryan-crabbe-berri
f200d68309
Merge pull request #41560 from chopratejas/fix-responses-agentic-followup-duplicate-kwargs
...
fix(responses): stop agentic follow-up from passing request params twice
2026-09-21 15:12:18 -07:00
Mateo Wang
055b7314e0
Merge pull request #40121 from Atharva-Kanherkar/fix/mcp-responses-stream-single-lifecycle
...
fix(responses): stream one lifecycle across MCP auto-execute rounds
2026-09-21 15:11:57 -07:00
ryan-crabbe-berri
a8003102b2
fix(auth): let jwt team_allowed_routes paths grant auth=true passthrough
...
Explicit paths and trailing-wildcard prefixes in litellm_jwtauth.team_allowed_routes
passed the JWT route check but were then denied by the auth-enforced passthrough
gates, which only read allowed_passthrough_routes from key or team metadata. Both
gates now also accept an explicit team_allowed_routes entry for tokens built by JWT
auth. Named route groups still never grant, and virtual keys, including JWT-mapped
ones, stay key-scoped
2026-09-21 15:11:48 -07:00
Mateo Wang
e7bff277a6
Merge pull request #40251 from BerriAI/litellm_decrease_anys_opus5_r5
...
refactor(types): remove 1,173 Any errors across 169 backend files
2026-09-21 15:11:44 -07:00
Yujong Lee
905909741d
merge(main): integrate upstream Azure secret changes
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:10:22 +00:00
kerry-berri
0f47056d70
Merge pull request #42337 from BerriAI/litellm-providers/price-sync-openrouter
...
chore(prices): sync OpenRouter prices: 3 models
2026-09-21 15:10:09 -07:00
Yujong Lee
bda406c0af
Merge remote-tracking branch 'origin/main' into litellm_rust_qdrant_semantic_cache
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
# Conflicts:
# litellm-rust/crates/python-bridge/src/cache/config.rs
# litellm-rust/crates/python-bridge/src/cache/facade.rs
# litellm-rust/crates/python-bridge/src/cache/handle.rs
# litellm-rust/crates/python-bridge/src/cache/native.rs
2026-09-21 22:10:05 +00:00
kerry-berri
39fd437013
Merge pull request #42338 from BerriAI/litellm-providers/price-sync-aws-bedrock
...
chore(prices): sync AWS Bedrock prices: 6 models [enrichment failed: AWS Bedrock, 4 held]
2026-09-21 15:10:04 -07:00
Yujong Lee
cb3e212e29
chore: merge main into litellm_gcs_native_cache
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:08:55 +00:00
Yujong Lee
eeaf4f36e4
test(python-bridge): initialize the interpreter in the embedder seed test
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:07:15 +00:00
yujonglee
844d24b095
Merge pull request #42321 from BerriAI/litellm_native_azure_blob_cache
...
feat(rust): native Azure Blob response cache backend
2026-09-21 15:06:55 -07:00
Yujong Lee
1827be1302
fix(cache-disk): absolutize store directory and stamp async expiry at write time
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:06:55 +00:00
ryan
5da590a3c5
chore(ui): regenerate schema.d.ts for change_password docstring
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:05:44 +00:00
ryan-crabbe-berri
ddb236b7e2
Merge remote-tracking branch 'origin/main' into pr-41560
...
# Conflicts:
# tests/test_litellm/llms/custom_httpx/test_llm_http_handler.py
2026-09-21 15:04:57 -07:00
Yujong Lee
c233377d9c
fix(cache): await valkey semantic batch embeddings inline
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:04:46 +00:00
yujonglee
41adbdaa05
Merge pull request #42309 from BerriAI/litellm_rust_secrets_azure_key_vault
...
feat(rust): add Azure Key Vault secret manager backend
2026-09-21 15:04:10 -07:00
yuneng-jiang
29e9245024
Merge pull request #42294 from BerriAI/litellm_/litellm-db-migration-scope-98b60d
...
test(migrations): cover the release-to-release upgrade path
2026-09-21 15:03:55 -07:00
Yujong Lee
8c82505964
fix(python-bridge): await semantic embeddings inline in the caller's task
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:02:52 +00:00
ryan
28f70c75d1
fix(auth): reject unchanged password on /user/password/change
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:02:05 +00:00
berriai-litellm-provider-info-sync[bot]
b305928422
chore(prices): sync AWS Bedrock prices: 6 models [enrichment failed: AWS Bedrock, 4 held]
...
minimax.minimax-m2: max_tokens, supports_vision, max_input_tokens, max_output_tokens, supports_audio_input, supports_response_schema, supports_function_calling
minimax.minimax-m2.1: max_tokens, supports_vision, max_output_tokens, supports_audio_input, supports_response_schema
minimax.minimax-m2.5: max_tokens, supports_vision, max_input_tokens, max_output_tokens, supports_audio_input, supports_response_schema
moonshot.kimi-k2-thinking: max_tokens, supports_vision, max_input_tokens, max_output_tokens, supports_audio_input, supports_response_schema, supports_function_calling
openai.gpt-oss-safeguard-120b: max_tokens, supports_vision, max_output_tokens, supports_audio_input, supports_response_schema, supports_function_calling
openai.gpt-oss-safeguard-20b: max_tokens, supports_vision, max_output_tokens, supports_audio_input, supports_response_schema, supports_function_calling
2026-09-21 22:01:14 +00:00
berriai-litellm-provider-info-sync[bot]
0eea01427d
chore(prices): sync OpenRouter prices: 3 models
...
openrouter/~deepseek/deepseek-v4-flash-latest: output_cost_per_token
openrouter/deepseek/deepseek-v4-flash-0731: output_cost_per_token
openrouter/deepseek/deepseek-v4-pro: input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
2026-09-21 22:01:13 +00:00
Yujong Lee
847f732f5d
fix(cache): await valkey semantic embeddings inline on the caller loop
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:01:13 +00:00
Yuneng Jiang
5c68545104
test: fix stale budget-status and bad-database-url assertions
...
Two CI checks were asserting behaviour the proxy no longer has. Neither
was catching anything; both now fail for the right reason.
budget_exceeded (tests/otel_tests/test_e2e_budgeting.py)
bf804f5188 made 422 the default for budget refusals and added
budget_exceeded_status_code to restore 429 for callers that need it. The
e2e budget tests still asserted 429, so all six have been failing on a
status change that was deliberate. Assert 422, the documented default,
rather than reading litellm.budget_exceeded_status_code back — a test
that asks the code what it does would have passed straight through this
change and through the next one.
The helpers also caught bare Exception, so a connection error reached
`e.body` and surfaced as an AttributeError instead of a failed
assertion. Narrow both to openai.APIStatusError, which is what a refusal
actually raises (UnprocessableEntityError for 422, RateLimitError for
429), and let anything else propagate as itself.
test_bad_database_url (.circleci/config.yml)
The check required "Database setup failed after multiple retries", which
only the v1 resolver emits, OR uvicorn's "Application startup failed.
Exiting.". With v2 the default, the first branch is dead and the whole
assertion rests on an incidental uvicorn line that HEAD's run did not
emit at all.
Assert the behaviour instead of the wording: the container exits
non-zero, the log names the unreachable server (P1001), it never reaches
"Application startup complete", and it is not left running. The exit
code was previously discarded by `|| true`, so the one thing the job
most needed to check was never checked.
Verified by running the bad-DATABASE_URL container: exit 3, P1001
present, no startup-complete line, container stopped — the new check
passes and the old one passed only by the uvicorn line's accident.
2026-09-21 15:00:54 -07:00
Yuneng Jiang
1cc38f05f4
test(proxy): type the router settings source test parameters
2026-09-21 15:00:24 -07:00
Yujong Lee
58ffa8e4ce
refactor(rust): drop variable rebinding in s3 cache and bridge config
...
Also adds the startup_nodes parameter to the _CacheTestHandle.redis stub to match the merged runtime signature
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:00:09 +00:00
Mateo Wang
7b8bc54237
Merge pull request #42036 from BerriAI/litellm_team_membership_lookup_fail_closed
...
fix(auth): fail closed when the team membership lookup hits a db outage
2026-09-21 14:58:46 -07:00
mateo-berri
e7557ada57
fix(responses): list executed MCP calls as completed mcp_call items in the final output
2026-09-21 14:56:02 -07:00
ryan
7c8aed072f
chore: merge main into litellm_cherry_pick_password_breach_reset
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:54:35 +00:00
Yujong Lee
220b981ab4
test(rust): deduplicate the merged os import
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:53:18 +00:00
Mateo Wang
4b54897b36
Merge pull request #42315 from BerriAI/litellm_scim_delete_evict_user_cache
...
fix(proxy): evict the cached user row when SCIM or /user/delete removes a user
2026-09-21 14:51:53 -07:00
yucheng-berri
e0e5b7924a
Merge pull request #42312 from BerriAI/litellm_bedrock_batch_s3_creds_leak
...
Register s3_access_key_id, s3_secret_access_key and s3_encryption_key_id as
LiteLLM-owned batch params so they are no longer forwarded to Bedrock as
additionalModelRequestFields (which 400s ordinary chat on a batch-configured
deployment), keep them on CredentialLiteLLMParams so the batch/file paths
still receive them, and redact the S3 credential key names in debug logs.
Resolves LIT-8290
Co-authored-by: yucheng <yucheng@berri.ai>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 14:50:54 -07:00
Mateo Wang
10d0d5acb2
Merge pull request #42314 from BerriAI/litellm_alerting_batch_keeps_distinct_alerts
...
fix(alerting): deliver every distinct alert queued in one flush window
2026-09-21 14:49:54 -07:00
mateo-berri
b0305d0a31
test(router): call both mid-stream fallback attempt functions directly
...
The router coverage gate wants every router.py function reached by name from
a router test. The two per-endpoint attempt functions were only reached through
their callers, so each now has a direct test proving the per-request controls
carrier never reaches the provider call and every hop's stream comes back wrapped.
2026-09-21 14:48:42 -07:00
Yujong Lee
cf7234c6f4
chore(rust): refresh workspace lockfile
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:48:40 +00:00
Yujong Lee
c3c8c35cb2
Merge origin/main into litellm_valkey_semantic_native_cache
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:48:32 +00:00
Yujong Lee
b0c1b86382
refactor(cache-qdrant-semantic): reuse qdrant-client serde payload conversion in tests
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:48:27 +00:00
Yujong Lee
a4fda8f0d8
refactor(cache-qdrant-semantic): reuse immutable indexing params
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:48:24 +00:00
Yujong Lee
e0e4850ec1
merge(main): integrate upstream secret manager changes
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:48:18 +00:00
mateo-berri
073260ce5b
test(e2e): retry the hang-up when the model answers inside the window
2026-09-21 14:48:04 -07:00
Yujong Lee
b71e64446c
fix(cache-qdrant-semantic): annotate indexing wait payloads
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:47:56 +00:00
Yujong Lee
6a06f69972
fix(python-bridge): restore Qdrant dispatch after rebase
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:47:56 +00:00
Yujong Lee
ff2ca804b5
fix(python-bridge): preserve Qdrant facade dispatch after rebase
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:47:56 +00:00
Yujong Lee
acbec828db
fix(python-bridge): fall back to Python when qdrant_api_key changes after binding
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:47:56 +00:00
Yujong Lee
632c95f87e
fix(python-bridge): make the Qdrant config tests tolerate an unset OPENAI_API_KEY
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:47:56 +00:00