| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-08-02 | 44.5 kB | |
| v1.95.0 source code.tar.gz | 2026-08-02 | 49.1 MB | |
| v1.95.0 source code.zip | 2026-08-02 | 54.7 MB | |
| Totals: 3 Items | 103.9 MB | 15 | |
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.95.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.95.0/cosign.pub \
ghcr.io/berriai/litellm:v1.95.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(spend): track prompt compression saved tokens in daily spend aggregates by @tin-berri in https://github.com/BerriAI/litellm/pull/33810
- test(e2e): assert the long budget window keeps blocking after the short window resets by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33832
- feat(messages): route native Anthropic /messages through Rust behind LITELLM_RUST env var by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33848
- test(e2e): cover credential-backed /v1/messages request by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33863
- feat(rust): expose Anthropic Messages route (POST /v1/messages) on the axum gateway by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33880
- feat(rust): 1:1 port of OpenAI Responses API WebSockets to litellm-rust by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33849
- fix(proxy): treat malformed cost-map token limits as absent on /v1/models by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33903
- feat(rust): port BaseAWSLLM auth (credential resolution + SigV4) to litellm-core as a base provider by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33888
- feat(complexity-router): add return_raw_model_name toggle for response model field by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33875
- feat(mcp): always-on aggregate gateway DCR discovery front door by @tin-berri in https://github.com/BerriAI/litellm/pull/33174
- fix(langfuse): send v4 ingestion header for otel callback by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33907
- feat(ui): add configuration tabs to the Cost Optimization page by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33899
- test(e2e): guard destructive spend-log truncate behind an explicit opt-in by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33751
- chore(rust): migrate the litellm-rust workspace (core, ai-gateway, python-bridge) from Rust edition 2021 to edition 2024 by @vineetpuranik in https://github.com/BerriAI/litellm/pull/33940
- fix(fireworks_ai): restore Content-Type application/json header (fixes 415) by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33929
- feat(spend): raise /spend/logs/v2 page_size cap to 1000 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33994
- feat(mcp): identity-only session tokens for the gateway DCR front door by @tin-berri in https://github.com/BerriAI/litellm/pull/33182
- test(e2e): cover key regeneration rotating to a working new key by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34000
- test(e2e): cover tag creation persisting for spend categorization by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34018
- test(e2e): cover organization deletion removing it from /organization/info by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34009
- perf(bedrock): audio transcription via rust core (py->rust bridge) by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33990
- chore(ci): retire daily OSS branches in favor of litellm_internal_staging by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34030
- test(e2e): cover model update persisting to /model/info by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34017
- test(e2e): cover key block persisting to /key/info by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34014
- test(e2e): cover created team appearing in /team/list by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34015
- test(e2e): cover created user appearing in /user/list by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34016
- test(e2e): cover team update persistence via /team/info by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33997
- feat(bedrock): forward bedrock_tags to CreateModelInvocationJob for batch jobs by @mateo-berri in https://github.com/BerriAI/litellm/pull/33733
- test(e2e): cover model registration persistence in /model/info by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33996
- test(e2e): cover user update persistence via /user/info by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33998
- test(proxy): make model_info endpoint tests hermetic to kill an order/merge-skew flake by @mateo-berri in https://github.com/BerriAI/litellm/pull/34037
- chore(e2e): prune the non-deterministic perf.latency SLO coverage cell by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34024
- fix(ui): hide guardrail group headers when only one group has entries by @yuneng-berri in https://github.com/BerriAI/litellm/pull/33885
- test(e2e): cover model deletion removing it from the catalog by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34006
- test(e2e): cover organization update persistence via /organization/info by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34010
- test(e2e): cover team deletion persistence and key revocation by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33999
- test(e2e): cover user deletion removing it from user inventory by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34007
- test(e2e): cover created key appearing in /key/list inventory by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34008
- fix(cache): make in-memory and disk cache increments atomic by @yucheng-berri in https://github.com/BerriAI/litellm/pull/34013
- test(e2e): add reliability suite covering fallback, timeout, and cache behavior by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34023
- test(true_rabbit): cover passthrough headers, batch assume-role, gemini, vllm, bedrock guardrails, batch rate-limit mapping by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/33843
- fix(anthropic): only inject cache_control when the request carries none by @tin-berri in https://github.com/BerriAI/litellm/pull/33886
- feat(mcp): support MCP servers on the Anthropic /v1/messages API by @tin-berri in https://github.com/BerriAI/litellm/pull/33631
- feat(mcp): migrate client_credentials (M2M) onto the v2 resolver arm by @tin-berri in https://github.com/BerriAI/litellm/pull/32259
- fix(router): stop custom model_info leaking onto shared backend cost map key by @mateo-berri in https://github.com/BerriAI/litellm/pull/34041
- perf(streaming): build per-chunk Delta directly instead of setattr/delattr churn by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33992
- refactor(mcp): consolidate exception-tree walkers into one shared faults traversal by @tin-berri in https://github.com/BerriAI/litellm/pull/33183
- fix(budget): reset users/teams whose budget_reset_at is NULL by @jyeung-r7 in https://github.com/BerriAI/litellm/pull/33623
- perf(core): fast-path SafeAttributeModel.delattr for declared fields by @yassin-berriai in https://github.com/BerriAI/litellm/pull/33993
- fix(auth): set budget_reset_at when JWT upsert seeds a budget_duration by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34050
- fix(proxy/auth): handle tz-aware temp_budget_expiry by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33840
- fix(vertex,azure): model-aware mid-conversation system for Claude /v1/messages by @mateo-berri in https://github.com/BerriAI/litellm/pull/33807
- fix(auth): apply temp_budget_increase for cache-hit keys by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33841
- fix(agents): allow optional securityScheme fields so /public/agent_hub does not 500 by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33897
- build(deps-dev): bump js-yaml to 4.3.0 and brace-expansion to 5.0.7 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34056
- refactor(ui): migrate credentials table onto shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34053
- fix(cli): stable port and persisted master key for lite autoroute up by @tin-berri in https://github.com/BerriAI/litellm/pull/34026
- fix(mcp): return the DCR client's own redirect_uris to stop the /callback self-redirect loop by @tin-berri in https://github.com/BerriAI/litellm/pull/33756
- feat: add deepkeep as custom guardrail by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33844
- fix(router): propagate capability flags to shared backend cost map key by @mateo-berri in https://github.com/BerriAI/litellm/pull/34047
- fix(mcp): add Google Sheets, Drive, Calendar, and Docs to the OpenAPI registry by @tin-berri in https://github.com/BerriAI/litellm/pull/34059
- fix(bedrock_mantle): hoist Codex additional_tools input items to top-level tools by @lyb0307 in https://github.com/BerriAI/litellm/pull/33228
- fix(bedrock_mantle): gate unsupported service_tier on drop_params for the Responses API by @mateo-berri in https://github.com/BerriAI/litellm/pull/34058
- feat(proxy): auto-enable drop_params for Codex user agents by @mateo-berri in https://github.com/BerriAI/litellm/pull/34068
- refactor(ui): migrate available teams table onto shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34070
- fix(ui): serve /ui/assets from the nginx image instead of SPA fallback by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34066
- feat(gemini): day-0 pricing for gemini-3.6-flash and gemini-3.5-flash-lite by @mateo-berri in https://github.com/BerriAI/litellm/pull/34106
- refactor(ui): migrate audit logs table onto shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34080
- refactor(ui): migrate organizations table onto shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34081
- refactor(ui): migrate memory table onto shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34079
- refactor(ui): migrate access groups table to shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34078
- fix(model_armor): sanitize error details by default by @yucheng-berri in https://github.com/BerriAI/litellm/pull/33908
- refactor(ui): migrate agents table onto the shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34089
- fix(ui): add tooltip to the Active key status badge by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34109
- fix(interactions): add queued to the Interaction status enum by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34135
- ci(image-scan): match Python packages against CPE data by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34136
- chore(deps): bump pypdf to 6.14.2 and pyasn1 to 0.6.4 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34148
- feat(budgets): add configurable budget_reset_time of day by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31007
- feat(ui): surface key budget_reset_at in key info and keys table by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34113
- fix(a2a): accept semver protocolVersion values like 0.3.0 in agent cards by @mateo-berri in https://github.com/BerriAI/litellm/pull/34154
- feat(ui): add block/unblock key action to key info page by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34116
- fix(mcp): attach resolved OAuth credentials to OpenAPI spec_path tool calls by @tin-berri in https://github.com/BerriAI/litellm/pull/34063
- fix(e2e): use EndpointsClient.proxy after Gateway to ProxyClient rename by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34127
- refactor(auth): derive temp budget increase without mutating the token by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34121
- test(e2e): add Other suite and Guardrails coverage incl. an MCP tool-call guardrail by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34149
- fix(mcp): let an admin-pinned issuer drive OAuth discovery for url-less servers by @tin-berri in https://github.com/BerriAI/litellm/pull/34065
- fix(router): stop per-deployment num_retries from double-counting as provider max_retries by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34129
- fix(e2e): pin harness Python and surface proxy boot crash output by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34157
- fix(proxy): stop save_config from snapshotting environment_variables into the DB by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34119
- fix(ui): stop cloning body-carrying requests into stream uploads in fetchClient middleware by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34122
- fix(ui): distinguish response cache from provider prompt caching by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34138
- fix(ui): bundle provider logos as static imports and unify fallback in Logo component by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34125
- refactor(ui): migrate inline provider logo lookups to the shared Logo component by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34141
- test(e2e): cover team management routes for Management/UI coverage by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34115
- test(e2e): cover key management routes for Management/UI coverage by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34114
- test(e2e): cover budget, customer, user and org routes for Management/UI coverage by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34117
- fix(router): honor request-level num_retries over global litellm_settings.num_retries by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34124
- test(e2e): cover model, tag and access group routes for Management/UI coverage by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34118
- feat(proxy): make DB config-reload interval configurable via config.yaml and UI by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34130
- feat(ui): add controlled row selection to the shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34167
- feat(mcp): store the enterprise IdP identity assertion at SSO login for EMA egress by @tin-berri in https://github.com/BerriAI/litellm/pull/34072
- chore(deps): bump gitpython to 3.1.52 in uv.lock by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34168
- feat(ui): add react-hook-form + zod form infrastructure by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34170
- chore(tests): replace a customer name and domain with neutral placeholders by @mateo-berri in https://github.com/BerriAI/litellm/pull/34172
- refactor(ui): migrate MCP, callback, guardrail, SSO, and search tool logos to the shared Logo component by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34169
- fix(ui): stop dashboard key-edit form 403ing on non-budget saves by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34112
- fix(ui): harden provider logo map typing and bundled asset guard by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34163
- fix(proxy): populate user_email on UserAPIKeyAuth for JWT auth by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34174
- test(e2e): cover config and misc management routes for Management/UI coverage by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34120
- test(e2e): add Azure AI Foundry and Anthropic /v1/messages coverage for the Rust bridge by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34021
- test(ui): run vitest unit tests in GitHub Actions and fix stale key-info tests by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34175
- refactor(ui): migrate users and model health checks tables onto the shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34182
- fix(ui): restore guardrail_info_helpers exports in GuardrailsPanel test mock by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34197
- chore(ui): bump sharp to 0.35.x via npm override by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34193
- refactor(ui): migrate Tool Policies table onto the shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34176
- chore: bump litellm-proxy-extras 0.4.79 -> 0.4.80, litellm 1.94.0 -> 1.95.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34199
- feat(rust): honor pre-computed Entra ID auth for Azure /messages by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34107
- fix(rust): route agentic-hook /messages requests to Python for all stream modes by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34126
- fix(e2e): drop httpbin.org from passthrough headers test, use real Anthropic by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34159
- test(e2e): cover 12 non-core LLM coverage registry cells by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34123
- test(logging): pin compression_savings in the gcs pubsub spend log fixture by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34204
- docs: add TLDR section to PR template by @mateo-berri in https://github.com/BerriAI/litellm/pull/34203
- (Security) - Prevent potential provider key exposure through URL-valued model destinations and fallbacks by @yucheng-berri in https://github.com/BerriAI/litellm/pull/34189
- docs(issue-template): ask for a numbered list of reproduction steps by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34207
- test(ui): fix key and credential e2e specs after the overflow menu migrations by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34206
- test(e2e): add live A2A agent e2e suite by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34052
- fix(ui): reflect REDIS_* env cache config and stop the UI overwriting the stored password by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34160
- fix(ui): surface env-var-sourced theme and logging-callback settings by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34156
- test(musty_leopard): cover customer chat/messages cost + streaming paths by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34164
- chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34200
- test(e2e): add weekly session-anomaly load test against real providers by @mateo-berri in https://github.com/BerriAI/litellm/pull/34166
- fix(bedrock): emit Nova Sonic realtime session.created on connect and session.updated on session.update by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34133
- feat(guardrails): add only_scan_new_messages for per-session incremental scanning by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33278
- fix(proxy): share CLI SSO login sessions across workers without enable_redis_auth_cache by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33261
- test(e2e): move Admin UI Playwright suite to tests/e2e/ui by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34196
- fix(scim): use members_with_roles as the source of truth for group membership by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34162
- fix(scim): sync team roster and dedup teams for existing-user email upsert by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34183
- fix(proxy): raise dashboard session budget default to $1 and make it configurable in config and Admin UI by @tin-berri in https://github.com/BerriAI/litellm/pull/34146
- fix(scim): prune deleted user from teams' members_with_roles by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34180
- test(e2e): fail the run when a Rust gateway silently serves /messages through Python by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34208
- fix(team): make team member add atomic to prevent concurrent-add member loss by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34185
- fix(ui): surface SSO and SMTP settings supplied as process env vars by @tin-berri in https://github.com/BerriAI/litellm/pull/33576
- fix(scim): parse membership id from filtered PATCH path when value omitted by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34181
- fix(ui): remove misleading os.environ tooltip from logging settings by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34305
- fix(anthropic): strip uniqueItems + other unsupported array/object constraints from output_format schema by @mateo-berri in https://github.com/BerriAI/litellm/pull/34313
- fix(e2e): satisfy basedpyright in test_session_anomaly so the e2e lint gate passes by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34288
- refactor(proxy): type the PATCH /team/{team_id} request body by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34195
- feat(ui): edit fallback chains from router settings by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/32841
- fix(mcp): use official Google Drive streamable HTTP MCP server by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34322
- refactor(ui): migrate api-reference to shadcn by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34263
- refactor(ui): migrate prompts list page to shadcn by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34289
- refactor(ui): migrate old-usage to shadcn by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34304
- refactor(ui): migrate transform-request to shadcn by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34303
- chore(ui): bump next to 16.2.11 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34329
- test(e2e): cover key max_budget blocks on personal, team, and team-member keys by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33895
- fix(tests): remove importlib.reload of http_handler that breaks client injection in later tests by @mateo-berri in https://github.com/BerriAI/litellm/pull/34336
- test(e2e): require a cache-hit row instead of skipping when absent by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34283
- fix(mcp): fall through to an ephemeral DCR mint when passthrough authorize has no client_id by @tin-berri in https://github.com/BerriAI/litellm/pull/33884
- ci: run UI unit tests on a 16-core runner by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34330
- test(e2e): induce spend failure row deterministically instead of skipping by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34282
- chore(ui): add filename, size, JSX-handler, prefer-const, and antd lint rules by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34341
- fix(responses): preserve reasoning through prompt hooks by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33422
- fix(budget): resolve word-form budget_duration so it no longer silently resets daily by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34250
- fix(bedrock): include type in tool_choice disable_parallel_tool_use config for Converse by @mateo-berri in https://github.com/BerriAI/litellm/pull/34347
- fix(autoroute): discover models via /v1/models so an AI-API-only key works by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34259
- feat(ui): give each Models + Endpoints tab its own path by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34327
- feat(organization): add RESTful PATCH /v2/organization/{organization_id} by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/32350
- refactor(ui): migrate search-tools info view to shadcn by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34323
- fix(docker): bake non_root prisma engines at /opt/prisma so migrations run offline for any uid by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34325
- fix(anthropic): strip all remaining output_format schema keywords rejected by Anthropic by @mateo-berri in https://github.com/BerriAI/litellm/pull/34319
- fix(sagemaker): forward stream events as they arrive to cut TTFT by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34338
- test(e2e): cover key budget_duration resets on personal, team, and team-member keys by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33896
- feat(mcp): admit gateway DCR session bearers at the aggregate /mcp scope by @tin-berri in https://github.com/BerriAI/litellm/pull/33190
- fix(mcp): log actionable OAuth discovery failures for misconfigured server urls by @tin-berri in https://github.com/BerriAI/litellm/pull/34225
- refactor(ui): migrate workflow runs to shadcn by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34370
- refactor(ui): migrate models and endpoints table onto the shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34363
- test(e2e): drive a real Linear OAuth MCP through chat completions under both ingress headers by @tin-berri in https://github.com/BerriAI/litellm/pull/33787
- refactor(ui): migrate request logs table onto the shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34343
- feat(ui): rebuild Organization Settings on react-hook-form + zod with a dirty-field PATCH by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34324
- refactor(e2e): drop require_env, read os.environ where a cred is used by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34413
- refactor(mcp): delete unreachable v1 OBO handler and gate REST OAuth on v2 resolver by @tin-berri in https://github.com/BerriAI/litellm/pull/34407
- feat(cost-optimization): add spend-by-tool and cache leakage views by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33978
- refactor(ui): migrate agents to shadcn by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34365
- refactor(ui): extract shared tab-routing helpers and adopt them in Models + Endpoints by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34435
- feat(proxy): add overwrite_user_with_key_hash to stamp outgoing user param with key hash by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34417
- fix(ui): find logs by request id across pages and dates (LIT-3981) by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31743
- fix(proxy): reject failed atomic budget reservations under fail_closed_budget_enforcement by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34429
- ci: only run CodSpeed benchmarks on backend changes by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34345
- fix(cost_tracking): map OpenAI cache_write_tokens for prompt cache creation billing by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34046
- fix(proxy): restore atomic user upsert when adding team members by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34457
- chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34450
- fix(ui): keep cache leakage time range picker inline at narrow widths by @tin-berri in https://github.com/BerriAI/litellm/pull/34439
- feat(ui): show in the log drawer and session sidebar when an auto-router served a request by @tin-berri in https://github.com/BerriAI/litellm/pull/34434
- refactor(ui): migrate memory page to shadcn by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34366
- refactor(ui): migrate budgets, skills, ui-theme to shadcn by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34465
- refactor(ui): migrate access-groups, vector-stores, organizations to shadcn by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34466
- refactor(ui): migrate logging-and-alerts, caching, policies to shadcn by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34468
- feat(ui): standalone /connect route for MCP OAuth, decoupled from Chat UI flag by @tin-berri in https://github.com/BerriAI/litellm/pull/34334
- refactor(ui): migrate mcp-servers, tag-management, tool-policies to shadcn by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34469
- test(e2e): pin the a2a bridge agent's Anthropic key so message/send works by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34512
- fix(guardrails/model_armor): handle None metadata in post_call _process_response (#34390) by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34405
- feat(anthropic): add Claude Opus 5 by @mateo-berri in https://github.com/BerriAI/litellm/pull/34518
- chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34519
- test(a2a): assert the property agent returns listings, not just non-empty text by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34515
- fix(logging): stop scheduling sync failure_handler concurrently with async_failure_handler by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34306
- fix(vertex): incrementally parse accumulated Gemini stream JSON to prevent multi-value wedge by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34320
- test: replace deprecated gpt-5-codex with gpt-5.3-codex by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34520
- fix(gateway): install bedrock-realtime extra for Nova Sonic realtime by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34426
- feat(proxy): add SAML 2.0 SSO for the admin UI by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31429
- feat(guardrails): add run_in_parallel opt-in for concurrent pre_call and post_call guardrails by @noahnistler in https://github.com/BerriAI/litellm/pull/33770
- fix: handle explicit outputInfo: null in Vertex AI batch response by @yucheng-berri in https://github.com/BerriAI/litellm/pull/34473
- fix(otel): keep an MCP tool call in one trace, anchored to its own request by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34537
- fix(ui): keep a key's MCP toolsets when saving an edit by @tin-berri in https://github.com/BerriAI/litellm/pull/34452
- fix(ui): bind key duration input to one Form.Item so pre-filled expiry submits by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34521
- feat(ui): migrate the Create Organization form to shadcn and react-hook-form by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34552
- refactor(ui): derive the dashboard object_permission type from the generated schema by @tin-berri in https://github.com/BerriAI/litellm/pull/34454
- test(e2e): cover MCP access-group tool selection at key creation by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34480
- test: remove tests that mutation analysis proved assert nothing by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34475
- fix(ui): keep entity usage tabs aligned with their panels by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34573
- fix(guardrails): stop reporting a no-op guardrail as applied on passthrough by @tin-berri in https://github.com/BerriAI/litellm/pull/34411
- fix(proxy): return 400 instead of 500 for chat completions without messages by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34547
- fix(guardrails): keep guardrail information in spend logs when the caller sends its own metadata by @tin-berri in https://github.com/BerriAI/litellm/pull/34458
- fix(responses): strip include_usage from stream_options instead of dropping the param by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34549
- fix(guardrails): add /v1/messages support for Straiker plugin by @yucheng-berri in https://github.com/BerriAI/litellm/pull/34548
- fix(proxy/batches): resolve managed unified input_file_id to storage_url with ownership check before dispatch by @yucheng-berri in https://github.com/BerriAI/litellm/pull/34474
- fix(guardrails): derive tokens_saved when Headroom compression service omits it by @tin-berri in https://github.com/BerriAI/litellm/pull/34578
- refactor(ui): migrate routing groups table onto the shared DataTable by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34571
- fix(proxy): attribute org spend for team-linked credentials minted without org_id by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34577
- fix(proxy/batches): make managed-file resolution additive, restore fall-back for missing-row and lookup errors by @yucheng-berri in https://github.com/BerriAI/litellm/pull/34584
- fix(bedrock-mantle): backfill usage on non-streaming /v1/messages responses by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34446
- fix(proxy): cap /v1/tool/spend window at 30 days and bound every SpendLogs read by @tin-berri in https://github.com/BerriAI/litellm/pull/34582
- feat(passthrough): record cost and usage reported by the upstream target by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34590
- fix(logs): scope and bound the End User filter on the logs page by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34579
- feat(ui): deep-link virtual key detail view via ?key= query param by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34591
- revert(ui): return Models + Endpoints tabs to in-memory routing, keep the ?model drill-in by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34629
- fix(proxy): merge model-level guardrails before pre_call_hook by @hclsys in https://github.com/BerriAI/litellm/pull/29654
- fix(router): don't cool down parent deployment on advisor sub-call failure by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33792
- test(e2e): cover /vllm chat passthrough against a hosted backend by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34432
- test(e2e): point four suites at models the providers still serve by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34567
- test(e2e): make the bedrock guardrail test match the guardrail it points at by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34568
- fix(otel): stamp an MCP tool failure on the request that carried it by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34551
- test(e2e): set reasoning_effort=none for gpt-5.6 chat tool calls by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34569
- test(e2e): cover /v1/images/edits by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34476
- chore(deps): bump gitpython and postcss to advisory-clear versions by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34634
- fix(proxy): hash caller-supplied key in key update audit log object_id by @yucheng-berri in https://github.com/BerriAI/litellm/pull/34632
- test(e2e): cover /openai chat passthrough cost logging by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34470
- fix(proxy): global max_budget ignores budget_duration; enforce against the resettable proxy budget row by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33732
- fix(mcp): use a toolset row's stored tool name as written by @tin-berri in https://github.com/BerriAI/litellm/pull/34559
- fix(auth): route JWT default-team into memberships instead of the create payload by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/33082
- ci: drop the docker SERVER_ROOT_PATH e2e job for a unit test by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34642
- test: stop bedrock tool acompletion tests from making real network calls by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34644
- fix(proxy): stop litellm/proxy from shadowing installed packages on sys.path by @yassin-berriai in https://github.com/BerriAI/litellm/pull/34656
- fix(cost-optimization): swap methodology Collapse for a shadcn HoverCard by @tin-berri in https://github.com/BerriAI/litellm/pull/34598
- fix(ci): scope UI lint to the files a PR actually changed by @mateo-berri in https://github.com/BerriAI/litellm/pull/34600
- fix(mcp): stop leaking upstream server credentials in tool-call 403 by @tin-berri in https://github.com/BerriAI/litellm/pull/34340
- fix(batches): paginate managed batch list by unified_object_id cursor by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34192
- fix(e2e): stop tests from breaking the shared proxy for every suite after them by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34664
- fix(cost-optimization): anchor the savings line at a $0 range start by @tin-berri in https://github.com/BerriAI/litellm/pull/34453
- fix(bedrock): stop replaying expired Google OIDC tokens to STS on guardrail auth by @yucheng-berri in https://github.com/BerriAI/litellm/pull/34637
- chore: bump litellm-enterprise 0.1.51 -> 0.1.52, litellm-proxy-extras 0.4.80 -> 0.4.81 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34669
- chore(ui): rebuild Next.js build artifacts by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34671
- fix(azure_ai): advertise 1M context window for Claude Opus 4.6+ on Foundry by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34556
- feat(mcp): send RFC 8707 resource indicators on upstream OAuth legs by @tin-berri in https://github.com/BerriAI/litellm/pull/34265
- fix(guardrails): resolve judge_model credentials via lazy Router lookup in llm_as_a_judge by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34509
- style(ui): match MCP Servers tabs to the dashboard's line tab pattern by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34685
- fix(ui): center vertical toolbar dividers by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34684
- fix(ui): restore the Add MCP Server dialog size and header spacing by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34679
- fix(ui): truncate long team names in the models table team dropdown by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34689
- fix(e2e/ui): resolve dashboard base URL from env instead of hardcoding localhost by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34739
- chore(deps): bump gitpython to 3.1.55 and brace-expansion to 5.0.8 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34798
- fix(guardrails): preserve cache_control breakpoints in compresr write-back by @tin-berri in https://github.com/BerriAI/litellm/pull/34660
- fix(install): pass an explicit Python version request to uv tool install by @tin-berri in https://github.com/BerriAI/litellm/pull/34750
- refactor(management): move the logs end-user filter onto /management/v1 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34691
- fix: match exact class in callback dedup so a custom subclass does not block a built-in logger by @yucheng-berri in https://github.com/BerriAI/litellm/pull/34804
- fix(prometheus): populate cache write token metrics for OpenAI-style usage by @yucheng-berri in https://github.com/BerriAI/litellm/pull/34803
- fix: backport the management/v1 end-user filter and four dashboard fixes onto rc/1.95.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34811
- chore(typing): clear 2.7k basedpyright Any errors across 15 hotspot files by @mateo-berri in https://github.com/BerriAI/litellm/pull/34745
- test(e2e): stop racing control-plane writes across the mcp, a2a, guardrail and passthrough suites by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34833
- fix(ui): validate default team values in Default User Settings by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34815
- fix(proxy): sanitize per-key callback config out of logged metadata by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32583
- fix(proxy): roll up tool spend daily instead of scanning SpendLogs by @tin-berri in https://github.com/BerriAI/litellm/pull/34675
- fix(responses_bridge): keep one chat completion id per stream and always stream completed responses by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34539
- fix(guardrails): compress content-parts messages in headroom guardrail (Anthropic traffic) by @tin-berri in https://github.com/BerriAI/litellm/pull/34586
- fix(router): release the pre-routing strategy slot when a deployment is replaced or deleted by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/34564
- fix(guardrails): classify all 4xx HTTPException guardrail blocks as intervened by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33821
- chore: rebuild Admin UI bundle for release by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34859
- test: unstale the reasoning-effort grid count and the responses bridge test by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34868
- test(e2e): realign Admin UI specs with the MCP dialog and keyless landing by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34870
- test(e2e): unblock the ui suite, fix the mcp registration race, park two known product bugs by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34853
- test(e2e): make MCP and prometheus e2e tests robust to data-plane sync lag by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34854
- Fix cache leakage card layout to keep date picker on right by @tin-berri in https://github.com/BerriAI/litellm/pull/34885
- fix(gateway): route /a2a through the gateway component by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34958
- fix(e2e): poll for both spend rows before asserting the cache-hit contract by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34968
- test(e2e): skip passthrough headers test until stage can route custom paths to provider creds by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/34980
- feat(ui): mark Cost Optimization as beta in the left nav by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34984
- fix(proxy): avoid DB outage during planned RDS IAM rotation by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/34749
- chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/34864
- test(e2e): bound the post-/model/new servable wait at 40s by @yuneng-berri in https://github.com/BerriAI/litellm/pull/35020
- test(e2e): poll MCP tools across multi-worker lag (#35047) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/35049
- chore(release): backport [#35271] to rc/1.95.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/35299
- chore(release): sync rc/1.95.0 with the v1.95.0-rc.1 main SHA by @yuneng-berri in https://github.com/BerriAI/litellm/pull/35414
- fix(ui): land general login on the keys dashboard, send MCP consent to /ui/connect (backport [#35523] to rc/1.95.0) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/35552
New Contributors
- @vineetpuranik made their first contribution in https://github.com/BerriAI/litellm/pull/33940
- @jyeung-r7 made their first contribution in https://github.com/BerriAI/litellm/pull/33623
- @lyb0307 made their first contribution in https://github.com/BerriAI/litellm/pull/33228
Full Changelog: https://github.com/BerriAI/litellm/compare/v1.94.0...v1.95.0