jesus
82e3f3980d
refactor(auth): resolve org identity through an auth_checks helper
...
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 Modules / fmt, validate, test (aws) (push) Has been cancelled
Terraform Modules / fmt, validate, test (gcp) (push) Has been cancelled
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 23:59:33 +00:00
jesus
96dc32ddcf
Merge remote-tracking branch 'origin/main' into litellm_org_alias_from_team
2026-09-18 20:58:38 +00:00
yassin
ce48a3fbcc
test(mcp): give the new cache and tombstone patches TQ008 reasons and match the keyword eviction call
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 02:49:41 +00:00
yassin
fd834f6f8b
fix(mcp): broadcast BYOK and OAuth credential eviction to peer workers and expire admin session tombstones
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 02:10:50 +00:00
yassin
ea37596b88
feat(mcp): let proxy admins force-close live MCP sessions and revoke stored user credentials
...
Adds an admin-only DELETE /v1/mcp/sessions that terminates stateful MCP gateway sessions on the current worker by session id prefix and/or by the LiteLLM user that opened them, tombstones the terminated ids so a client reusing one gets 404 instead of a silently recreated stateless session, and lets PROXY_ADMIN name a user_id on the BYOK and OAuth credential delete routes. Full and view-only admins can list every user's stored credential metadata for a server (never the secret). The dashboard gains Disconnect controls on the Live Connections tab and a User Credentials tab with Revoke controls, both hidden from read-only admins.
Resolves LIT-8001
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 01:01:26 +00:00
yassin
33531649c3
perf(mcp): count gateway session groups with Counter and pin the oversized initialize peek invariant
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-17 23:20:47 +00:00
jesus
1b69a5b0a4
test(proxy): model missing organizations in MCP auth fixtures
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-17 22:34:02 +00:00
yassin
a9ab7392ae
feat(mcp): show live gateway sessions by AI client and user
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-17 22:15:55 +00:00
Joshua Valluru
5b91195406
fix(mcp): retain selected guardrails for virtual REST calls
2026-09-17 10:40:33 -07:00
Joshua Valluru
743684bdbe
fix(mcp): preserve request-selected guardrails during tool execution
2026-09-17 09:57:08 -07:00
Mateo Wang
9e1eb546e4
Merge pull request #41514 from BerriAI/litellm_mcp_api_key_static_header_slot
...
fix(mcp): count admin static headers as api_key credential slots
2026-09-16 17:22:08 -07:00
mateo-berri
574ea15b8f
fix(mcp): count admin static headers as api_key credential slots
...
An api_key server whose key lives in static_headers, the documented
shape for upstreams that expect a custom header name, dispatched fine
before the fail-closed check and was rejected as misconfigured after
it. The check now treats every static header the admin configured as a
credential slot for api_key mode, on both the MCP client path and the
OpenAPI tool path, with regression tests at all three layers.
2026-09-16 16:42:20 -07:00
joshua-berri
41410e9556
Merge pull request #41364 from BerriAI/litellm_fix_mcp_auth_fail_closed_4501
...
fix(mcp): fail closed on missing upstream credentials
2026-09-16 23:26:38 +00:00
Joshua Valluru
70ef8b24b6
fix(mcp): reject bare schemes in raw authorization
2026-09-16 10:44:00 -07: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
Joshua Valluru
6c517bfc49
fix(mcp): reject scheme-only API key authorization payloads
2026-09-16 09:00:17 -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
Joshua Valluru
ee676d59f2
fix(mcp): preserve browser OAuth for unrelated bearer tokens
2026-09-15 23:08:14 -07:00
Joshua Valluru
e035682ed1
refactor(auth): separate JWT identity and OAuth authorization
2026-09-15 22:15:57 -07:00
Joshua Valluru
258176de76
fix(mcp): validate rendered static credential payloads
2026-09-15 20:32:25 -07:00
Joshua Valluru
be506936bd
fix(mcp): preserve explicit caller authorization credentials
2026-09-15 19:52:40 -07:00
Joshua Valluru
84e14789d1
fix(mcp): preserve usable alternate header credentials
2026-09-15 19:18:48 -07:00
Joshua Valluru
c7e4160ee6
fix(mcp): enforce OAuth write policy across signed callbacks
2026-09-15 19:15:34 -07:00
Joshua Valluru
97211bc356
fix(mcp): authorize per-user OAuth credential writes
2026-09-15 19:00:47 -07:00
yassin
b085a3c151
fix(mcp): return fixed client message on sampling model access denial
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 01:51:29 +00:00
yassin
15f2e25e8a
refactor(proxy): replace configurable model access denied message with a fixed clean client message
...
Drop the model_access_denied_message setting, its {model} template, the DB
override entry and the Admin UI field. Model access denials now always return
the fixed client message while the allowlist diagnostic is logged at the final
HTTP, realtime and MCP boundaries
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 01:44:36 +00:00
Joshua Valluru
8a3add3c6a
fix(mcp): reject scheme-only Basic credentials
2026-09-15 18:27:25 -07:00
Joshua Valluru
13553473aa
fix(mcp): reject missing upstream authentication credentials
2026-09-15 18:06:00 -07:00
Joshua Valluru
61e3b5ddae
fix(mcp): persist OAuth credentials for rowless JWT admins
2026-09-15 17:31:07 -07:00
yassin
241b177f05
fix(proxy): log the internal model access denial reason for MCP sampling denials
...
MCP sampling catches the denial itself and returns ErrorData, so the central ProxyException handler never sees it. Log the sanitized internal reason there and share the CR/LF stripping through ModelAccessDeniedProxyException.sanitized_internal_message
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 00:22:48 +00:00
Joshua Valluru
53318796fd
fix(mcp): separate JWT identity lookup from request authorization
2026-09-15 17:13:10 -07:00
Joshua Valluru
88d0371a46
fix(mcp): reuse the standard JWT auth builder for OAuth ownership
2026-09-15 16:50:55 -07:00
Joshua Valluru
eda98f38d9
fix(mcp): preserve canonical JWT owner lookup without cached identity
2026-09-15 12:41:12 -07:00
Joshua Valluru
92e182b898
fix(mcp): persist OAuth credentials for validated JWT users
2026-09-15 12:29:03 -07:00
Joshua Valluru
939fa4ee73
test(mcp): remove unrelated formatting changes
2026-09-12 18:27:20 -07:00
Joshua Valluru
f33bac8080
test(mcp): model delegated hook credentials
2026-09-12 17:29:26 -07:00
Joshua Valluru
364e466210
fix(mcp): strip duplicate delegated credentials
2026-09-12 17:18:54 -07:00
Joshua Valluru
97b964dd9a
fix(mcp): prevent delegated admission key forwarding
2026-09-12 17:00:21 -07:00
Joshua Valluru
94e4dd725f
fix(mcp): require admission for delegated OAuth
2026-09-12 16:41:23 -07:00
devin-ai-integration[bot]
0c98afa780
fix(mcp): enforce end user mcp_tool_permissions on tools/list and tools/call ( #40865 )
...
* fix(mcp): apply end user mcp_tool_permissions as a tool ceiling on tools/list and tools/call
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* test(mcp): restore scoped session admission coverage dropped by mistake
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-12 10:33:09 -07:00
joshua-berri
70cf348aa5
Merge pull request #40791 from BerriAI/litellm_fix_mcp_root_discovery_6634
...
fix(mcp): use gateway authentication for root discovery
2026-09-11 20:23:10 -07:00
joshua-berri
e86adf98ac
Merge pull request #40808 from BerriAI/litellm_fix_mcp_oauth_issuer_7078
...
fix(mcp): match per-server OAuth metadata issuers
2026-09-11 20:23:00 -07:00
Joshua Valluru
9d31de2f20
fix(mcp): bound discovery cache result bytes
2026-09-11 18:08:27 -07:00
Joshua Valluru
05d2c316f5
refactor(mcp): reuse in-memory discovery storage
2026-09-11 17:53:51 -07:00
Joshua Valluru
0690520080
test(mcp): isolate static-prefix discovery UI assets
2026-09-11 17:26:35 -07:00
Joshua Valluru
f66239a50f
test(mcp): cover static-prefix issuer discovery
2026-09-11 17:13:47 -07:00
Joshua Valluru
da61fa3564
fix(mcp): preserve existing relay discovery identifiers
2026-09-11 17:11:42 -07:00
Joshua Valluru
17863fa5cf
fix(mcp): match per-server OAuth metadata issuers
2026-09-11 17:05:35 -07:00
Joshua Valluru
87e2e7afac
fix(mcp): preserve request prefixes in BYOK discovery
2026-09-11 15:25:03 -07:00