Verify Docker Image Signature
All LiteLLM Docker images are signed with cosign. This release is signed with the key introduced in commit e82a3c6.
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 published signing key:
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/e82a3c646908ba0a6ee0beddc4310d7a6cac4065/cosign.pub \
ghcr.io/berriai/litellm:v1.110.0-dev.2Verify 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:
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/v1.110.0-dev.2/cosign.pub \
ghcr.io/berriai/litellm:v1.110.0-dev.2Expected 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
- fix(router): record retries and fallback hops past a request's first logged failure by @narmstrong-berri in #50445
- feat(spend-logs): turn off prompt storage per key or team by @krrish-berri-2 in #50135
- fix(proxy)!: preserve Responses SSE event framing by @HootRock in #47980
- feat(azure_ai): add cohere-rerank-v5-pro and -fast from the Azure retail price feed by @devin-ai-integration[bot] in #50499
- fix(caching): don't cache or replay a reply that has no output by @PyExtreme in #50057
- fix(gemini): add Gemini 2.5 Pro flex cache price above 200k tokens by @devin-ai-integration[bot] in #50480
- fix(azure): align chat-latest retirement metadata with its documented alias by @devin-ai-integration[bot] in #50509
- fix(vertex_ai): authenticate Vertex AI pass-through requests once by @quietjules in #48942
- fix(redis): share one native circuit breaker between RedisCache and the Rust stores by @yujonglee-berri in #50473
- fix(azure): add data zone rows for gpt-realtime-2.1, gpt-realtime-2.1-mini and gpt-realtime-1.5 by @devin-ai-integration[bot] in #50519
- fix(anthropic): preserve streamed tool argument fragments verbatim by @mateo-berri in #50470
- fix(vertex_ai): return 400 instead of 500 when Gemini image edit has no image by @MukeshK17 in #50244
- refactor: declare each lazy litellm attribute once and resolve them through one function by @mateo-berri in #50523
- fix(cost-map): sync OpenAI fine-tune and Codestral 2405 shutdown dates by @devin-ai-integration[bot] in #50529
- fix(utils): drop Anthropic-only output_config under drop_params on providers that do not read it by @ryan-crabbe-berri in #50542
- feat(cost-map): read alias_of pointer rows in the catalog and the loader by @kerry-berri in #50512
- feat(cost-map): add moonshot/kimi-k3.1-pro-highspeed pricing (#50521) by @thinhnx128 in #50538
- refactor: read lazy attributes with getattr instead of a TypedDict wrapper by @mateo-berri in #50543
- fix(chatgpt): round-trip encrypted reasoning through /v1/messages by @Hugo-DDT in #49076
- feat(cost-map): move -latest model aliases into the cost map by @kerry-berri in #50491
- fix(cost-map): update Together Qwen3.7-Max pricing and add Rnj-1 Instruct by @devin-ai-integration[bot] in #50548
- feat(guardrails): add prebuilt credential patterns for OpenAI, Anthropic, and Gemini by @yogeshwaran10 in #50268
- fix(anthropic): reasoning_effort "none" disables thinking on Claude models that think by default by @ryan-crabbe-berri in #50541
- test(e2e): add a Codex row where a sub-agent must read the task its parent hands it by @ryan-crabbe-berri in #50494
- feat(ui): set deployment weights in key and team router settings by @joshua-berri in #50552
- fix(mcp): derive MCP bridge and session keys with the FIPS provider's KBKDF by @yucheng-berri in #50032
- fix(responses): surface mid-stream upstream errors that arrive without an event type by @ryan-crabbe-berri in #50466
- test(integration): give each kill-burst its own prompts so cached control replies cannot stand in for late traffic by @mateo-berri in #50569
- test(integration): budget proxy restart tests from calibrated boot time by @mateo-berri in #49761
- fix(otel): name the routed model on auto-router LLM spans by @yucheng-berri in #50498
- fix(proxy): hold DB_RECONCILE_LOCK around credential create, update and delete by @kerry-berri in #50551
- fix(anthropic): refresh the WIF bearer token on the connection error retry by @kerry-berri in #50570
- test(translation): expect redacted thinking blocks on Azure and Bedrock Mantle messages after #49076 by @devin-ai-integration[bot] in #50576
- refactor(ui): clear hardcoded English from dashboard JSX by @yuneng-berri in #50575
- fix(anthropic): exchange Google identity tokens again on refresh and read oidc/ references out of ANTHROPIC_IDENTITY_TOKEN by @kerry-berri in #50583
- test(proxy): delete 28 dead skipped tests in test_key_generate_prisma.py by @yuneng-berri in #50550
- fix(router): a cancelled or retried attempt releases its io-token reservation and least-busy count by @joshua-berri in #50486
- feat(proxy): per-request header opts a stream into usage.cost without the global include_cost_in_streaming_usage flag by @kerry-berri in #50574
New Contributors
- @HootRock made their first contribution in #47980
- @PyExtreme made their first contribution in #50057
- @MukeshK17 made their first contribution in #50244
- @thinhnx128 made their first contribution in #50538
- @Hugo-DDT made their first contribution in #49076
Full Changelog: v1.110.0-dev.1...v1.110.0-dev.2