# LiteLLM v1.96.0-dev.2 - Product: LiteLLM (https://whatsnew.fyi/product/litellm) - Vendor: BerriAI - Date: 2026-07-31 - Version: v1.96.0-dev.2 - Original notes: https://github.com/BerriAI/litellm/releases/tag/v1.96.0-dev.2 - Permalink: https://whatsnew.fyi/product/litellm/releases/v1.96.0-dev.2 - Labels: Pre-release What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **security** — Docker images are now signed with cosign for verification - **fixed** — Adjust gpt-5.6-terra and gpt-5.6-luna prices according to OpenAI's latest article - **fixed** — Stamp provider on embedding cache-hit spend logs - **fixed** — Run post_call guardrails on /v1/messages streaming via unified guardrail translation - **fixed** — Correct Kimi K2.5/K2.6/K2.7 max output token limits for fireworks_ai - **added** — Extend keyless gateway OAuth flow to per-server MCP URL paths - **fixed** — Request stream usage upstream by default and strip it from client streams - **changed** — Move the v3 limiter per-request stash off request metadata onto a ContextVar - **fixed** — Stop compressing the turn the model must act on in guardrails/headroom - **fixed** — Let the internal user and org forms save sub-cent budgets - **fixed** — Serve config guardrails from list and info endpoints without a DB and make their ids stable - **fixed** — Split mixed stream chunks by payload kind for Anthropic - **fixed** — Give ComplexityRouter LLM classifier prior-turn context - **added** — Mark the auto-router's own classifier calls in spend logs - **fixed** — Bind litellm_metadata by reference in function_setup so guardrail info reaches spend logs - **added** — Support SSE-KMS encryption params on both S3 logging paths - **fixed** — Preserve config-defined policies across DB sync and expose them via list APIs - **fixed** — Correct gpt-5.6 prices for openai, bedrock, and flex long context - **fixed** — Bill the fast service tier at the priority rate - **fixed** — Map all documented in-stream error codes to real HTTP statuses ##### Verify Docker Image Signature All LiteLLM Docker images are signed with [cosign](https://docs.sigstore.dev/cosign/overview/). Every release is signed with the same key introduced in [commit `0112e53`](https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0). **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.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: ```bash 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 _[Truncated at 4000 characters — full notes: https://github.com/BerriAI/litellm/releases/tag/v1.96.0-dev.2]_