# LiteLLM v1.97.0-dev.2 - Product: LiteLLM (https://whatsnew.fyi/product/litellm) - Vendor: BerriAI - Date: 2026-08-07 - Version: v1.97.0-dev.2 - Original notes: https://github.com/BerriAI/litellm/releases/tag/v1.97.0-dev.2 - Permalink: https://whatsnew.fyi/product/litellm/releases/v1.97.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'. --- - **added** — Add role capability gating to UI and migrate Tool Policies route - **added** — Make reminder marker pair configurable in auto-router - **added** — Derive a default auto-router savings baseline from the hardest tier in spend tracking - **added** — Let operators rename the four complexity tiers in complexity_router - **added** — Let operators replace the LLM classifier's system prompt in auto-router - **added** — Make the gateway middleware the source of truth for successful requests in SGR - **changed** — Inject the fetch client's base URL instead of reading it at import in UI - **changed** — Perform python, dashboard, and gen-api checks concurrently in pre-commit - **fixed** — Name enable_jwt_auth when a JWT-shaped key is rejected - **fixed** — Update anthropic model presets in UI - **fixed** — Switch to the dashboard node floor via nvm or fnm in bootstrap - **fixed** — Self-heal handler clients closed after cache eviction - **fixed** — Keep OpenAI prompt cache token details through usage reassembly in cost tracking - **fixed** — Bill gpt-5.6 prompt cache reads at the cache read rate - **fixed** — Account for Responses API usage in batches - **fixed** — Skip rows without file objects in managed-files - **fixed** — Redact fallback tracebacks at the call site and cover the sync deferred stream in router - **fixed** — Recover from an interrupted Prisma toolchain install in migrations - **fixed** — Give proxy_admin_viewer read parity with proxy_admin in proxy - **fixed** — Make the env-key doc gate see get_secret_bool reads in CI - **fixed** — Keep the connected DB client when a startup health check fails in proxy ##### 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.97.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.97.0-dev.2/cosign.pub \ ghcr.io/berriai/litellm:v1.97.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 * feat(ui): add role capability gating, migrate Tool Policies route by @yuneng-berri in https://github.com/BerriAI/litellm/pull/35812 * refactor(ui): inject the fetch client's base url instead of reading it at import by @yuneng-berri in https://github.com/BerriAI/litellm/pull/35802 * chore: remove unused .flake8 config and flake8 dev dependency by @mateo-berri in https://github.com/BerriAI/litellm/pull/35888 * chore: stop advising pre-commit and bootstrap by @mateo-berri in https://github.com/BerriAI/litellm/pull/35884 * fix(auth): name enable_jwt_auth when a JWT-shaped key is rejected by @yassin-berriai in https://github.com/BerriAI/litellm/pull/35831 * feat(auto-router): make reminder marker pair configurable by @akapur99 in https://github.com/BerriAI/litellm/pull/35874 * fix(UI): update anthropic model presets by @tin-berri in https://github.com/BerriAI/litellm/pull/35896 * fix(bootstrap): switch to the dashboard node floor via nvm or fnm by @mateo-berri in https://github.com/BerriAI/litellm/pull/35895 * perf(pre-commit): run python, dashboard, and gen-api checks concurrently by @mateo-berri in https://github.com/BerriAI/litellm/pull/35903 * feat(spend): derive a default auto-router savings baseline from the hardest tier by @tin-berri in https://github.com/BerriAI/litellm/pull/35907 * fix(http_handler): self-heal handler clients closed after cache eviction by @mateo-berri in https://github.com/BerriAI/litellm/pull/35862 * fix(cost_tracking): keep OpenAI prompt cache token details through usage reassembly by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34812 * fix(cost): bill gpt-5.6 prompt cache reads at the cache read rate by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/34957 * fix(batches): account for Responses API usage by @rimysore in https://github.com/BerriAI/litellm/pull/35367 * ci: retry Codecov uploads and stop failing jobs on OIDC token flakes by @mateo-berri in https://github.com/BerriAI/litellm/pull/35251 * feat(complexity_router): let operators rename the four complexity tiers by @akapur99 in https://github.com/BerriAI/litellm/pull/35893 * chore(lint): zero stale ruff and LIT headroom and strip inert type: ignore comments by @mateo-berri in https://github.com/BerriAI/litellm/pull/35928 * chore(lint): zero out seven more purely local basedpyright rules by @mateo-berri in https://github.com/BerriAI/litellm/pull/35927 * chore(ui): zero stale headroom on local dashboard eslint budgets by @mateo-berri in https://github.com/BerriAI/litellm/pull/35929 * fix(managed-files): skip rows without file objects by @rimysore in https://github.com/BerriAI/litellm/pull/35365 * fix(router): redact fallback tracebacks at the call site and cover the sync deferred stream by @yassin-berriai in _[Truncated at 4000 characters — full notes: https://github.com/BerriAI/litellm/releases/tag/v1.97.0-dev.2]_