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:
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
ghcr.io/berriai/litellm:v1.96.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.96.0-dev.2/cosign.pub \
ghcr.io/berriai/litellm:v1.96.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(pricing): adjust gpt-5.6-terra and gpt-5.6-luna prices according to OpenAI's latest article by @lihugang in #35258
- fix(caching): stamp provider on embedding cache-hit spend logs by @devin-ai-integration[bot] in #35282
- fix(proxy): run post_call guardrails on /v1/messages streaming via unified guardrail translation by @mateo-berri in #35260
- fix(fireworks_ai): correct Kimi K2.5/K2.6/K2.7 max output token limits by @devin-ai-integration[bot] in #35174
- feat(mcp)!: extend keyless gateway OAuth flow to per-server MCP URL paths by @tin-berri in #34856
- fix(proxy): request stream usage upstream by default and strip it from client streams by @mateo-berri in #35290
- refactor(rate-limits): move the v3 limiter per-request stash off request metadata onto a ContextVar by @mateo-berri in #35278
- test(e2e): skip the batch rate-limiter spend-row test pending LIT-5027 by @ryan-crabbe-berri in #35301
- fix(guardrails/headroom): stop compressing the turn the model must act on by @tin-berri in #35294
- fix(ui): let the internal user and org forms save sub-cent budgets by @ryan-crabbe-berri in #35302
- fix(guardrails): serve config guardrails from list and info endpoints without a DB and make their ids stable by @mateo-berri in #35259
- fix(anthropic): split mixed stream chunks by payload kind by @yucheng-berri in #35289
- fix: give ComplexityRouter LLM classifier prior-turn context (LIT-4981) by @tin-berri in #35185
- feat(spend-logs): mark the auto-router's own classifier calls by @tin-berri in #35300
- fix(logging): bind litellm_metadata by reference in function_setup so guardrail info reaches spend logs by @yucheng-berri in #35292
- feat(s3): support SSE-KMS encryption params on both S3 logging paths by @yucheng-berri in #35291
- fix(policy_engine): preserve config-defined policies across DB sync and expose them via list APIs by @mateo-berri in #35263
- test: fix order-dependent flake in passthrough guardrail call-type test by @mateo-berri in #35317
- fix(pricing): correct gpt-5.6 prices for openai, bedrock, and flex long context by @mubashir1osmani in #35270
- fix(cost): bill the fast service tier at the priority rate by @devin-ai-integration[bot] in #35320
- fix(responses): map all documented in-stream error codes to real HTTP statuses by @mateo-berri in #35307
- test(pricing): cover gpt-5.6 cache-cost plumbing and bedrock_mantle responses billing by @mateo-berri in #35324
- chore: promote staging to main by @mateo-berri in #35328
New Contributors
Full Changelog: v1.96.0-dev.1...v1.96.0-dev.2