yassin
e62ff9ebee
fix(proxy): return 400 instead of 500 for lone surrogate escapes in request body
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-15 21:40:53 +00:00
Yassin Kortam
a6127d2363
Merge pull request #35180 from BerriAI/litellm_lit4995_vertex_rerank_search_units
...
fix(rerank): bill Vertex search_units from input records and give every rerank response a unique id
2026-09-15 14:23:23 -07:00
Yassin Kortam
d35af8d302
Merge pull request #38682 from BerriAI/devin_ai_1787937848_tf_team_member_fields
...
feat(terraform): add tpm_limit, rpm_limit, budget_duration, allowed_models to litellm_team_member_add
2026-09-15 14:12:25 -07:00
yassin
0746cdbf2c
refactor(terraform): drop explanatory comments from team_member_add
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-15 21:02:12 +00:00
yassin
5645e17b4f
feat(terraform): add tpm_limit, rpm_limit, budget_duration, allowed_models to litellm_team_member_add
...
budget_duration and allowed_models ride on /team/member_add. tpm_limit and rpm_limit are sent through /team/member_update, the only endpoint that accepts them. Removing any of the four from config sends an explicit clear (null, or an empty list for allowed_models) since member_update is a merge-patch. The resource ID is set before the post-add limits call so a failure there taints the resource instead of orphaning the memberships
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-15 21:02:12 +00:00
Yassin Kortam
79d4d4d8f5
Merge pull request #38278 from BerriAI/litellm_fix_xai_chat_web_search_live_search
...
fix(xai): stop sending web_search_options to xAI's retired Live Search path
2026-09-15 14:01:13 -07:00
Yassin Kortam
1debb438f5
Merge pull request #40310 from BerriAI/litellm_lit7223_reconcile_before_db
...
fix(proxy): reconcile budget reservation before enqueuing spend to the DB
2026-09-15 13:57:55 -07:00
yassin
113e43b87a
Merge remote-tracking branch 'origin/main' into litellm_fix_xai_chat_web_search_live_search
2026-09-15 20:46:51 +00:00
yassin
4ba136946c
Merge remote-tracking branch 'origin/main' into litellm_lit7223_reconcile_before_db
2026-09-15 20:46:14 +00:00
yassin
5e0629793e
chore(xai): drop explanatory comment from responses bridge check
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-15 20:43:59 +00:00
Yassin Kortam
e6af62aaac
Merge pull request #40997 from BerriAI/litellm_batch_tpd_limit
...
feat(proxy): add tpd_limit (tokens per day) for batch submissions
2026-09-15 13:39:45 -07:00
Yassin Kortam
5199f4fca2
Merge pull request #40191 from BerriAI/litellm_fix_streaming_guardrail_block_logging
...
fix(proxy): log blocked streaming guardrail responses as failures, not success
2026-09-15 13:39:23 -07:00
Yassin Kortam
cdb4eaac59
Merge pull request #40262 from BerriAI/litellm_lit_7190_inline_token_counts
...
fix(proxy): run the remaining inline token counts off the event loop
2026-09-15 13:38:00 -07:00
yassin
95cc3bfabb
Merge remote-tracking branch 'origin/main' into litellm_fix_xai_chat_web_search_live_search
2026-09-15 20:27:48 +00:00
yassin
46bd3d40d7
refactor(logging): bill an assembled stream on the failure log via a public Logging method
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-15 20:23:50 +00:00
kerry-berri
7d3917dbf4
Merge pull request #41269 from BerriAI/litellm_ban_vendor_fact_pinning_tests
...
test: drop tests that pin vendor facts and add the CLAUDE.md rule
2026-09-15 13:16:55 -07:00
Yassin Kortam
367393405c
Merge pull request #41170 from BerriAI/litellm_prometheus_401_failed_requests_metric
...
fix(prometheus): count 401 auth failures in litellm_proxy_failed_requests_metric
2026-09-15 13:13:49 -07:00
Yassin Kortam
0e5be275b0
Merge pull request #41283 from BerriAI/litellm_writer_pinned_raw_sql_writes
...
fix(proxy): keep access-group raw SQL writes on the writer while writer_unavailable is stale
2026-09-15 13:13:30 -07:00
yassin
7095373dd5
fix(proxy): only discard parked stream logging for errors the failure path logs
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-15 20:10:19 +00:00
jesus
ec799686a4
style(proxy): ruff format utils.py
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-15 20:10:19 +00:00
jesus
0949f24eef
refactor(proxy): tighten deferred stream logging discard docstring
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-15 20:10:18 +00:00
jesus
8b24d4c24f
fix(proxy): log blocked streaming guardrail responses as failures, not success
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-15 20:10:18 +00:00
tin-berri
d07b2e87d2
Merge pull request #41270 from BerriAI/litellm_capability_classifier_pr
...
feat(router): add capability classifier as Fuse foundation
2026-09-15 13:04:21 -07:00
Yassin Kortam
435f0d22e8
Merge pull request #41156 from BerriAI/litellm_weighted_routing_model_id
...
fix(router): keep weighted routing when a deployment id equals a model_name
2026-09-15 12:55:45 -07:00
yassin
264305de23
fix(proxy): keep access-group raw SQL writes on the writer while writer_unavailable is stale
...
A stale RoutingPrismaWrapper.writer_unavailable flag made WriterPinnedClient hand back the routed wrapper, where query_raw is classified as a read, so the access-group UPDATE statements behind /key/regenerate, /key/generate with access_group_ids and model rename/delete went to the read replica and failed with SQLSTATE 25006. Route those raw statements through the underlying writer regardless of the flag; a raw SQL write has no replica fallback. WriterPinnedClient keeps yielding to the replica for degraded reads.
The model sync's backing-row count stays on the writer too: it runs right after the row delete/update on the writer and a lagging replica could still report the removed row, which would leave the group naming a model nobody serves.
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-15 19:55:07 +00:00
yassin
ea6314492f
refactor(ui): move key rate limit fields into KeyRateLimitFields
...
key_edit_view.tsx crossed the 800 line eslint max-lines ceiling once the
tpd_limit field landed. Move the tpm/rpm/tpd fields into a shared
KeyRateLimitFields control so the edit view stays under the limit
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-15 19:51:43 +00:00
Yassin Kortam
4d526ad747
Merge pull request #41216 from BerriAI/litellm_cache_custom_hf_tokenizer
...
fix(utils): cache custom HuggingFace tokenizers across /utils/token_counter requests
2026-09-15 12:51:18 -07:00
Yassin Kortam
d5b96648ea
Merge pull request #41161 from BerriAI/litellm_headroom_protect_cached_prefix
...
fix(headroom): protect the cached prefix through the last cache_control breakpoint
2026-09-15 12:49:50 -07:00
Yassin Kortam
c190f0f4b9
Merge pull request #41125 from BerriAI/litellm_alert_5xx_http_exceptions
...
fix(alerting): send llm_exceptions Slack alert for 5xx HTTPException and ProxyException
2026-09-15 12:48:58 -07:00
Yassin Kortam
a7b894f91b
Merge pull request #41271 from BerriAI/litellm_org_zero_max_budget
...
fix(proxy): enforce organization budgets when max_budget is 0
2026-09-15 12:47:18 -07:00
Yassin Kortam
60808520df
Merge pull request #40904 from BerriAI/litellm_jwt_agent_id_claim
...
feat(proxy): bind JWT claims to registered agents via agent_id_jwt_field
2026-09-15 12:46:18 -07:00
yassin
ecc2ed0c94
chore: merge main into litellm_lit_1795 and resolve test_router conflict
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-15 19:45:39 +00:00
yassin
d350aaf8bd
Merge remote-tracking branch 'origin/main' into litellm_prometheus_401_failed_requests_metric
2026-09-15 19:43:47 +00:00
Yassin Kortam
1ca4579375
Merge pull request #41178 from BerriAI/litellm_request_override_selector_callbacks
...
fix(router): bind per-request routing_strategy override selectors to the request's callbacks
2026-09-15 12:39:20 -07:00
Tin Chi Lo
55fc0deabc
style(router): format encrypted task selection
2026-09-15 12:09:05 -07:00
Tin Chi Lo
cadb7ee44d
fix(router): preserve native encrypted capability tasks
2026-09-15 12:05:30 -07:00
Mateo Wang
d3929287fe
Merge pull request #41189 from BerriAI/litellm_per_turn_control_beta
...
fix(anthropic): add the per-turn-control beta when a message carries output_config
2026-09-15 11:53:01 -07:00
Tin Chi Lo
896f35c751
fix(router): extract capability tasks with request scoped markers
2026-09-15 11:52:20 -07:00
Yassin Kortam
501be3143d
fix(proxy): enforce organization budgets when max_budget is 0
...
_organization_max_budget_check returned early whenever org_max_budget
was <= 0, so an organization with an explicit max_budget of 0 was
treated as unlimited instead of zero allowance. Key, team, and user
budget checks already skip only on None; align organization budgets
with that convention.
validate_team_org_change had the same defect in a different shape: it
used a truthy check on the org's max_budget when validating a team
move, so an explicit 0 there silently skipped the guard too.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 11:49:05 -07:00
Tin Chi Lo
e62f0d0376
fix(router): reject unknown capability policy fields
2026-09-15 11:43:04 -07:00
mateo-berri
f490172338
test(anthropic): drop docstrings and wrap a long line in the per-turn-control tests
2026-09-15 11:39:01 -07:00
Mateo Wang
2e06d195b2
Merge pull request #39857 from BerriAI/litellm_e2e_reliability_module_cells
...
test(e2e): cover the reliability retry, cooldown, fallback, and routing-strategy cells
2026-09-15 11:38:51 -07:00
Tin Chi Lo
914ae9b248
test(ui): use the current deployment affinity label
2026-09-15 11:38:28 -07:00
Yassin Kortam
41b5d47c71
Merge pull request #41144 from BerriAI/litellm_responses_bridge_filters_unknown_params
...
fix(responses): filter bridged kwargs like the native Responses path
2026-09-15 11:32:38 -07:00
Yassin Kortam
837423237a
Merge pull request #36775 from MvdB/litellm_presidio_new_entities
...
feat(guardrails): add new upstream presidio pii entities including german set
2026-09-15 11:26:21 -07:00
yujonglee
33000d7e25
Merge pull request #41180 from BerriAI/litellm_rust_bridge_native_stub
...
build(rust-bridge): add typed _native stub and validate it with mypy.stubtest
2026-09-15 11:25:56 -07:00
Devin AI
da7853c20a
test: drop tests that pin vendor facts and add the CLAUDE.md rule
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-15 18:24:30 +00:00
Tin Chi Lo
2da9bbfc0f
chore: merge main into capability classifier copy
2026-09-15 11:24:01 -07:00
tin-berri
3ac79757f4
Merge pull request #41175 from BerriAI/litellm_team_member_auto_routers
...
feat(auto-router): allow opted-in team members to manage their routers
2026-09-15 11:19:58 -07:00
mateo-berri
9bba2df58f
chore(ui): regenerate dashboard API types after merging main
2026-09-15 11:19:50 -07:00