v1.96.0
📦 litellmView on GitHub →
✨ 10 features🐛 32 fixes🔧 18 symbols
Summary
This release introduces Docker image signature verification using cosign for enhanced security and includes numerous bug fixes and feature enhancements across various components like Prometheus, aiohttp, Vertex AI, Anthropic adapter, and the UI.
Migration Steps
- When verifying Docker images, use the pinned commit hash for stronger security: `cosign verify --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub ghcr.io/berriai/litellm:v1.96.0`
- Alternatively, use the release tag for convenience: `cosign verify --key https://raw.githubusercontent.com/BerriAI/litellm/v1.96.0/cosign.pub ghcr.io/berriai/litellm:v1.96.0`
✨ New Features
- Add service_tier label to Prometheus latency and spend metrics.
- Publish a generated JSON schema for model_prices_and_context_window.json.
- Split failed requests into their own series on the cache dashboard.
- Add shareable log links via log_id query param on the logs page.
- Deep link team detail page via ?team= query param.
- Deep link organization detail page via ?org= query param.
- Link organization teams to their team detail pages.
- Add qwen3.7-plus and qwen3.7-max to the Dashscope model cost map.
- Read base_url from persistent config file in CLI.
- Add a Grafana dashboard for the OTel GenAI metrics.
🐛 Bug Fixes
- Keep keep-alive connector config when an aiohttp session is rebuilt.
- Pin bundled postgres and redis to the bitnamilegacy images in Helm charts.
- Decide rawPredict passthrough streaming from the request body for Vertex AI.
- Translate stop_sequences and disabled thinking for non-Claude targets in the Anthropic adapter.
- Allow /v1/messages for JWT teams by default.
- Skip team model aliases that point at deleted deployments in the proxy.
- Report when a model write does not survive the post-write reload in the proxy.
- Reject model writes that corrupt an auto-router pseudo-model in the proxy.
- Serialize latency for non-chat responses in lowest-latency routing strategy.
- Preserve callback order in get_combined_callback_list.
- Honor explicit priority=0 in acompletion.
- Open the first content block with the real upstream type for Anthropic adapter reasoning-first streams.
- Stop provisioning nested group ids as internal users in SCIM.
- Size Object Permissions card grid by container width in UI.
- Allow /key/update to identify the key by key_alias in the proxy.
- Show public model names in usage breakdowns in UI.
- Point the navbar and sidebar logos at the dashboard home route in UI.
- Stop serving stale team model allowlist after /team/update in the proxy.
- Resolve named credentials on provider-only batch and files calls in the proxy.
- Drop duplicate Mapping import that fails ruff F811.
- Make OTLP export work against Grafana Cloud.
- Assert Content variants are identified by type, not by the discriminator keyword.
- Never write discovery results to the row, heal already-stamped rows, and retry failed discovery with backoff in MCP.
- Honor per-model gcs_bucket_name on managed-file read path for Vertex AI.
- Forward function_call id on Vertex Gemini 3+ tool turns.
- Lock in store_unified_file_id idempotency on batch retrieve for managed-files.
- Skip context caching when the cached block ends on a model turn for Vertex AI.
- Correct gpt-5.4-mini and gpt-5.4-nano token limits.
- Resolve managed batch/file deployment model_id to model name for team access checks.
- Capture the classifier request body in spend logs for complexity router.
- Clear basedpyright Any errors in proxy management endpoints.
- Clear basedpyright Any errors in proxy auth, repository.