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