# LiteLLM v1.99.0-rc.1 - Product: LiteLLM (https://whatsnew.fyi/product/litellm) - Vendor: BerriAI - Date: 2026-08-23 - Version: v1.99.0-rc.1 - Original notes: https://github.com/BerriAI/litellm/releases/tag/v1.99.0-rc.1 - Permalink: https://whatsnew.fyi/product/litellm/releases/v1.99.0-rc.1 - 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** — Hash raw API keys before persisting to spend logs - **fixed** — Match group members by SSO identity or email before creating a placeholder - **fixed** — Match streamed Messages usage cost to the recorded spend - **fixed** — Price partial-stream spend rows at the real model and keep prompt and cache fields - **fixed** — Price gpt-image-2 per size and quality from request params for fal_ai - **fixed** — Populate team member emails missing from the roster snapshot - **fixed** — Forward provider response headers on Bedrock chat completions - **fixed** — Price swe-1.7 at the standard tier and add swe-1.7-lightning for Cognition - **fixed** — Send the inference component header and honor hf_model_name for sagemaker_chat - **fixed** — Make per-model budgets track spend, enforce, and report the same counter - **fixed** — Bound each spend-log write statement by row count as well as bytes - **added** — Add router_model_name to auto-routed response bodies - **fixed** — Preserve Bedrock Mantle validation errors in responses - **fixed** — Omit thinking.type=disabled for always-on thinking Claude models - **fixed** — Read batch records the same way the upload validation does - **fixed** — Scan batch records with the content hooks that are not guardrails - **fixed** — Require an operator-declared id on a config.yaml reservation for PTU - **fixed** — Never retract a flat charge for a deployment the run cannot see for PTU - **fixed** — Deny the interactive dcr_bridge authorize for a user without server access - **fixed** — Map Bedrock Mantle context overflow to ContextWindowExceededError - **fixed** — Run policy pipelines when the caller sends its own metadata - **fixed** — Convert messages to contents in Gemini count_tokens for Vertex AI - **fixed** — Don't log 'Could not identify azure model' when the deployment name resolves from the cost map - **fixed** — Drive auto-router usage from the shared cost-optimization time picker in UI - **added** — Add per-key Savings tab to key detail page in UI - **fixed** — Reset only the failed node on a cluster client timeout, not the whole client for Redis ##### 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.99.0-rc.1 ``` **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.99.0-rc.1/cosign.pub \ ghcr.io/berriai/litellm:v1.99.0-rc.1 ``` 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(scim): match group members by SSO identity or email before creating a placeholder by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/37686 * fix(cost): match streamed Messages usage cost to the recorded spend by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/35114 * test: enforce PT012 so a pytest.raises block cannot hide dead assertions by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/37748 * fix(streaming): price partial-stream spend rows at the real model and keep prompt and cache fields by @mateo-berri in https://github.com/BerriAI/litellm/pull/37734 * fix(fal_ai): price gpt-image-2 per size and quality from request params by @mateo-berri in https://github.com/BerriAI/litellm/pull/37751 * test: enforce PT011 and PT014 so a broad pytest.raises cannot pass on the wrong error by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/37769 * fix: populate team member emails missing from the roster snapshot by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/37759 * fix(bedrock): forward provider response headers on chat completions by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/37003 * fix(cognition): price swe-1.7 at the standard tier, add swe-1.7-lightning by @mateo-berri in https://github.com/BerriAI/litellm/pull/37763 * fix(sagemaker_chat): send the inference component header and honor hf_model_name by @mateo-berri in https://github.com/BerriAI/litellm/pull/37766 * fix(spend-tracking): hash raw api keys before persisting to spend logs by @nitishagar in https://github.com/BerriAI/litellm/pull/30736 * fix(proxy): make per-model budgets track spend, enforce, and report the same counter by @yassin-berriai in https://github.com/BerriAI/litellm/pull/37736 * fix(spend): bound each spend-log write statement by row count as well as bytes by @yassin-berriai in https://github.com/BerriAI/litellm/pull/37758 * feat(proxy): add router_model_name to auto-routed response bodies by @tin-berri in https://github.com/BerriAI/litellm/pull/37725 * fix(responses): preserve Bedrock Mantle validation errors by @uuzzrm in https://github.com/BerriAI/litellm/pull/36580 * fix: omit thinking.type=disabled for always-on thinking Claude models by @tin-berri in https://github.com/BerriAI/litellm/pull/37510 * test(lint): clear the two PT011/PT012 violations left on the test tree by @tin-berri in https://github.com/BerriAI/litellm/pull/37864 * fix(proxy): read batch records the same way the upload validation does by @yucheng-berri in https://github.com/BerriAI/litellm/pull/37776 * fix(proxy): scan batch records with the content hooks that are not guardrails by @yucheng-berri in https://github.com/BerriAI/litellm/pull/37786 * fix(ptu): require an operator-decl _[Truncated at 4000 characters — full notes: https://github.com/BerriAI/litellm/releases/tag/v1.99.0-rc.1]_