Commit graph

46484 commits

Author SHA1 Message Date
yucheng-berri
8881ba3c35 Capture one-request matching monitor A/B 2026-09-02 18:45:28 -07:00
yucheng-berri
e15f43fb80 Capture one-request matching monitor A/B 2026-09-02 18:45:25 -07:00
yucheng-berri
d2414654cb Use matching Guardrails Monitor overviews 2026-09-02 18:40:05 -07:00
yucheng-berri
3d349ddc4a Use matching Guardrails Monitor overviews 2026-09-02 18:40:03 -07:00
yucheng-berri
8cb6484c8f Show Guardrails Monitor redaction proof 2026-09-02 18:36:03 -07:00
yucheng-berri
2fefe01625 Show Guardrails Monitor redaction proof 2026-09-02 18:36:01 -07:00
yucheng-berri
e1be601ab5 Replace Guardrails Monitor evidence 2026-09-02 18:29:48 -07:00
yucheng-berri
a84f81e2eb Replace Guardrails Monitor evidence 2026-09-02 18:29:45 -07:00
yucheng-berri
34c62a7f7f Update Guardrails Monitor evidence 2026-09-02 18:29:35 -07:00
yucheng-berri
7040e8cbad Update Guardrails Monitor evidence 2026-09-02 18:29:34 -07:00
yucheng-berri
07d113b152 add 10-monitor-before.png 2026-09-02 18:08:43 -07:00
yucheng-berri
d4b0cc06ae add 09-monitor-after.png 2026-09-02 18:08:41 -07:00
yucheng-berri
319e9a8682 add 08-ui-log-compliance-after.png 2026-09-02 17:38:31 -07:00
yucheng-berri
419daec29f add 07-ui-log-detail-after.png 2026-09-02 17:38:29 -07:00
yucheng-berri
a8cc459d0c add 06-ui-log-detail-before.png 2026-09-02 17:38:28 -07:00
yucheng-berri
8dfa017c23 add 05-ui-playground-after.png 2026-09-02 17:38:26 -07:00
yucheng-berri
177992d1a8 add 04-ui-playground-before.png 2026-09-02 17:38:25 -07:00
yucheng-berri
bbdd10b4e2 add 03-ui-hide-secrets-form-after.png 2026-09-02 17:38:23 -07:00
yucheng-berri
ef51d963e4 add 02-ui-add-guardrail-after.png 2026-09-02 17:38:22 -07:00
yucheng-berri
a03bf1fae9 add 01-ui-add-guardrail-before.png 2026-09-02 17:38:20 -07:00
Yassin Kortam
7978b9f721
fix(proxy): stop leaking internal exception details to clients (#39380)
* fix(proxy): stop leaking internal exception details to clients

Public error responses could disclose internal details in two places.
A proxy-layer exception with no recognized provider status code (a bug
in a custom callback, a hook, or litellm's own code) forwarded its raw
str() text verbatim on a 5xx, including any embedded credential,
filesystem path, or internal hostname, or a full stack trace; the
same client-facing message now runs through a redaction layer built
on top of the credential redaction that already runs on log output,
so it also drops an embedded traceback and scrubs path-shaped and
hostname-shaped substrings. It intentionally never runs on server-side
logs, which must keep full detail for debugging.

exception_type(), litellm's core exception mapper, is shared by direct
SDK callers (litellm.completion()) and the proxy, and it deliberately
embeds a traceback into an unmapped exception's message as a debugging
aid for library users; a first pass at this fix stripped that
traceback inside exception_type() itself and broke that convention
(caught by tests asserting on the traceback frame). The traceback stays
in exception_type()'s own output; only the proxy's client-facing
response boundary (and the streaming response generator, which never
needs to embed one at all) strips it.

Full generic-message replacement for the unclassified-exception case
was tried first and reverted too: several routes deliberately raise a
bare exception as an informative, secret-free validation message (e.g.
the OCR endpoint's rejection of provider-native file IDs), and
replacing those wholesale broke that convention; targeted redaction
leaves them untouched.

Also stops the default uvicorn-based proxy from sending a Server
response header.

Resolves LIT-6747

* refactor(proxy): drop the unrelated error-message constant and trim redaction comments

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-02 17:32:00 -07:00
devin-ai-integration[bot]
5ad330f620
fix(http_handler): honor HTTP(S)_PROXY / NO_PROXY when force_ipv4 uses the httpx transport (#39443)
* fix(http_handler): honor HTTP(S)_PROXY / NO_PROXY when force_ipv4 uses the httpx transport

Passing an explicit transport to httpx.AsyncClient / httpx.Client disables its
automatic environment proxy mounts, so force_ipv4 on the httpx path sent every
LLM request direct and silently bypassed HTTPS_PROXY. Mount the same env-derived
proxy transports next to the IPv4-pinned direct transport in AsyncHTTPHandler,
HTTPHandler and the OpenAI async client factory.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(http_handler): carry the client's TLS verify and cert settings onto env proxy mounts

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: yassin <yassin@berri.ai>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-02 17:30:46 -07:00
Mateo Wang
e1a7af7e58
Merge pull request #39442 from BerriAI/litellm_e2e_ui_password_policy
test(e2e/ui): give the seeded users passwords that pass the default password policy
2026-09-02 17:29:54 -07:00
yujonglee
1e6a4d98a4
Merge pull request #38936 from BerriAI/litellm_fix_vector_store_request_embedding_resolution
fix(vector-store): resolve embedding credentials per request
2026-09-02 17:22:56 -07:00
Mateo Wang
708c396b90
Merge pull request #39366 from BerriAI/litellm_responses_guardrail_namespace_tools
fix(responses): keep namespace tools intact when a guardrail returns them unchanged
2026-09-02 17:19:21 -07:00
mateo-berri
2842e90836 Merge remote-tracking branch 'origin/litellm_internal_staging' into litellm_responses_guardrail_namespace_tools
# Conflicts:
#	type-discipline-budget.json
2026-09-02 17:06:33 -07:00
Mateo Wang
8c58b93572
Merge pull request #39239 from BerriAI/litellm_lit_6342_claude_subagent_router
fix(router): route Claude Code subagents through session router
2026-09-02 17:05:55 -07:00
mateo-berri
e641864e6f test(e2e/ui): give the seeded users passwords that pass the default password policy
The default password policy from #39381 (12+ chars with upper, lower, number, and special) makes globalSetup's POST /user/update with password "test" fail with a 400, so every role login in the UI e2e suite has been failing since that merge. Seed the roles, the noteam@test.local login, and the second-admin spec with policy-compliant passwords and update the scrypt hash in seed.sql to match.
2026-09-02 16:58:53 -07:00
devin-ai-integration[bot]
b0fe71010b
fix(ollama_chat): stamp finish_reason tool_calls when tool calls streamed before the done chunk (#39010)
* fix(ollama_chat): stamp finish_reason tool_calls when tool calls streamed before the done chunk

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(ollama_chat): trim finish_reason override comment

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: mubashir1osmani <mubashir.osmani777@gmail.com>
2026-09-02 16:56:35 -07:00
Mateo Wang
d3929048f1
Merge pull request #39187 from BerriAI/litellm_fix_v2_resolver_migration_deadlock
fix: recover the v2 migration resolver from concurrent migrate deploy deadlocks
2026-09-02 16:54:03 -07:00
mateo-berri
1df402b80d fix(vector-store): carry request metadata into the Router executor built from the router kwarg 2026-09-02 16:53:05 -07:00
tin-berri
632898b2a6
feat(router): add a hybrid classifier that defers near tier boundaries (#39403) 2026-09-02 23:51:43 +00:00
Mateo Wang
95b511bc19
Merge pull request #39362 from BerriAI/litellm_lit5443_mantle_chat_aws_creds
fix(bedrock_mantle): carry per-request AWS credentials into chat completions SigV4 signing
2026-09-02 16:48:16 -07:00
Mateo Wang
4ffe536a69
Merge pull request #39355 from BerriAI/litellm_fix_messages_passthrough_cache_control_ttl
fix(messages): drop cache_control ttl on non-Anthropic /v1/messages passthrough
2026-09-02 16:47:26 -07:00
Mateo Wang
cd9ed8bad5
Merge pull request #39363 from BerriAI/litellm_hosted_vllm_rerank_truncate_params
fix(hosted_vllm): forward truncate_prompt_tokens on rerank requests
2026-09-02 16:47:20 -07:00
Mateo Wang
c1a26f36ee
Merge pull request #38791 from BerriAI/litellm_fix_mcp_oauth_tool_fetch_auth
fix(mcp): cap tools preview and test-connection at the listing timeout and name the unreachable upstream
2026-09-02 16:47:10 -07:00
Mateo Wang
c9562e1dd9
Merge pull request #39091 from BerriAI/litellm_techdebt_20260901
chore(techdebt): clear fresh debt from the 2026-08-31 and 2026-09-01 windows
2026-09-02 16:46:52 -07:00
Mateo Wang
ff71808671
Merge pull request #35967 from BerriAI/litellm_bedrock_strip_client_metadata
fix(bedrock): strip client_metadata from converse additionalModelRequestFields
2026-09-02 16:46:48 -07:00
Mateo Wang
4286be8d5b
Merge pull request #39364 from BerriAI/litellm_fix_bedrock_mantle_messages_env_api_base
fix(bedrock): honor BEDROCK_MANTLE_API_BASE on bedrock/mantle messages and chat URLs
2026-09-02 16:46:44 -07:00
mateo-berri
3f9e44f839 Merge remote-tracking branch 'origin/litellm_internal_staging' into litellm_responses_guardrail_namespace_tools
# Conflicts:
#	type-discipline-budget.json
2026-09-02 16:45:49 -07:00
Yassin Kortam
c16c2cd6ee
fix(proxy): mark session/SSO/SAML cookies Secure behind a TLS-terminating reverse proxy (#39391)
* fix(proxy): mark session/SSO/SAML cookies Secure behind a TLS-terminating reverse proxy

litellm only sees a plain-HTTP hop when TLS terminates at a reverse proxy,
so cookie Secure attributes previously derived from (or defaulted without
regard to) the literal request scheme could be dropped in production. The
token session cookie set by every login path never carried Secure/HttpOnly/
SameSite at all.

Adds IPAddressUtils.is_request_https, a single trust-aware resolver used by
every cookie-setting call site: PROXY_BASE_URL, then X-Forwarded-Proto only
from a configured trusted proxy (general_settings.use_x_forwarded_for +
mcp_trusted_proxy_ranges), then the literal scheme. An unconfigured or
untrusted caller cannot spoof the header to force Secure on.

Resolves LIT-6748

* fix(proxy): make the shared session-cookie helper public, type new test helpers

set_session_token_cookie is imported across modules (ui_sso.py ->
proxy_server.py), so the leading underscore was misleading and breached
basedpyright's reportPrivateUsage budget with zero headroom. Also adds
missing parameter/return type annotations to the new test helper functions
per repo convention.
2026-09-02 16:42:29 -07:00
Mateo Wang
22cc97fe0a
Merge pull request #39159 from BerriAI/litellm_bedrock_converse_legacy_thinking_adaptive
fix(anthropic): upgrade legacy thinking to adaptive on adaptive-only Claude models for chat, Bedrock Converse, Invoke, Vertex AI, and Databricks
2026-09-02 16:35:03 -07:00
tin-berri
9aeeca4ce3
feat(router): add heuristic v2 complexity routing (#39276)
* feat(router): add trained heuristic complexity routing

* feat(router): expose heuristic v2 classifier

* style(router): format heuristic v2 predictor
2026-09-02 23:33:04 +00:00
mateo-berri
1636fdd3e6 Merge remote-tracking branch 'origin/litellm_internal_staging' into litellm_responses_guardrail_namespace_tools
# Conflicts:
#	basedpyright-code-budget.json
#	type-discipline-budget.json
2026-09-02 16:29:34 -07:00
yujonglee
082bea851e
Merge pull request #39334 from BerriAI/litellm_rust_opt_in_configuration
feat(python): unify Rust opt-in and bridge policy
2026-09-02 16:26:36 -07:00
yujonglee
34b45f3d79
refactor(python-bridge): declare sync and async routes once (#39333)
* refactor(rust): move audio transcription into core

* refactor(python-bridge): split non-streaming bridge modules

* fix(python-bridge): harden sync and async route boundaries

* refactor(python-bridge): declare sync and async routes once
2026-09-02 16:26:36 -07:00
yujonglee
62e318de8e
fix(python-bridge): harden sync and async route boundaries (#39332) 2026-09-02 16:26:35 -07:00
yujonglee
198906495f
refactor(python-bridge): split routes and add shared function tracing (#39031)
* refactor(python-bridge): split non-streaming bridge modules

* refactor(python-bridge): bring shared function tracing into route layer

* feat(dev): list Python route functions and call sites

* feat(dev): list Rust route functions and call sites

* docs(dev): record OCR parity gaps across Python and Rust

* feat(dev): list executed SDK calls with runtime tracing

* feat(dev): report Python vs Rust SDK pipeline steps in one CLI

* feat(dev): side-by-side pipeline step report in compare CLI

* fix(dev): drop invalid Final annotations in compare cell loop

* feat(dev): blue python-only and yellow rust-only steps in compare CLI

* feat(dev): vertical layout with section spacing in compare CLI

* fix(dev): validate SDK trace stages across sync and async routes

* refactor(rust): align SDK route call structure with Python

* refactor(python-bridge): share sync and async route call wrappers

* refactor(dev): split compare CLI into fixtures, runtime, and report modules

* fix(ci): run SDK trace tests and satisfy test lint
2026-09-02 16:26:35 -07:00
mateo-berri
63f5de12ae chore(techdebt): ratchet lint budgets to the merged tree 2026-09-02 16:25:58 -07:00
mateo-berri
683fc34044 fix(azure_ai): let the caller's output_config from extra_body win over the legacy thinking upgrade 2026-09-02 16:23:52 -07:00