v1.97.0-rc.1
Pre-release
Pre-release
·
15 commits
to litellm_internal_staging
since this release
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.97.0-rc.1Verify 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.97.0-rc.1/cosign.pub \
ghcr.io/berriai/litellm:v1.97.0-rc.1Expected 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(azure_sentinel): respect AZURE_AUTHORITY_HOST and derive the Azure Monitor audience per cloud by @yucheng-berri in #36137
- fix(bedrock): pass SSE-KMS key through to the batch input-file S3 upload by @devin-ai-integration[bot] in #35148
- fix(anthropic adapter): stop indexing choices[0] on choiceless streaming chunks by @devin-ai-integration[bot] in #35314
- fix(bedrock): normalize /v1/completions and /v1/responses batch records by @devin-ai-integration[bot] in #35675
- fix(proxy): return the real status code when a credential update is rejected by @yucheng-berri in #36166
- fix(proxy): improve Headroom /v1/compress HTTP 404 diagnostics by @aayush598 in #35952
- fix(proxy): invalidate cached project object on project update and delete by @ryan-crabbe-berri in #36028
- feat(proxy): add apply_user_budget_to_team_keys opt-in by @ryan-crabbe-berri in #36102
- fix(proxy): stop alerting on health probes that lose the planned engine-restart race by @yassin-berriai in #36141
- test(docker): gate the componentized gateway and backend images on an arbitrary-uid offline boot by @yassin-berriai in #36136
- fix(http): stop pooled clients persisting cookies on the aiohttp jar too by @yassin-berriai in #36149
- fix(router): bound fallback-walk work and error-log volume by @yassin-berriai in #36148
- ci: wire credential_endpoints tests into the proxy endpoints job by @cursor[bot] in #36187
- docs(keys): document /key/info fields and clarify budget_reset_at is the next reset by @ryan-crabbe-berri in #36127
- fix(azure_sentinel): add AZURE_SENTINEL_AUTHORITY_HOST as a Sentinel scoped override by @yucheng-berri in #36165
- docs(pr-template): add a User Flow section with authoring instructions by @mateo-berri in #36162
- fix(proxy): derive config agent ids from agent_name so grants survive secret rotation by @ryan-crabbe-berri in #36020
- chore(ui): regenerate schema.d.ts for the /key/info docstring update by @devin-ai-integration[bot] in #36210
- build(deps): bump gitpython to 3.1.58 to clear osv-scan on staging by @devin-ai-integration[bot] in #36212
- fix(proxy): deny agent access when key and team grants resolve to nothing by @ryan-crabbe-berri in #36221
- build(deps): defer the second pypdf advisory until the 6.15.0 bump by @devin-ai-integration[bot] in #36218
- fix(a2a): align agent list annotation and test with the tuple return type by @devin-ai-integration[bot] in #36217
- ci: always run the UI API types sync check so it can be required by @devin-ai-integration[bot] in #36213
- build(deps): bump nanoid to 3.3.17 in the dashboard lockfile by @devin-ai-integration[bot] in #36227
- feat(ui): show user email or alias in usage data export by @ryan-crabbe-berri in #36232
- feat(auto-router): track turns per complexity tier (LIT-5302) by @tin-berri in #36209
- fix(websearch): restore snippet text in native web_search_tool_result blocks (LIT-5315) by @tin-berri in #36228
- fix(proxy): resolve entity access groups in the model listing endpoints by @devin-ai-integration[bot] in #36230
- fix(ui): let access groups be a team's only model source, with hover provenance by @ryan-crabbe-berri in #36234
- fix(managed_files): return unified output file ids from GET /batches by @mateo-berri in #36049
- test(proxy): compare empty agent list to the tuple get_agent_list returns by @devin-ai-integration[bot] in #36225
- fix(otel): name the RPC system and upstream on MCP tool-call spans by @yucheng-berri in #35857
- fix(guardrails): chunk oversized Bedrock ApplyGuardrail requests instead of failing by @yucheng-berri in #36119
- test(e2e): settle control-plane writes across every replica, not just one by @yuneng-berri in #36247
- fix(responses): forward allowed_openai_params through the chat completions bridge by @devin-ai-integration[bot] in #35885
- test(proxy): assert the copy _add_team_member_budget_table returns by @devin-ai-integration[bot] in #36244
- chore(ui): regenerate dashboard api types for tier_turns by @devin-ai-integration[bot] in #36243
- refactor(types): declare mirrored pricing fields on ModelInfo by @devin-ai-integration[bot] in #36215
- fix(lint): make strict-gate noqas survive base ruff and flag stale ones by @mateo-berri in #36257
- fix(vertex_ai): surface real error/status on vertex batch create instead of IndexError 500 by @devin-ai-integration[bot] in #35141
- ci: give the remaining pull_request workflows a concurrency group by @devin-ai-integration[bot] in #36252
- refactor(lint): graduate zero-violation strict rules and guard the budget ratchet by @mateo-berri in #36161
- fix(proxy): enforce require_managed_files on every route that accepts a raw provider id by @devin-ai-integration[bot] in #35551
- chore(typing): clear 1.4k basedpyright Any errors across 21 hotspot files by @mateo-berri in #36282
- test: roll back live router replay membership between tests by @mateo-berri in #36278
- chore(ci): sync main into internal staging by @yuneng-berri in #36288
- build(lint): rename make pre-commit to make check with a working-tree fallback by @mateo-berri in #36277
- fix(ui): show team BYOK models in team fallback settings by @devin-ai-integration[bot] in #36241
- fix(otel): mark v2 server spans as failed for pre-call errors by @devin-ai-integration[bot] in #34546
- fix(websearch_interception): bill intercepted searches to the calling key by @devin-ai-integration[bot] in #35708
- chore: remove pre-commit rule by @mateo-berri in #36295
- docs: clarify guideline priority ordering in CLAUDE.md by @devin-ai-integration[bot] in #36296
- feat(router): independent, default-on deployment affinity for the auto-router by @tin-berri in #36146
- test: repair stale CircleCI contracts by @yuneng-berri in #36293
- chore(ci): promote internal staging to main by @yuneng-berri in #36286
- chore: rebuild Admin UI bundle for the 2026-08-08 release by @yuneng-berri in #36297
- chore(ci): promote internal staging to main by @yuneng-berri in #36304
New Contributors
- @aayush598 made their first contribution in #35952
- @cursor[bot] made their first contribution in #36187
Full Changelog: v1.97.0-dev.2...v1.97.0-rc.1