yassin
4513f78df5
fix(migrations-check): read the table name past comments, ignore referential SET DEFAULT
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 18:14:36 +00:00
Yujong Lee
23633445d7
refactor(rust): extract auth and cache crates
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 18:12:11 +00:00
yassin
17059564a8
feat(otel): promote nested request metadata keys to litellm.metadata.* span attributes
...
baggage_metadata_keys entries such as requester_metadata.trace_id now resolve the caller's nested metadata.trace_id and stamp it on the LLM-call span as litellm.metadata.trace_id, in both the OTEL v2 logger and the legacy OpenTelemetry callback. Nested metadata mappings are flattened to dotted paths, only allowlisted leaves are promoted, and the requester_metadata blob itself is never promoted
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 18:08:14 +00:00
yucheng
1b5dacc717
fix(proxy): tolerate malformed auth spans and read the OTel span from request state for custom auth
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 18:05:38 +00:00
yassin
bf39aebcf1
ci(migrations): flag defaulted ADD COLUMN on request-log tables
...
Postgres 10 has no fast default path, so ADD COLUMN ... DEFAULT on
LiteLLM_SpendLogs rewrites the heap and every index under an ACCESS
EXCLUSIVE lock inside the boot-time migrate deploy. The checker now
reports it on LiteLLM_SpendLogs and LiteLLM_ErrorLogs; the two shipped
migrations that already do it are grandfathered
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 18:02:00 +00:00
Devin AI
732ac614cc
test(passthrough): expect absent query params
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 17:58:50 +00:00
yassin
ed18626291
fix(proxy): sync AWS Secrets Manager on body-less key regenerate
...
POST /key/{key}/regenerate with no request body reaches async_key_rotated_hook with data=None, and the secret manager sync was gated on data being present, so the rotated key never reached AWS Secrets Manager and the revoked key stayed stored. Gate on response.token_id only and read the requested alias null-safely
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 17:56:39 +00:00
Zach Bernstein
242bff782f
fix(scim): clamp collection page size
2026-09-16 12:52:22 -05:00
berriai-litellm-provider-info-sync[bot]
f8fb31db3a
chore(prices): sync Azure prices: 2 models
...
azure_ai/grok-4.3: input_cost_per_token_above_200k_tokens, output_cost_per_token_above_200k_tokens, cache_read_input_token_cost_above_200k_tokens
azure_ai/grok-4.6: input_cost_per_token_above_200k_tokens, output_cost_per_token_above_200k_tokens, cache_read_input_token_cost_above_200k_tokens
2026-09-16 17:51:09 +00:00
kerry
686556fffc
test(anthropic): build served-model stream chunks immutably
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 17:49:15 +00:00
kerry
9301aaf95d
test: add cost map price relationship invariants
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 17:47:32 +00:00
Devin AI
164e43f2e2
fix(passthrough): use immutable query fallback
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 17:45:10 +00:00
kerry
07d4936428
fix(anthropic): satisfy strict lint and update tests pinned to the dropped served model
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 17:44:59 +00:00
Joshua Valluru
70ef8b24b6
fix(mcp): reject bare schemes in raw authorization
2026-09-16 10:44:00 -07:00
Devin AI
94771abd84
fix(passthrough): only fall back to url query when client sends none
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 17:38:40 +00:00
kerry
df41f67399
test: assert cost-map schema instead of tautological rate lookups
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 17:37:48 +00:00
kerry-berri
4e996400e2
Merge pull request #41154 from BerriAI/litellm-providers/price-sync
...
chore(prices): sync Azure, Azure AI, Gemini, OpenAI, Bedrock, Together AI, Fireworks and Vertex prices: 278 models, 59 new, 30 deprecated
2026-09-16 10:37:21 -07:00
Devin AI
b6f97a51d2
fix(passthrough): keep target URL query when client sends no query params
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 17:35:20 +00:00
kerry
847172d311
fix(anthropic): carry the served model from message_start onto stream chunks
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 17:31:04 +00:00
kerry
0e8aa60b41
test: tidy price-derivation cleanup
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 17:24:53 +00:00
yassin
64ce436036
Merge remote-tracking branch 'origin/main' into litellm_streaming_buffer_release_on_scan
2026-09-16 17:22:01 +00:00
kerry
82289529c7
test: derive expected prices from the cost map instead of pinning vendor values
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 17:21:40 +00:00
Yassin Kortam
8aebd4ff63
Merge pull request #40571 from BerriAI/litellm_presidio_mcp_mode_no_post_call_scan
...
fix(guardrails): don't add post_call output scan for MCP-only Presidio modes
2026-09-16 10:09:12 -07:00
yujonglee
a7cfdd4cd5
Merge pull request #41432 from BerriAI/litellm_remove_rust_gateway_router_realtime
...
refactor(rust): remove gateway, config, router, realtime, and Rust trace-parity instrumentation
2026-09-16 10:06:31 -07:00
Yassin Kortam
8491d01668
Merge pull request #41268 from BerriAI/litellm_outbound_http2_opt_in
...
feat(http): opt-in outbound HTTP/2 for httpx clients
2026-09-16 10:05:37 -07:00
Yuneng Jiang
7d42bc751d
docs(e2e): name all four rejection reasons in the counter note
2026-09-16 10:05:13 -07:00
kerry
b9ab36279b
fix(prices): add tpm and rpm to gemini 3.8 live rows
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 16:49:17 +00:00
kerry
eed760a37d
test: drop azure gpt-5.6 rate tests pinned to a dated price page
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 16:49:15 +00:00
yassin
8a43fed20c
fix(guardrails): use explicit returns in _configured_event_hooks
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 16:48:15 +00:00
kerry
5507de326e
test(e2e): type the wire-shape parametrize ids callback
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 16:45:09 +00:00
Yassin Kortam
f0474bb70e
Merge pull request #41310 from BerriAI/litellm_model_access_denied_message
...
fix(proxy): hide model allowlist from client-facing model access denied errors
2026-09-16 09:38:29 -07:00
kerry
feb69c5f78
test(e2e): add tool-call, terminal, and image-input shapes to the cost matrix
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 16:38:15 +00:00
kerry
cab6732928
test: drop price-pinning tests that break on catalog updates
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 16:32:37 +00:00
yassin
7b3582aa66
fix(guardrails): treat tag-based Mode as MCP-only when all hooks are MCP hooks
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 16:31:44 +00:00
yassin
e48dde7b9b
fix(tests): drop leftover merge markers in test_handle_jwt
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 16:28:13 +00:00
yassin
5fee1c8710
Merge remote-tracking branch 'origin/main' into litellm_model_access_denied_message
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
# Conflicts:
# tests/test_litellm/proxy/auth/test_handle_jwt.py
2026-09-16 16:27:18 +00:00
berriai-litellm-provider-info-sync[bot]
809685603a
chore(prices): sync Azure prices: 247 models
...
azure_ai/Codestral-2501:
azure_ai/cohere-command-a:
azure_ai/deepseek-r1:
azure_ai/deepseek-v3:
azure_ai/deepseek-v3-0324:
azure_ai/deepseek-v3.1:
azure_ai/deepseek-v3.2:
azure_ai/deepseek-v3.2-speciale:
azure_ai/deepseek-v4-flash:
azure_ai/DeepSeek-V4-Flash-0731:
azure_ai/deepseek-v4-pro:
azure_ai/embed-v-4-0:
azure_ai/FW-DeepSeek-V3.2:
azure_ai/FW-DeepSeek-V4-Pro:
azure_ai/FW-GLM-5:
azure_ai/FW-GLM-5.1:
azure_ai/FW-GLM-5.2:
azure_ai/FW-GLM-5.2-Fast:
azure_ai/FW-Inkling:
azure_ai/FW-Kimi-K2.5:
azure_ai/FW-Kimi-K2.6:
azure_ai/FW-Kimi-K2.7-Code:
azure_ai/FW-Kimi-K3:
azure_ai/FW-MiniMax-M2.5:
azure_ai/FW-MiniMax-M3:
azure_ai/FW-Nemotron-3-Ultra-NVFP4:
azure_ai/FW-Nemotron-Lightning-3.5-30B-A3B:
azure_ai/gpt-oss-120b:
azure_ai/grok-3:
azure_ai/global/grok-3:
azure_ai/grok-3-mini:
azure_ai/global/grok-3-mini:
azure_ai/grok-4:
azure_ai/grok-4-1-fast-non-reasoning:
azure_ai/grok-4-1-fast-reasoning:
azure_ai/grok-4-20-non-reasoning:
azure_ai/grok-4-20-reasoning:
azure_ai/grok-4-fast-non-reasoning:
azure_ai/grok-4-fast-reasoning:
azure_ai/grok-4.3:
azure_ai/grok-4.6:
azure_ai/grok-code-fast-1:
azure_ai/kimi-k2.5:
azure_ai/kimi-k2.6:
azure_ai/kimi-k2.7-code:
azure_ai/Llama-3.3-70B-Instruct:
azure_ai/Llama-4-Maverick-17B-128E-Instruct-FP8:
azure_ai/MAI-DS-R1:
azure_ai/MAI-Image-2.5:
azure_ai/MAI-Image-2.5-Flash:
azure_ai/MAI-Image-2e:
azure_ai/MAI-Thinking-1:
azure_ai/mistral-large-3:
azure_ai/Phi-3-medium-128k-instruct:
azure_ai/Phi-3-medium-4k-instruct:
azure_ai/Phi-3-mini-128k-instruct:
azure_ai/Phi-3-mini-4k-instruct:
azure_ai/Phi-3-small-128k-instruct:
azure_ai/Phi-3-small-8k-instruct:
azure_ai/Phi-3.5-mini-instruct:
2026-09-16 16:26:23 +00:00
Yassin Kortam
e941edd08a
Merge pull request #41407 from BerriAI/litellm_content_filter_stream_bounded_scan
...
perf(content_filter): scan a bounded window per streamed chunk
2026-09-16 09:25:23 -07:00
yassin
23e775796c
Merge remote-tracking branch 'origin/main' into pr34829
2026-09-16 16:23:53 +00:00
kerry
d398c9199c
Merge remote-tracking branch 'origin/main' into HEAD
2026-09-16 16:18:47 +00:00
jesus
47117d880c
fix(guardrails): don't add post_call output scan for MCP-only Presidio modes
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 16:15:49 +00:00
Yujong Lee
6330d80efa
refactor(rust): glob workspace members
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 16:15:46 +00:00
Yassin Kortam
29a712b186
Merge pull request #41368 from BerriAI/litellm_shadow_streaming_multi_target
...
feat(router): stream shadow traffic and fan out silent_model to multiple targets
2026-09-16 09:08:24 -07:00
yassin
04aad317c7
Merge remote-tracking branch 'origin/main' into pr34829
2026-09-16 16:02:08 +00:00
Joshua Valluru
6c517bfc49
fix(mcp): reject scheme-only API key authorization payloads
2026-09-16 09:00:17 -07:00
Yujong Lee
96baeb8b04
refactor(rust): remove gateway, config, router, realtime, and trace-parity infrastructure
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 16:00:07 +00:00
Yuneng Jiang
1972a30def
revert(e2e): unmount Gemini, its api_base means two things
...
Build 227 mounted Gemini and turned TestGeminiFiles::test_gemini_file_upload
red. litellm's two Gemini endpoints disagree about what api_base means.
Chat composes {api_base}/models/{model}:{endpoint} and defaults api_base to
https://generativelanguage.googleapis.com/v1beta , so the version lives
inside it. File upload composes {api_base}/upload/v1beta/files and defaults
to the host root, so the version lives outside it. A single api_base cannot
satisfy both, and a registration carries no signal about which endpoint the
deployment will be used for, so the edge cannot route one and not the other.
Backing it out rather than working around it. The cache must never turn a
passing test red, which is the same rule the Bedrock model allowlist
follows, and Gemini was 7 of roughly 1030 edge calls in that build. Anyone
pointing litellm's Gemini provider at an AI gateway or a corporate proxy
hits this too, so the fix belongs in litellm; mounting Gemini is one line
once it lands.
This reverts commit 8a553ceb58 .
2026-09-16 08:37:25 -07:00
Yuneng Jiang
c447c3312d
feat(e2e): separate a provider error from a body that failed its rule
...
Build 226's 62 Bedrock rejections are the question this is trying to
answer, and "incomplete" would have covered both candidate causes at once.
Replaying the completeness rules over eight streams captured from live
Bedrock, covering tool use, extended thinking and a max-tokens stop on
both streaming endpoints, accepts every one of them, so a rule that is too
strict is the less likely half. A provider that answered 429 or 5xx and
was retried out of sight is the other, and it now counts as
rejected_error_status rather than being folded in with a grammar failure.
2026-09-16 08:13:04 -07:00
Joshua Valluru
fdb8e3533b
fix(mcp): validate credentials in existing request paths
2026-09-16 08:07:10 -07:00
Joshua Valluru
87190604f6
chore: integrate current main for MCP security compatibility
2026-09-16 07:54:13 -07:00