| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-07-28 | 38.0 kB | |
| v1.94.0 source code.tar.gz | 2026-07-28 | 47.4 MB | |
| v1.94.0 source code.zip | 2026-07-28 | 52.8 MB | |
| Totals: 3 Items | 100.3 MB | 21 | |
Verify Docker Image Signature
All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.
Verify using the pinned commit hash (recommended):
A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:
:::bash
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
ghcr.io/berriai/litellm:v1.94.0
Verify using the release tag (convenience):
Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:
:::bash
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/v1.94.0/cosign.pub \
ghcr.io/berriai/litellm:v1.94.0
Expected output:
The following checks were performed on each of these signatures:
- The cosign claims were validated
- The signatures were verified against the specified public key
What's Changed
- feat(ui): working Test Connection for the complexity auto router by @akapur99 in https://github.com/BerriAI/litellm/pull/32950
- fix(xecguard): use StandardLoggingGuardrailInformation in logging hook by @yucheng-berri in https://github.com/BerriAI/litellm/pull/32911
- feat(ui): adopt openapi-react-query ($api) and convert useCustomers by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/32949
- refactor(ui): colocate the mcp-servers view, keeping the shared mcp_tools surface by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/32968
- refactor(ui): convert endpoint usage charts to shadcn/recharts by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/32723
- fix(proxy-auth): stop unrecognized model namespaces slipping through provider wildcard keys by @mateo-berri in https://github.com/BerriAI/litellm/pull/32979
- feat(router): random-pick multi-model complexity tiers by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/32967
- fix(xecguard): sanitize scan result before recording it for logging by @yucheng-berri in https://github.com/BerriAI/litellm/pull/32935
- fix(auto_router): filter embedding models in complexity tab dropdowns, require all tiers, inline validation by @akapur99 in https://github.com/BerriAI/litellm/pull/32978
- fix(anthropic): translate raw adaptive thinking for pre-4.6 models on chat completions and Bedrock Converse by @akapur99 in https://github.com/BerriAI/litellm/pull/32944
- feat(router): add Router(plugins=[...]) routing-plugin pipeline by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/32972
- feat(router): soft-floor adaptive mode for complexity router by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/32947
- docs(github): add QA runbook section to the PR template by @mateo-berri in https://github.com/BerriAI/litellm/pull/32965
- fix(model_cost): add supports_reasoning: false to Gemini image generation models by @mateo-berri in https://github.com/BerriAI/litellm/pull/32836
- build(dev-env): add make bootstrap and unprovisioned-checkout preflight to pre-commit by @mateo-berri in https://github.com/BerriAI/litellm/pull/32981
- ci(ui): report only error-level knip findings in CI by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/32971
- feat(batches): track cost for unmanaged Bedrock batches, generalize the flag by @Sameerlite in https://github.com/BerriAI/litellm/pull/32315
- fix(guardrails): walk custom_tool_call_output items in _content_utils by @yucheng-berri in https://github.com/BerriAI/litellm/pull/32969
- fix: show and allow editing team model aliases after team creation by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33047
- chore(deps): bump pillow to 12.3.0 to resolve osv-scan CVEs by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33093
- feat(mcp): mint gateway-bound envelope at the token endpoint for dcr_bridge oauth_delegate by @tin-berri in https://github.com/BerriAI/litellm/pull/32828
- fix(mcp): surface rejected delegate-auth upstream tokens as connect-time 401 by @tin-berri in https://github.com/BerriAI/litellm/pull/32741
- fix(proxy): track unauthenticated pass-through requests in spend logs by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/32410
- feat(lasso): send source.type for Used By attribution by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33090
- fix(responses): continue MCP gateway tool turns from the final response and surface failures by @thibault-linktree in https://github.com/BerriAI/litellm/pull/33025
- fix(responses): continue MCP gateway tool turns from the final response and surface failures by @tin-berri in https://github.com/BerriAI/litellm/pull/33099
- fix(completion): forward aws credential kwargs into litellm_params so the responses bridge keeps WIF auth by @mateo-berri in https://github.com/BerriAI/litellm/pull/32956
- fix(ui): respect litellm_key_header_name in BYOK credential save and workflow runs fetches by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33103
- refactor(ui): standardize debounce waits behind shared DEBOUNCE_WAIT_MS constant by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33040
- feat(ui): rebuild the Virtual Keys table on the shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32991
- fix: redact async complete streaming response for custom callbacks by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33106
- build(ui): bump @tanstack/react-pacer from 0.2.0 to 0.22.1 by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33041
- fix(ui): address Virtual Keys redesign review nits by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33112
- fix(openai/responses): clamp max_output_tokens below API minimum by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33098
- fix(prometheus): read v3 rate limiter remaining values for per-key model gauges by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33119
- fix(ui): drop w-full from page-content wrappers to remove 32px horizontal overflow by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33118
- refactor(ui): migrate straightforward value debounces to react-pacer by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33042
- feat(mcp): interactive SSO sign-in for dcr_bridge oauth_delegate DCR clients by @tin-berri in https://github.com/BerriAI/litellm/pull/32946
- test(proxy): add regression tests for management_endpoints edge cases by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32976
- fix(auto-router): correct Responses API tool_choice shape and propagate alias litellm_params by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/32974
- fix(ui): render the sidebar scrollbar with shadcn ScrollArea by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33124
- refactor(ui): migrate callback debounce sites to react-pacer with regression tests by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33043
- chore: add CODEOWNERS for ui and proxy UI build artifacts by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33131
- feat(mcp): client-held refresh envelope for the dcr_bridge oauth_delegate flow by @tin-berri in https://github.com/BerriAI/litellm/pull/32980
- feat(ui): rebuild the Teams table on the shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33128
- fix(mcp): relay upstream OAuth token and DCR rejections instead of a generic 500 by @tin-berri in https://github.com/BerriAI/litellm/pull/33113
- fix(keys): persist key_type so the UI shows correct key scope instead of "All Proxy Models" by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33115
- feat(router): opt-in session affinity for complexity router by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/33126
- feat(prometheus): expose video duration and image count consumption metrics by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33138
- test(e2e): otel trace completeness on /chat/completions by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33132
- fix(sso): paginate through all pages when fetching service principal group assignments by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33149
- test(e2e): otel trace completeness on /v1/messages by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33133
- feat(ui): add adaptive routing settings to Auto-Router v2 by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/33146
- refactor(mcp): extract the dcr_bridge token flow into bridge_token_flow.py by @tin-berri in https://github.com/BerriAI/litellm/pull/33141
- chore: bump litellm 1.93.0 -> 1.94.0, litellm-enterprise 0.1.49 -> 0.1.50, litellm-proxy-extras 0.4.76 -> 0.4.77 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33229
- fix(proxy): route master key to team-scoped models by @kunal2002 in https://github.com/BerriAI/litellm/pull/32926
- chore(deps): pin httplib2 and setuptools transitive floors by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33233
- feat(ui): left-anchor the Create Key and Create Team CTAs by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33248
- fix(anthropic/passthrough): drop incompatible temperature when downgrading adaptive thinking for pre-4.6 models by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33244
- fix(guardrails): run apply_guardrail-style model-level pre_call guardrails at deployment hook by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33136
- fix(proxy)!: enforce user budget on team keys (read-time + reservation) with UI opt-out by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/32005
- fix(e2e): bound spend-log snapshots to a /spend/logs/v2 window by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/33265
- test(e2e): cover key rpm/tpm rate limiting, window reset, and pacing headers by @mateo-berri in https://github.com/BerriAI/litellm/pull/32914
- fix(anthropic): use native output capability by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/33235
- fix(ci): retry setup-uv installs to survive transient manifest fetch failures by @mateo-berri in https://github.com/BerriAI/litellm/pull/33279
- fix(proxy): never log raw virtual keys in key insertion debug output by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33268
- fix(bedrock_mantle): route xai.grok-4.3 via /openai/v1 frontier path by @marty-sullivan in https://github.com/BerriAI/litellm/pull/33027
- feat(pricing): add gemini-omni-flash-preview with video output token pricing by @mateo-berri in https://github.com/BerriAI/litellm/pull/33274
- fix(auth): scope the JWT enterprise gate to actual JWTs by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/33296
- fix(s3): sanitize slashes in response-id-derived object key file name by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33271
- refactor(ui): migrate guardrails table onto shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33303
- chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33308
- feat(guardrails): streaming text transformation in generic_guardrail_api by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33110
- test(e2e): cover model-aware mid-conversation system handling on Bedrock Invoke /v1/messages by @mateo-berri in https://github.com/BerriAI/litellm/pull/32963
- test(claude_code): move the Claude Code compatibility matrix under tests/e2e by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/32548
- chore(ci): sync litellm_internal_staging into daily OSS branch by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33337
- feat(bedrock guardrails): add resource-less InvokeGuardrailChecks (detect-only) mode by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33299
- Revert "chore(ci): sync litellm_internal_staging into daily OSS branch" by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33339
- fix(websearch): intercept web search on the Responses API by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33129
- fix(anthropic-adapter): drop empty content_block_delta events by @mateo-berri in https://github.com/BerriAI/litellm/pull/33315
- fix(mcp): persist discovered OAuth endpoints and keep last known good on failed re-discovery by @tin-berri in https://github.com/BerriAI/litellm/pull/33286
- test(e2e): otel trace completeness on streaming chat, messages, and responses (LIT-3787) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33234
- feat(router): resolve auto-router routing plugins from proxy YAML config by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/33251
- test(e2e): failed request error span carries the full untruncated message and status (LIT-4179) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33304
- refactor(ui): migrate tags table onto shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33314
- fix(cli): surface actionable CLI SSO errors when CLI and proxy versions skew by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33309
- feat(bedrock_mantle): add GPT-5.6 sol/terra/luna to model cost map by @mateo-berri in https://github.com/BerriAI/litellm/pull/33412
- chore(codeowners): exempt generated schema.d.ts from UI ownership by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33411
- feat(proxy): push-based OTLP billable-request metering for enterprise deployments by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31592
- fix(mcp): cap per-user OAuth token cache TTL at the token's own lifetime by @tin-berri in https://github.com/BerriAI/litellm/pull/33346
- feat(ui): move Caching out of Experimental into Developer Tools by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33432
- chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33425
- chore(ci): merge daily internal staging branch by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33335
- feat(guardrails): add Compresr guardrail for query-aware context compression by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33295
- fix(logging): preserve callback order in get_combined_callback_list by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33005
- fix(logging): redact assistant tool call arguments in spend logs by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33111
- fix(anthropic): honor messages request timeout by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33418
- fix(llm_guard): apply sanitized prompt returned by moderation API to request by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33331
- fix(logging): stop pinning large request payloads past request end by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33455
- feat(guardrails): forward optional metadata on POST /guardrails/apply_guardrail by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33067
- build: raise requires-python cap to <3.15 so Python 3.14 installs current releases by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33438
- feat(ui): add reusable BetaBadge and use it for Projects sidebar item by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33449
- fix(mcp): discover missing OAuth scopes and token_url when authorization_url is set manually by @tin-berri in https://github.com/BerriAI/litellm/pull/33317
- feat(ui): show exact license expiration date in usage cards by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33478
- test(claude_code): rename misleading REPO_ROOT to SUITE_ROOT in test_v0_layout by @mateo-berri in https://github.com/BerriAI/litellm/pull/33472
- build(deps): update ddtrace to the 4.x line by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33484
- fix(complexity_router): return empty dict from _classifier_call_metadata when metadata is absent by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33452
- fix(ui/chat): resolve chat routes at render time so navigation works under server_root_path by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33446
- fix(key management): enforce minimum custom key length and mask short keys in key_name by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33462
- chore(ui): remove unmounted UsageIndicator and the Hide Usage Indicator flag by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33482
- test(e2e/claude_code): add passthrough matrix row for the big-3 clouds and Anthropic API by @mateo-berri in https://github.com/BerriAI/litellm/pull/33473
- chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33491
- fix(ui): stop sending the complexity-router pseudo-model to /health/test_connection by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/33498
- feat(cli): add lite up/down to ambiently route Claude Code through the proxy by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/33231
- feat(complexity_router): enable session_affinity by default by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33500
- fix(anthropic): stop 500 on combined thinking+signature streaming chunk by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33505
- feat(autoroute): prompt for semantic keywords per tier in configure wizard by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33508
- fix(cli/anthropic): unblock lite autoroute proxy deps, adaptive thinking, and thinking+signature streaming by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33507
- test(ocr): use mistral-document-ai-2512 in azure_ai OCR tests by @mateo-berri in https://github.com/BerriAI/litellm/pull/33489
- fix(guardrails): show YAML-defined guardrails in the Guardrail Monitor by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32853
- refactor(ui): migrate policies, deleted keys, deleted teams, budgets, and search tools tables onto shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33357
- refactor(ui): migrate vector stores, prompts, and skills tables onto shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33343
- test(e2e): datadog log delivery for successful chat, messages, and responses (LIT-4447) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33415
- fix(cli): make CLI output ASCII-only so it doesn't crash legacy Windows consoles by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33465
- fix: remove dead user-cache lookup with None key in spend-update path by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33555
- feat(helm): add per-component PodDisruptionBudget and topologySpreadConstraints to componentized chart by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33430
- fix(e2e/claude_code): unblock stage collection, align proxy env names, register compat models by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/33433
- fix(mcp): index authed request-time tools missing from the semantic filter startup index by @tin-berri in https://github.com/BerriAI/litellm/pull/33318
- fix(streaming): use provider-reported usage cost for OpenRouter streams by @mateo-berri in https://github.com/BerriAI/litellm/pull/32255
- feat(mcp): issuer-anchored OAuth discovery (RFC 8414 §3.3) to close the authorization-server mix-up by @tin-berri in https://github.com/BerriAI/litellm/pull/33450
- feat(logging): add user and team level spend and budget to StandardLoggingPayload metadata by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33459
- fix(router): cast model_info cost values to float in _set_model_group_info by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33556
- chore(e2e): establish litellm_e2e_staging integration line by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/33502
- fix(ui): navigate to /ui/login/ with trailing slash via hard navigation by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33561
- feat(logging): add structured budget fields to budget rejection failure logs by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33460
- fix(streaming): surface upstream connection resets instead of empty 200 streams by @mateo-berri in https://github.com/BerriAI/litellm/pull/33222
- fix(proxy_cli): reap orphaned prisma query-engine processes when a worker dies by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33424
- test(reasoning_effort_grid): enable azure fable-5 and opus-4-8 grid cells by @mateo-berri in https://github.com/BerriAI/litellm/pull/33485
- build(deps): bump uvicorn lock to 0.51.0 so worker health-check and jitter flags take effect by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33574
- fix(proxy): coerce default_internal_user_params.max_budget to float on config load by @yassin-berriai in https://github.com/BerriAI/litellm/pull/32434
- fix(router): honor per-request routing_strategy from key/team router_settings by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33429
- fix(redis): honor ssl value instead of key presence when building async connection pool by @yassin-berriai in https://github.com/BerriAI/litellm/pull/32590
- fix(langfuse_otel): build per-request OTLP exporter from key and team dynamic Langfuse credentials by @yassin-berriai in https://github.com/BerriAI/litellm/pull/32437
- ci: run zizmor and proxy-db unit tests on PRs targeting litellm_ branches by @mateo-berri in https://github.com/BerriAI/litellm/pull/33568
- fix(router): apply team/key enable_tag_filtering to tag routing by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33436
- feat(proxy): add disable_auto_add_proxy_admin_to_teams flag by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33563
- fix(proxy): stop stale auth cache re-publish to Redis so key updates propagate across replicas by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33565
- feat(e2e): emit structured E2E_RESULT lines for package status history by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/33578
- chore: bump litellm-enterprise 0.1.50 -> 0.1.51, litellm-proxy-extras 0.4.77 -> 0.4.78 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33571
- fix(docker): restore litellm-proxy-extras source dir in runtime images by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33592
- feat(ui): require embedding model for semantic auto router by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33313
- feat(scim): ingest and round-trip SCIM entitlements and roles user attributes by @tin-berri in https://github.com/BerriAI/litellm/pull/33587
- refactor(ui): migrate 5 simple tables onto shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33548
- fix(model_armor): restore reference attachments via skip_unscannable_attachments and remove the attachment count cap by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33554
- fix(mcp): keep the MCP reference intact when the semantic filter narrows tools by @tin-berri in https://github.com/BerriAI/litellm/pull/33584
- fix(sso): stop enforcing UI session budget on CLI login tokens by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/33312
- test: e2e staging leftovers by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/33613
- test(e2e/claude_code): add GPT-5.6 Sol/Terra/Luna columns for OpenAI, Azure OpenAI, and Bedrock Mantle by @mateo-berri in https://github.com/BerriAI/litellm/pull/33474
- test(e2e): otel streaming spans record a real ttft below span duration by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33588
- fix(mcp): make the preemptive-401 OAuth challenge decision mode-aware by @tin-berri in https://github.com/BerriAI/litellm/pull/33586
- fix(ui): show all teams in policy attachment form for admins by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33628
- refactor(ui): migrate AI Hub, public hub, and MCP Toolsets tables onto shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33629
- test(e2e): datadog log delivery for streamed routes, read back from the real datadog api by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33566
- chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33640
- fix(vertex_ai): surface Gemini grounding toolUsePromptTokenCount in Usage by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33533
- test(e2e): harness fixes for stage job green (skips + router/UI/budget) by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/33634
- fix(router): resolve prompt cache minimum per model instead of a flat 1024 by @tin-berri in https://github.com/BerriAI/litellm/pull/33637
- fix(logging): classify async anthropic_messages and generate_content as async by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33589
- fix(ui): remove Chat item from dashboard leftnav by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33647
- fix(router): tag-aware pre-routing strategy selection for shared model_name by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33691
- fix(proxy): enforce max_parallel_requests as a per-slot concurrency gauge by @yassin-berriai in https://github.com/BerriAI/litellm/pull/32441
- fix(proxy): stop treating upstream model body field as a LiteLLM model on auth-enforced pass-through routes by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33710
- fix(mcp): expand toolset grants in shared permission primitives so tools/call honors them by @tin-berri in https://github.com/BerriAI/litellm/pull/33612
- feat(complexity-router): user-triggered escalation keywords by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33656
- fix(fireworks_ai): bill prompt-cache hits at cache_read rate by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33714
- fix(pricing): mark realtime-only gpt-realtime models as mode realtime by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33728
- fix(rag): track LLM completion usage and spend for /v1/rag/query by @yassin-berriai in https://github.com/BerriAI/litellm/pull/32438
- feat(anthropic): add enable_anthropic_prompt_caching for automatic cache_control injection by @tin-berri in https://github.com/BerriAI/litellm/pull/33573
- fix(anthropic): self-heal on missing thinking-signature errors from Bedrock/Vertex by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33719
- fix(proxy): resolve router_settings.plugins dotted paths and load plugins from installed packages by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33644
- test(e2e): budget refusals are 429 for bare keys and team caps block every team key by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33632
- feat(router): add router plugin reference catalog by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33746
- test(e2e): assert an org budget block is a 429 naming the organization by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33638
- fix(proxy): bill partial streamed spend when the client disconnects mid-stream by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33736
- test(e2e): delete unreferenced Grafana panel docs by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33743
- docs(tests/e2e): align skip-vs-fail docs with the hard-fail contract and scope the no-unit-tests rule by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33755
- refactor(e2e): replace bespoke result reporter with standard JUnit report by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33758
- test(e2e): user budget across keys and team member budget isolation by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33745
- refactor(e2e): remove bob_the_builder; drive remediation from a Grafana alert (provisioned outside the repo) by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33749
- feat(mcp): per-server outcomes for aggregate tools/list and truthful single-server REST statuses by @tin-berri in https://github.com/BerriAI/litellm/pull/33153
- test(e2e): mcp suite for key-without-access denial by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33752
- chore(ci): merge oss branch by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33784
- chore(ci): merge oss branch - July 17th by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33793
- fix(ui): migrate tag deletion to shared DeleteResourceModal by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33795
- build(rust): raise pyo3 to 0.29 so the native bridge compiles on Python 3.14 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33798
- chore(guardrails): remove docstring from singulr module for consistency by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33800
- fix(ui): stop credential edit from persisting the masked api key by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33797
- build(deps): allow redisvl, pypdf, and openapi-core on Python 3.14 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33801
- test(proxy): make streaming-cancel mocks awaitable for the disconnect slot release by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33802
- test(e2e): a member's team budget cuts off only that member's key by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33718
- test(e2e): a user's max_budget follows the person across personal and team keys by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33762
- test(e2e): skip flaky OpenAI GPT cells; raise multi-window max_tokens by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/33799
- chore: remove accidentally committed dist tarball and ignore dist/ by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33805
- fix(passthrough): stop classifying plain 'predict'/'search' paths as Vertex by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33658
- build(deps): bump mcp lock to 1.28.1 to clear image-scan findings by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33803
- test(pricing): pin the realtime mode assertion to the bundled cost map by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33806
- fix(proxy): derive session id from Anthropic metadata.user_id for session affinity by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33723
- test(e2e): budget reset diagonal for team, org, user, and [#32005] team-member keys by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33771
- fix(proxy): source /v1/models token limits from the cost map instead of Router.get_model_group_info by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33721
- fix(fireworks_ai): correct glm-5p2 prompt-cache read price to $0.14/1M by @tin-berri in https://github.com/BerriAI/litellm/pull/33796
- feat(proxy): add x-litellm-model-name response header with deployment model string by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33698
- feat: add Straiker guardrail integration by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33781
- fix(vertex_ai): exclude Gemini Google Search grounding tokens from input token billing by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33742
- feat(fireworks_ai): map litellm session id to x-session-affinity header for prompt caching by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33717
- feat(ui): configure Anthropic automatic prompt caching from the Admin UI by @tin-berri in https://github.com/BerriAI/litellm/pull/33581
- fix(router): enforce context-window pre-call checks for Responses API input by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33706
- fix(otel): restore proxy-level error.* attributes on v2 failure spans (LIT-4179) by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33664
- fix(mcp): persist config.yaml DCR clients in a server-scoped store so refresh survives token expiry by @tin-berri in https://github.com/BerriAI/litellm/pull/33768
- refactor(ui): consolidate Add/Edit credential modals into one CredentialModal by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/32572
- feat(mcp): add ID-JAG (identity assertion authorization grant) support for MCP egress by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31516
- refactor(ui): migrate policy attachments table onto shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33827
- docs(litellm-rust): add provider coding standards by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33833
- test(e2e): rename Gateway to ProxyClient and expose it as a session-scoped pytest fixture by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33750
- feat(messages): route Azure Anthropic /messages through Rust behind rust:true by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33616
- test(e2e): add Locust throughput load test that runs last by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33748
- fix(proxy): resolve team wildcard credentials for vector store files by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/33649
- refactor(e2e): fold claude_code HTTP probes onto shared ProxyClient methods by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33760
- test(e2e): harden stage flakes for batches, UI, and MCP by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/33831
- fix(e2e): migrate load suite from e2e_gateway to ProxyClient by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/33839
- chore(e2e): remove tests/e2e/docker-compose.yml by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33837
- test(e2e): cover /v1/responses openai basic nonstream and stream by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33830
- test(e2e): cover /v1/responses openai cost_logged and tool_use by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33835
- test(e2e): cover /v1/responses OpenAI vision and Anthropic basic by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33838
- test(e2e): spendlog cost for streaming /v1/messages via responses bridge by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33753
- fix(docker): bake prisma CLI and engines at a fixed path so fresh-DB migrations work for any uid offline by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33853
- feat(chat-ui): add personal Logs view scoped to the current user by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33829
- chore: bump litellm-proxy-extras 0.4.78 -> 0.4.79 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33855
- docs(litellm-rust): require the official Rust Style Guide in agent rules by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33867
- fix(router): treat malformed configured token limits as absent on /v1/models by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33864
- chore: rebuild admin UI bundle for the rc release by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33857
- docs(rust): add provider abstraction standards by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33865
- chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33868
- chore(release): backport [#33929] to rc/1.94.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34033
- chore(release): backport [#33810], [#33733] to rc/1.94.0 and bump litellm-proxy-extras to 0.4.79.post1 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34215
- chore(ui): rebuild Next.js bundle on rc/1.94.0 so the Cost Optimization page ships by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34216
- chore(release): backport auth, CLI SSO and guardrail fixes to rc/1.94.0 and refresh flagged dependencies by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34640
- chore(release): backport [#33899], [#33978], [#34582], [#34675] to rc/1.94.0 and bump litellm-proxy-extras to 0.4.79.post2 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34855
- fix(ui): backport cache leakage card layout fix to rc/1.94.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34964
- fix(ui): add missing cost-optimization page description on rc/1.94.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34967
- feat(ui): mark Cost Optimization as beta in the left nav (#34984) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34987
- chore: rebuild Admin UI bundle for v1.94.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34982
- fix(cost-optimization): backport the savings chart axis fix and methodology popovers to rc/1.94.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34994
- chore: rebuild Admin UI bundle for rc/1.94.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34995
Full Changelog: https://github.com/BerriAI/litellm/compare/v1.93.0...v1.94.0