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(a2a): normalize agent card protocolBinding casing before transport match by @devin-ai-integration[bot] in #37917
fix(interactions): track cost and spend for Google Interactions API requests by @mateo-berri in #33310
fix(bedrock): stop emitting an empty assistant delta after the finish_reason chunk by @devin-ai-integration[bot] in #36806
fix(anthropic): reconcile enum with declared type in output_format schema by @dkindlund in #37882
feat(azure_ai): support entra id / oauth auth on every azure ai foundry route by @devin-ai-integration[bot] in #35415
fix(ui): boot the UI image as an arbitrary uid by anchoring nginx writes under /tmp by @devin-ai-integration[bot] in #37982
fix(proxy): parse form-encoded video edit/extension bodies after auth by @Souravrajvi0 in #36513
fix(anthropic): keep legacy thinking budget_tokens on Claude 4.6 models on /v1/messages by @mateo-berri in #38108
fix(anthropic/bedrock): request summarized adaptive thinking for reasoning_effort and use provider thinking token counts by @devin-ai-integration[bot] in #37979
fix(completion_extras): forward reasoning_effort=max through the Responses API bridge by @mateo-berri in #38222
feat(vertex_ai): add native Vertex AI Interactions API support by @mateo-berri in #38229
test(mcp): drain the logging worker after each test so queued callbacks cannot leak into the next test by @ryan-crabbe-berri in #38228
fix(ui): forward OAuth issuer/authorization/token/registration URLs from the MCP server edit form by @yassin-berriai in #38154
fix(together_ai): default endpoints to api.together.ai instead of api.together.xyz by @mateo-berri in #38233
fix(bedrock_mantle): register a Bedrock runtime passthrough config so /bedrock/model//invoke works by @mateo-berri in #38231
fix(router): resolve provider from api_base in deployment validation and acompletion by @mateo-berri in #38235
fix(model_prices): raise bedrock_mantle gpt-5.6 max_input_tokens to Mantle's enforced 1050000 by @mateo-berri in #38225
fix(bedrock_mantle): normalize Codex input item types Mantle rejects by @mateo-berri in #38227
fix(proxy): store the actual selected model in spend logs for Azure Model Router by @devin-ai-integration[bot] in #37770
feat(router): per-group supported reasoning efforts with the max level by @tin-berri in #37897
fix(proxy): stop expected 4xx responses from saturating worker CPU on failure logging by @devin-ai-integration[bot] in #38102
fix(caching): use upstream RedisCluster on redis-py with per-connection recovery by @devin-ai-integration[bot] in #38171
perf(auth): drop guaranteed-miss internal-cache Redis read from team object lookup by @devin-ai-integration[bot] in #38073
fix(together_ai): route chat completions through a dedicated TogetherAIChatConfig by @mateo-berri in #38248
fix(ui): read reasoning tokens from Responses API output_tokens_details by @yassin-berriai in #37952
fix(dashboard): don't show a stale provider prompt-cache chip on a response-cache hit by @yassin-berriai in #37951
fix(ui): render tag-based guardrail mode instead of crashing the guardrails page by @devin-ai-integration[bot] in #37493
fix(scim): return user_id as Group members[].value on transformed group responses by @devin-ai-integration[bot] in #38161
fix(scim): preserve existing team memberships when POST /Users adoption carries no groups by @devin-ai-integration[bot] in #38166
fix(router): support mid-stream fallback for anthropic_messages route type by @yassin-berriai in #38153
fix(auth): skip guaranteed-miss team lookup for the litellm-dashboard sentinel by @devin-ai-integration[bot] in #38471
fix(key_management): allow /key/update to keep or shrink MCP server grants the key already holds by @devin-ai-integration[bot] in #38463
fix: keep schema reconciliation from fighting a partitioned LiteLLM_SpendLogs by @devin-ai-integration[bot] in #38452
fix(ui): open select popups below the trigger instead of over it by @tin-berri in #38554
fix(realtime): bill trailing audio when a Gemini transcribe Live session closes by @mateo-berri in #38563
test(e2e): cover key generate and update on the Admin UI path by @yuneng-berri in #38448
chore: bump litellm-enterprise 0.1.60 -> 0.1.61, litellm-proxy-extras 0.4.89 -> 0.4.90 by @yuneng-berri in #38566
fix(ui): let the paginated search select keep what the user types by @yuneng-berri in #38475
fix(otel): anchor MCP tool-call spans to the gateway's own trace, link the client's context by @yucheng-berri in #38317
fix: roll up the open deflake fixes for the MCP logging queue, PTU rollup, license gate, and pricing test isolation by @devin-ai-integration[bot] in #37833
fix(model_prices): rolling registry audit - verified models and rates for Novita, DeepInfra, W&B, Bedrock Sol, Gemini, Fireworks, Azure gpt-5.6, Mistral, Together by @devin-ai-integration[bot] in #38207
test(together_ai): assert fail-open supported params for models missing from the registry by @mateo-berri in #38487
test(e2e): let the together tool tests accept parallel calls by @yuneng-berri in #38567
feat(mcp): let a resolved OAuth token target a custom upstream header by @tin-berri in #38456
feat(together_ai): map reasoning_effort per model class by @mateo-berri in #38263
feat(dashscope): support qwen-image-3.0 and qwen-image-3.0-pro image generation by @devin-ai-integration[bot] in #38449
fix(cost): apply Together AI cache read pricing and per-model registry rates by @mateo-berri in #38280
fix(guardrails): forward aws_external_id when the bedrock guardrail assumes a role by @devin-ai-integration[bot] in #38376
fix(transcription): synthesize srt/vtt output for adapters without native subtitle formats by @mateo-berri in #38561
fix(streaming): preserve provider service-tier metadata so Vertex flex streams bill at flex rates by @mateo-berri in #38458
fix(realtime): bill Gemini Live native-audio output tokens at the audio rate by @mateo-berri in #38457
fix(anthropic): carry tool_reference tool results through the guardrail translation round trip by @mateo-berri in #38465
fix(anthropic-adapter): pass provider-native and OpenAI-format tools through on /v1/messages by @mateo-berri in #38431
feat(ui): edit the auto-router tier set with custom classifier-defined tiers by @tin-berri in #38603
fix(proxy): count tools, system, and Anthropic image and document blocks in the count_tokens fallback (internal copy of #36671) by @mateo-berri in #38657
test: refresh the suites that drifted from langfuse and OpenAI's retired Assistants API by @yuneng-berri in #38637
test(e2e): unskip four tests whose blockers no longer hold by @yuneng-berri in #38640
fix(bedrock): mask signed request headers in guardrail debug log by @mateo-berri in #39044
fix(bedrock): forward aws_external_id in files and batches credential loading by @mateo-berri in #39066
fix(mcp): persist alias MCP grants verbatim instead of rewriting to local server ids by @ryan-crabbe-berri in #39119
fix(responses): json-encode object tool call arguments in the chat completions bridge by @devin-ai-integration[bot] in #35417
fix(cost): bill OCR annotation pages via annotation_cost_per_page by @mateo-berri in #38985
fix(policy_engine): restore request guardrails list after pipeline allow by @mateo-berri in #39038
fix(embeddings): omit encoding_format when the client omits it on OpenAI-compatible calls by @mateo-berri in #38774
test: deflake MCP registry state, savings cost map, and MCP identity env reload tests by @devin-ai-integration[bot] in #38891
feat(helm): add Argo CD PreSync hook and rollout strategy knobs to the componentized chart by @devin-ai-integration[bot] in #39112
fix(registry): veo 3.1 pricing tiers + roll up open registry PRs (glm-5.2, Qwen3.8-Flash, gemma-4-31b, scribe_v2, fireworks/databricks deepseek v4) + deprecation dates by @devin-ai-integration[bot] in #38990
test(ui): budget DOM-structure assertions in dashboard tests by @yuneng-berri in #39082
test(ui): assert DataTable behavior instead of DOM structure by @yuneng-berri in #39084
test(ui): query the screen instead of the render result by @yuneng-berri in #39085
fix(ui): stop checkboxes stretching to the full width of a form field by @yatishgoel in #39108
chore: bump litellm-enterprise 0.1.62 -> 0.1.63, litellm-proxy-extras 0.4.91 -> 0.4.92, litellm 1.100.0 -> 1.101.0 by @yuneng-berri in #39140
revert: restore search tool fallback when no router is configured by @yuneng-berri in #39146
test(websearch): register configured search tool in pre-request hook test by @mateo-berri in #39074
feat(proxy): default to the v2 migration resolver, keep v1 as an opt-out by @yuneng-berri in #31125
fix(cost-map): retry transient boot fetch failures and recover config deployments dropped by a stale cost map by @devin-ai-integration[bot] in #39230
feat(router): add heuristic v2 complexity routing by @tin-berri in #39276
fix(anthropic): upgrade legacy thinking to adaptive on adaptive-only Claude models for chat, Bedrock Converse, Invoke, Vertex AI, and Databricks by @devin-ai-integration[bot] in #39159
fix(proxy): mark session/SSO/SAML cookies Secure behind a TLS-terminating reverse proxy by @yassin-berriai in #39391
fix(bedrock): honor BEDROCK_MANTLE_API_BASE on bedrock/mantle messages and chat URLs by @mateo-berri in #39364
fix(bedrock): strip client_metadata from converse additionalModelRequestFields by @devin-ai-integration[bot] in #35967
chore(techdebt): clear fresh debt from the 2026-08-31 and 2026-09-01 windows by @devin-ai-integration[bot] in #39091
fix(mcp): cap tools preview and test-connection at the listing timeout and name the unreachable upstream by @mateo-berri in #38791
fix(hosted_vllm): forward truncate_prompt_tokens on rerank requests by @mateo-berri in #39363
fix(messages): drop cache_control ttl on non-Anthropic /v1/messages passthrough by @mateo-berri in #39355
fix(bedrock_mantle): carry per-request AWS credentials into chat completions SigV4 signing by @mateo-berri in #39362
feat(router): add a hybrid classifier that defers near tier boundaries by @tin-berri in #39403
fix: recover the v2 migration resolver from concurrent migrate deploy deadlocks by @mateo-berri in #39187
fix(ollama_chat): stamp finish_reason tool_calls when tool calls streamed before the done chunk by @devin-ai-integration[bot] in #39010
fix(router): route Claude Code subagents through session router by @moe-berri in #39239
fix(responses): keep namespace tools intact when a guardrail returns them unchanged by @mateo-berri in #39366
chore: bump litellm-enterprise 0.1.63 -> 0.1.64, litellm-proxy-extras 0.4.92 -> 0.4.93 by @yuneng-berri in #39595
fix(images): forward gpt-image supported params like background to OpenAI and Azure by @devin-ai-integration[bot] in #39525
fix(proxy): return persisted team memberships from /user/new so first CLI login gets the default team by @devin-ai-integration[bot] in #39545
fix(spend_tracking): add missing_session_id: omit to leave SpendLogs.session_id null without a client session by @devin-ai-integration[bot] in #39458
fix(datadog_llm_obs): keep guardrail_cost_by_unit on redacted spans by @mateo-berri in #39848
test(store_model_in_db): assert the 400 contract in the unknown-model spend log test by @mateo-berri in #39842
feat(cli): add lite debug claude session report and /debug-lite slash command by @devin-ai-integration[bot] in #39435
test: deflake JWT tamper, fuzzy picker, tag routing, liveliness, redis stall burst, and pre-commit interrupt tests by @devin-ai-integration[bot] in #39306
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
chore(lens)!: stop bundling and building Lens on 1.106.x by @yuneng-berri in #49173
feat(videos): serve custom_provider_map BaseVideoConfig providers on /v1/videos (#49785) [backport stable/1.106.x] by @kerry-berri in #49802
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(proxy): backport #46712 gzip scoping and off-loop compression to stable/1.106.x for v1.106.6 by @kerry-berri in #48680
Same command for litellm-database, litellm-non_root and the docker.io/litellm/* images
What's new in 1.106.5
1 PR. 1 changed. No action needed to upgrade
Changes
Logging and observability: Changed failure logs for rejected requests to keep only core request fields, tags and guardrail details (#48599) Also in 1.103.10, 1.104.8, 1.105.6
Logging and observability: Changed the GCS logger to use the bucket and credentials configured on the proxy (#48599) Also in 1.103.10, 1.104.8, 1.105.6
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [LITELLM_IMAGE](https://images.chainguard.dev/directory/image/wolfi-base/overview) ([source](https://github.com/BerriAI/litellm)) | minor | `v1.106.4` → `v1.108.0` |
---
> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/6) for more information.
---
### Release Notes
<details>
<summary>BerriAI/litellm (LITELLM_IMAGE)</summary>
### [`v1.108.0`](https://github.com/BerriAI/litellm/releases/tag/v1.108.0)
[Compare Source](https://github.com/BerriAI/litellm/compare/v1.106.7...v1.108.0)
#### Verify Docker Image Signature
All LiteLLM Docker images are signed with [cosign](https://docs.sigstore.dev/cosign/overview/). This release is signed with the key introduced in [commit `e82a3c6`](https://github.com/BerriAI/litellm/commit/e82a3c646908ba0a6ee0beddc4310d7a6cac4065).
**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 published signing key:
```bash
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/e82a3c646908ba0a6ee0beddc4310d7a6cac4065/cosign.pub \
ghcr.io/berriai/litellm:v1.108.0
```
**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.108.0/cosign.pub \
ghcr.io/berriai/litellm:v1.108.0
```
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(a2a): normalize agent card protocolBinding casing before transport match by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​37917](https://github.com/BerriAI/litellm/pull/37917)
- fix(interactions): track cost and spend for Google Interactions API requests by [@​mateo-berri](https://github.com/mateo-berri) in [#​33310](https://github.com/BerriAI/litellm/pull/33310)
- fix(bedrock): stop emitting an empty assistant delta after the finish_reason chunk by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​36806](https://github.com/BerriAI/litellm/pull/36806)
- fix(anthropic): reconcile enum with declared type in output_format schema by [@​dkindlund](https://github.com/dkindlund) in [#​37882](https://github.com/BerriAI/litellm/pull/37882)
- feat(azure_ai): support entra id / oauth auth on every azure ai foundry route by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​35415](https://github.com/BerriAI/litellm/pull/35415)
- fix(ui): boot the UI image as an arbitrary uid by anchoring nginx writes under /tmp by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​37982](https://github.com/BerriAI/litellm/pull/37982)
- fix(proxy): parse form-encoded video edit/extension bodies after auth by [@​Souravrajvi0](https://github.com/Souravrajvi0) in [#​36513](https://github.com/BerriAI/litellm/pull/36513)
- fix(anthropic): keep legacy thinking budget_tokens on Claude 4.6 models on /v1/messages by [@​mateo-berri](https://github.com/mateo-berri) in [#​38108](https://github.com/BerriAI/litellm/pull/38108)
- fix(utils): make prompt_token_calculator count claude models again by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38130](https://github.com/BerriAI/litellm/pull/38130)
- fix(proxy): keep every value of a repeated form key, and gate the tests that hid it by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​37908](https://github.com/BerriAI/litellm/pull/37908)
- fix(health): apply model_info.health_check_params to health check probes by [@​mateo-berri](https://github.com/mateo-berri) in [#​38101](https://github.com/BerriAI/litellm/pull/38101)
- fix(runwayml): route every generation endpoint and fix video cost tracking by [@​mateo-berri](https://github.com/mateo-berri) in [#​38115](https://github.com/BerriAI/litellm/pull/38115)
- fix(passthrough): attribute spend and release budget reservation on router-model /vllm and /azure routes by [@​mateo-berri](https://github.com/mateo-berri) in [#​38111](https://github.com/BerriAI/litellm/pull/38111)
- fix: match OpenAI SDK wire format on image/video routes by [@​mateo-berri](https://github.com/mateo-berri) in [#​38104](https://github.com/BerriAI/litellm/pull/38104)
- fix(ci): give three unit shards a job deadline that outlasts their pytest budget by [@​tin-berri](https://github.com/tin-berri) in [#​38139](https://github.com/BerriAI/litellm/pull/38139)
- feat(ui): add Gemini Family auto-router preset by [@​tin-berri](https://github.com/tin-berri) in [#​38138](https://github.com/BerriAI/litellm/pull/38138)
- fix(logging_worker): carry queued tasks across event-loop change instead of dropping them by [@​mateo-berri](https://github.com/mateo-berri) in [#​38144](https://github.com/BerriAI/litellm/pull/38144)
- feat(proxy): enforce vector-store upload security controls on /v1/rag/ingest by [@​mateo-berri](https://github.com/mateo-berri) in [#​38135](https://github.com/BerriAI/litellm/pull/38135)
- test(e2e): pin require_managed_files enforcement behind a marker-gated stack phase by [@​mateo-berri](https://github.com/mateo-berri) in [#​38117](https://github.com/BerriAI/litellm/pull/38117)
- refactor(ui): move the dashboard onto class-variance-authority by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38125](https://github.com/BerriAI/litellm/pull/38125)
- refactor(utils)!: delete prompt_token_calculator by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38132](https://github.com/BerriAI/litellm/pull/38132)
- fix(auto-router): list configured auto-routers in the usage picker before they have traffic by [@​tin-berri](https://github.com/tin-berri) in [#​38129](https://github.com/BerriAI/litellm/pull/38129)
- refactor(ui): install the shadcn field primitive by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38126](https://github.com/BerriAI/litellm/pull/38126)
- fix(complexity_router): keep both ends of a clipped classifier context turn by [@​tin-berri](https://github.com/tin-berri) in [#​38141](https://github.com/BerriAI/litellm/pull/38141)
- fix(ci): ignore-list recursive form-field flatteners in recursive_detector by [@​mateo-berri](https://github.com/mateo-berri) in [#​38149](https://github.com/BerriAI/litellm/pull/38149)
- fix(passthrough): stop leaking the caller's virtual key on credential-less Vertex passthrough by [@​mateo-berri](https://github.com/mateo-berri) in [#​38114](https://github.com/BerriAI/litellm/pull/38114)
- fix(router): stop copying forwarded credentials into retry breadcrumbs by [@​mateo-berri](https://github.com/mateo-berri) in [#​38133](https://github.com/BerriAI/litellm/pull/38133)
- feat(e2e): record and replay streamed provider responses chunk-for-chunk by [@​mateo-berri](https://github.com/mateo-berri) in [#​38136](https://github.com/BerriAI/litellm/pull/38136)
- fix: tolerate stream chunks without a choices key in stream_chunk_builder by [@​AkshaySasi](https://github.com/AkshaySasi) in [#​34382](https://github.com/BerriAI/litellm/pull/34382)
- fix(files): decode x-litellm-model encoded file_id in chat + responses by [@​hclsys](https://github.com/hclsys) in [#​29832](https://github.com/BerriAI/litellm/pull/29832)
- fix(videos): forward uploaded source file on /v1/videos/edits to the provider by [@​mateo-berri](https://github.com/mateo-berri) in [#​38155](https://github.com/BerriAI/litellm/pull/38155)
- fix(s3_v2): percent-encode object keys once so signed and sent URLs match by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38005](https://github.com/BerriAI/litellm/pull/38005)
- feat(ui): add error-code drilldown for failed requests on caching page by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38156](https://github.com/BerriAI/litellm/pull/38156)
- feat(search): add Grounding with Bing Search (bing_grounding) as a search provider by [@​mateo-berri](https://github.com/mateo-berri) in [#​38119](https://github.com/BerriAI/litellm/pull/38119)
- ci: ban row-rewriting DML from prisma migrations by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​37899](https://github.com/BerriAI/litellm/pull/37899)
- fix(langsmith): keep root-run ids self-consistent so batch ingest stops rejecting header-tagged requests by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38116](https://github.com/BerriAI/litellm/pull/38116)
- ci(e2e): record the e2e suite weekly and replay it on weekdays with zero egress by [@​mateo-berri](https://github.com/mateo-berri) in [#​38163](https://github.com/BerriAI/litellm/pull/38163)
- chore(codeowners): unown ui container plumbing and generated files by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38124](https://github.com/BerriAI/litellm/pull/38124)
- fix(logging): skip parsing redacted tool call arguments by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38169](https://github.com/BerriAI/litellm/pull/38169)
- feat(complexity_router): bound the classifier context block, not each turn in it by [@​tin-berri](https://github.com/tin-berri) in [#​38145](https://github.com/BerriAI/litellm/pull/38145)
- fix(http_handler): dispose aiohttp session when AsyncHTTPHandler is finalized without a running loop by [@​anmolg1997](https://github.com/anmolg1997) in [#​36670](https://github.com/BerriAI/litellm/pull/36670)
- fix(proxy): reset a stuck team member's budget by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​37971](https://github.com/BerriAI/litellm/pull/37971)
- fix(anthropic/bedrock): request summarized adaptive thinking for reasoning_effort and use provider thinking token counts by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​37979](https://github.com/BerriAI/litellm/pull/37979)
- fix(completion_extras): forward reasoning_effort=max through the Responses API bridge by [@​mateo-berri](https://github.com/mateo-berri) in [#​38222](https://github.com/BerriAI/litellm/pull/38222)
- feat(vertex_ai): add native Vertex AI Interactions API support by [@​mateo-berri](https://github.com/mateo-berri) in [#​38229](https://github.com/BerriAI/litellm/pull/38229)
- test(mcp): drain the logging worker after each test so queued callbacks cannot leak into the next test by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38228](https://github.com/BerriAI/litellm/pull/38228)
- fix(ui): forward OAuth issuer/authorization/token/registration URLs from the MCP server edit form by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​38154](https://github.com/BerriAI/litellm/pull/38154)
- fix(together_ai): default endpoints to api.together.ai instead of api.together.xyz by [@​mateo-berri](https://github.com/mateo-berri) in [#​38233](https://github.com/BerriAI/litellm/pull/38233)
- fix(bedrock_mantle): register a Bedrock runtime passthrough config so /bedrock/model/<deployment>/invoke works by [@​mateo-berri](https://github.com/mateo-berri) in [#​38231](https://github.com/BerriAI/litellm/pull/38231)
- fix(router): resolve provider from api_base in deployment validation and acompletion by [@​mateo-berri](https://github.com/mateo-berri) in [#​38235](https://github.com/BerriAI/litellm/pull/38235)
- fix(model_prices): raise bedrock_mantle gpt-5.6 max_input_tokens to Mantle's enforced [`1050000`](https://github.com/BerriAI/litellm/commit/1050000) by [@​mateo-berri](https://github.com/mateo-berri) in [#​38225](https://github.com/BerriAI/litellm/pull/38225)
- fix(bedrock_mantle): normalize Codex input item types Mantle rejects by [@​mateo-berri](https://github.com/mateo-berri) in [#​38227](https://github.com/BerriAI/litellm/pull/38227)
- fix(proxy): store the actual selected model in spend logs for Azure Model Router by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​37770](https://github.com/BerriAI/litellm/pull/37770)
- feat(router): per-group supported reasoning efforts with the max level by [@​tin-berri](https://github.com/tin-berri) in [#​37897](https://github.com/BerriAI/litellm/pull/37897)
- fix(proxy): stop expected 4xx responses from saturating worker CPU on failure logging by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38102](https://github.com/BerriAI/litellm/pull/38102)
- fix(caching): use upstream RedisCluster on redis-py with per-connection recovery by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38171](https://github.com/BerriAI/litellm/pull/38171)
- perf(auth): drop guaranteed-miss internal-cache Redis read from team object lookup by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38073](https://github.com/BerriAI/litellm/pull/38073)
- fix(together_ai): route chat completions through a dedicated TogetherAIChatConfig by [@​mateo-berri](https://github.com/mateo-berri) in [#​38248](https://github.com/BerriAI/litellm/pull/38248)
- fix(ui): read reasoning tokens from Responses API output_tokens_details by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​37952](https://github.com/BerriAI/litellm/pull/37952)
- fix(dashboard): don't show a stale provider prompt-cache chip on a response-cache hit by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​37951](https://github.com/BerriAI/litellm/pull/37951)
- fix(ui): render tag-based guardrail mode instead of crashing the guardrails page by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​37493](https://github.com/BerriAI/litellm/pull/37493)
- fix(scim): return user_id as Group members\[].value on transformed group responses by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38161](https://github.com/BerriAI/litellm/pull/38161)
- fix(scim): preserve existing team memberships when POST /Users adoption carries no groups by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38166](https://github.com/BerriAI/litellm/pull/38166)
- fix(router): support mid-stream fallback for anthropic_messages route type by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​38153](https://github.com/BerriAI/litellm/pull/38153)
- fix(auth): support wildcard prefixes in jwt team_allowed_routes by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​37756](https://github.com/BerriAI/litellm/pull/37756)
- feat(models): add missing Together AI serverless models to the cost map by [@​mateo-berri](https://github.com/mateo-berri) in [#​38230](https://github.com/BerriAI/litellm/pull/38230)
- fix(cerebras)!: add max_retries and extra_headers to get_supported_openai_params by [@​deepanshululla](https://github.com/deepanshululla) in [#​36601](https://github.com/BerriAI/litellm/pull/36601)
- fix(anthropic): translate tool_result document blocks in the /v1/messages bridge by [@​mateo-berri](https://github.com/mateo-berri) in [#​38251](https://github.com/BerriAI/litellm/pull/38251)
- fix(team): serialize member_add, member_delete, and delete under the team's advisory lock by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​37969](https://github.com/BerriAI/litellm/pull/37969)
- docs(pr-template): split Caveats bullets into severity tiers and call for plain engineering language by [@​mateo-berri](https://github.com/mateo-berri) in [#​38252](https://github.com/BerriAI/litellm/pull/38252)
- fix(anthropic): carry tool_result document blocks through the /v1/messages responses bridge by [@​mateo-berri](https://github.com/mateo-berri) in [#​38261](https://github.com/BerriAI/litellm/pull/38261)
- fix(together_ai): pass tools through for models missing from the registry by [@​mateo-berri](https://github.com/mateo-berri) in [#​38265](https://github.com/BerriAI/litellm/pull/38265)
- fix(anthropic): carry user-content document blocks through the /v1/messages responses bridge by [@​mateo-berri](https://github.com/mateo-berri) in [#​38267](https://github.com/BerriAI/litellm/pull/38267)
- fix(rerank): emit latency and cost headers on /rerank by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​35419](https://github.com/BerriAI/litellm/pull/35419)
- perf(streaming): add shared JSONFragmentAccumulator for Vertex and Anthropic by [@​deepanshululla](https://github.com/deepanshululla) in [#​36610](https://github.com/BerriAI/litellm/pull/36610)
- fix(together_ai): strip internal thinking fields from outbound messages, keep reasoning_content by [@​mateo-berri](https://github.com/mateo-berri) in [#​38275](https://github.com/BerriAI/litellm/pull/38275)
- fix(router): persist attempted_fallbacks and original_model_group into spend logs metadata by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38107](https://github.com/BerriAI/litellm/pull/38107)
- fix(logging): redact tool call arguments to valid JSON and preserve null content by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38182](https://github.com/BerriAI/litellm/pull/38182)
- fix(ui): stack policy flow builder below the popup layer so guardrail options render by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38273](https://github.com/BerriAI/litellm/pull/38273)
- test: gate the test tree on B003 so a test cannot swap os.environ for a plain dict by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38274](https://github.com/BerriAI/litellm/pull/38274)
- refactor(repositories): type prisma table access with one generic protocol by [@​mateo-berri](https://github.com/mateo-berri) in [#​38205](https://github.com/BerriAI/litellm/pull/38205)
- fix(anthropic): buffer streamed responses carrying server-fulfilled tools so retrieval tool calls never reach the client by [@​mateo-berri](https://github.com/mateo-berri) in [#​36245](https://github.com/BerriAI/litellm/pull/36245)
- test(together_ai): regression suite across chat, responses, and messages surfaces by [@​mateo-berri](https://github.com/mateo-berri) in [#​38283](https://github.com/BerriAI/litellm/pull/38283)
- feat(logging): add async_post_call_failure_deployment_hook by [@​deepanshululla](https://github.com/deepanshululla) in [#​36657](https://github.com/BerriAI/litellm/pull/36657)
- chore: bump litellm-enterprise 0.1.59 -> 0.1.60, litellm 1.99.0 -> 1.100.0 by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38243](https://github.com/BerriAI/litellm/pull/38243)
- test(e2e): cover Together AI reasoning, tool calls, template kwargs, and cost through a live proxy by [@​mateo-berri](https://github.com/mateo-berri) in [#​38286](https://github.com/BerriAI/litellm/pull/38286)
- fix(logging): keep tracebacks for provider-originated 4xx errors by [@​mateo-berri](https://github.com/mateo-berri) in [#​38296](https://github.com/BerriAI/litellm/pull/38296)
- chore(ci): promote internal staging to main by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38293](https://github.com/BerriAI/litellm/pull/38293)
- refactor(ui): install the shadcn alert primitive by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38300](https://github.com/BerriAI/litellm/pull/38300)
- refactor(ui): re-pull label, textarea, separator and skeleton from the registry by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38302](https://github.com/BerriAI/litellm/pull/38302)
- feat(prometheus): configure deployment caller identity by [@​mphilippnv](https://github.com/mphilippnv) in [#​38221](https://github.com/BerriAI/litellm/pull/38221)
- test(e2e): let the Together replayed-reasoning case survive a single provider miss by [@​mateo-berri](https://github.com/mateo-berri) in [#​38314](https://github.com/BerriAI/litellm/pull/38314)
- fix(otel): map /v1/messages provider errors before failure logging by [@​mateo-berri](https://github.com/mateo-berri) in [#​38310](https://github.com/BerriAI/litellm/pull/38310)
- fix(exceptions): map upstream status codes for providers with no exception_type branch by [@​mateo-berri](https://github.com/mateo-berri) in [#​38318](https://github.com/BerriAI/litellm/pull/38318)
- fix(passthrough): record ownership of streamed responses under managed ids by [@​mateo-berri](https://github.com/mateo-berri) in [#​38320](https://github.com/BerriAI/litellm/pull/38320)
- fix(proxy): encrypt streamed responses ids on /openai/v1/responses and /responses aliases by [@​mateo-berri](https://github.com/mateo-berri) in [#​38325](https://github.com/BerriAI/litellm/pull/38325)
- test(cost-calc): pin the rate fallbacks inside a tiered-pricing tier by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38327](https://github.com/BerriAI/litellm/pull/38327)
- test(e2e): cover the Bedrock provider-feature cells customers run by [@​mateo-berri](https://github.com/mateo-berri) in [#​38232](https://github.com/BerriAI/litellm/pull/38232)
- fix(together_ai): fail open on response_format instead of dropping it for unregistered models by [@​mateo-berri](https://github.com/mateo-berri) in [#​38269](https://github.com/BerriAI/litellm/pull/38269)
- fix(proxy): honor DATABASE_DISABLE_PREPARED_STATEMENTS in componentized entrypoints by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38363](https://github.com/BerriAI/litellm/pull/38363)
- fix(anthropic-responses): preserve structured output strictness by [@​eugene-yao-zocdoc](https://github.com/eugene-yao-zocdoc) in [#​38211](https://github.com/BerriAI/litellm/pull/38211)
- chore(typing): roll up the daily tech debt cleanups from Aug 20 to Aug 26 by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​37922](https://github.com/BerriAI/litellm/pull/37922)
- fix(router): resolve hidden aliases for explicit lookup by [@​daniel-meismer-zocdoc](https://github.com/daniel-meismer-zocdoc) in [#​38272](https://github.com/BerriAI/litellm/pull/38272)
- fix(ui): keep focus in the add model public name input while typing by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38366](https://github.com/BerriAI/litellm/pull/38366)
- fix(model_prices): price 1-hour cache writes on claude-3-haiku and claude-3-opus at 2x input by [@​mateo-berri](https://github.com/mateo-berri) in [#​38371](https://github.com/BerriAI/litellm/pull/38371)
- fix(proxy): keep the caller's Google token on credential-less Vertex passthrough under custom auth by [@​mateo-berri](https://github.com/mateo-berri) in [#​38299](https://github.com/BerriAI/litellm/pull/38299)
- fix(mcp): preserve provider access token lifetime by [@​daniel-meismer-zocdoc](https://github.com/daniel-meismer-zocdoc) in [#​38271](https://github.com/BerriAI/litellm/pull/38271)
- chore(ui): remove stale "New" badges from the dashboard by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38374](https://github.com/BerriAI/litellm/pull/38374)
- test(cost-estimate): pin the prices and period totals /cost/estimate returns by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38315](https://github.com/BerriAI/litellm/pull/38315)
- fix(ci): let the mutation workflow find covered lines so it generates mutants by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38305](https://github.com/BerriAI/litellm/pull/38305)
- fix(model_prices): raise bedrock_mantle gpt-5.5 and gpt-5.4 max_input_tokens to Mantle's enforced [`1050000`](https://github.com/BerriAI/litellm/commit/1050000) by [@​mateo-berri](https://github.com/mateo-berri) in [#​38368](https://github.com/BerriAI/litellm/pull/38368)
- fix(azure/realtime): authenticate realtime websocket with Azure AD token when no api-key by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​34658](https://github.com/BerriAI/litellm/pull/34658)
- fix(bedrock): map reasoning_effort to reasoning.effort for OpenAI GPT-5.x on Converse by [@​6matt](https://github.com/6matt) in [#​38279](https://github.com/BerriAI/litellm/pull/38279)
- test(prometheus): cover caller-identity config failure cases by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38380](https://github.com/BerriAI/litellm/pull/38380)
- fix(redis): support credential providers across clients by [@​eugene-yao-zocdoc](https://github.com/eugene-yao-zocdoc) in [#​38094](https://github.com/BerriAI/litellm/pull/38094)
- fix(health): support `mode: image_edit` in health checks by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38291](https://github.com/BerriAI/litellm/pull/38291)
- fix(cost-map): add US data residency uplift to claude-sonnet-4-6 and mythos entries by [@​mateo-berri](https://github.com/mateo-berri) in [#​38369](https://github.com/BerriAI/litellm/pull/38369)
- fix(anthropic): raise missing-credential error on /v1/messages passthrough by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38240](https://github.com/BerriAI/litellm/pull/38240)
- fix(mcp): complete DCR bridge OAuth challenges by [@​daniel-meismer-zocdoc](https://github.com/daniel-meismer-zocdoc) in [#​37384](https://github.com/BerriAI/litellm/pull/37384)
- test(proxy): pin the request-validation contracts in proxy/\_types.py by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38307](https://github.com/BerriAI/litellm/pull/38307)
- docs(CLAUDE.md): add pull-before-work rule by [@​mateo-berri](https://github.com/mateo-berri) in [#​38386](https://github.com/BerriAI/litellm/pull/38386)
- fix(anthropic): scale cache costs by fast mode and trust served speed by [@​mateo-berri](https://github.com/mateo-berri) in [#​38378](https://github.com/BerriAI/litellm/pull/38378)
- fix(pricing): add azure gpt-5.6 cache write rates and correct data zone priority by [@​mateo-berri](https://github.com/mateo-berri) in [#​38370](https://github.com/BerriAI/litellm/pull/38370)
- docs: tighten the pull-before-work rule in CLAUDE.md by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38389](https://github.com/BerriAI/litellm/pull/38389)
- fix(health): strip credential fields from GET /health output by [@​Siraj637909](https://github.com/Siraj637909) in [#​37090](https://github.com/BerriAI/litellm/pull/37090)
- fix(minimax): attach MINIMAX_API_KEY on anthropic messages requests by [@​mateo-berri](https://github.com/mateo-berri) in [#​38393](https://github.com/BerriAI/litellm/pull/38393)
- refactor(ui): replace hand-picked z-index values with one named scale and lint it by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38282](https://github.com/BerriAI/litellm/pull/38282)
- fix(health): probe Azure GA realtime path for transcription-only models by [@​mateo-berri](https://github.com/mateo-berri) in [#​38390](https://github.com/BerriAI/litellm/pull/38390)
- fix(bedrock): parse cacheDetails for Converse 1h/5m cache write cost split by [@​danielva-monday](https://github.com/danielva-monday) in [#​36762](https://github.com/BerriAI/litellm/pull/36762)
- fix(caching): flush async cache writes cancelled at event loop shutdown by [@​mateo-berri](https://github.com/mateo-berri) in [#​38385](https://github.com/BerriAI/litellm/pull/38385)
- fix(router): resolve model_group_alias before pre-routing strategy dispatch by [@​tin-berri](https://github.com/tin-berri) in [#​38382](https://github.com/BerriAI/litellm/pull/38382)
- feat(proxy): enforce rpm/tpm on model add + fix validation error title in UI by [@​kunal2002](https://github.com/kunal2002) in [#​36518](https://github.com/BerriAI/litellm/pull/36518)
- refactor(ui): move every page header onto the shared PageHeader by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38306](https://github.com/BerriAI/litellm/pull/38306)
- fix(proxy): stop cache eviction errors from failing /key/update by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38308](https://github.com/BerriAI/litellm/pull/38308)
- fix(aiohttp): honor global ssl_verify on the aiohttp_openai handler path by [@​mateo-berri](https://github.com/mateo-berri) in [#​38400](https://github.com/BerriAI/litellm/pull/38400)
- fix(logging_worker): rescue dequeued logging tasks lost at event loop close by [@​mateo-berri](https://github.com/mateo-berri) in [#​38394](https://github.com/BerriAI/litellm/pull/38394)
- fix(caching): require the namespace delimiter when checking already-namespaced redis keys by [@​mateo-berri](https://github.com/mateo-berri) in [#​38403](https://github.com/BerriAI/litellm/pull/38403)
- fix(prompts): reject keyed prompt_data with prompt_id and populate prompt version by [@​mateo-berri](https://github.com/mateo-berri) in [#​38404](https://github.com/BerriAI/litellm/pull/38404)
- fix(cost_calculator): resolve real cost key when model_name alias contains '/' by [@​ksk2023](https://github.com/ksk2023) in [#​38344](https://github.com/BerriAI/litellm/pull/38344)
- fix(cost-map): correct prompt_cache_min_tokens for Claude Fable 5 and backfill Anthropic re-export entries by [@​mateo-berri](https://github.com/mateo-berri) in [#​38405](https://github.com/BerriAI/litellm/pull/38405)
- test(azure-ai): pin the 422 retry that drops the field the provider rejected by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38309](https://github.com/BerriAI/litellm/pull/38309)
- refactor(ui): read the auto-router tier set through one row list by [@​tin-berri](https://github.com/tin-berri) in [#​38408](https://github.com/BerriAI/litellm/pull/38408)
- fix(proxy): stop empty DB router_settings lists from clobbering yaml fallbacks by [@​mateo-berri](https://github.com/mateo-berri) in [#​38406](https://github.com/BerriAI/litellm/pull/38406)
- fix(team): allow no-reset default budgets for team members by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​37708](https://github.com/BerriAI/litellm/pull/37708)
- fix: forward image content lists to DeepSeek vision models by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38397](https://github.com/BerriAI/litellm/pull/38397)
- fix(fireworks_ai): stop using the trace id as the session affinity key by [@​Hamjaster](https://github.com/Hamjaster) in [#​35754](https://github.com/BerriAI/litellm/pull/35754)
- fix(gemini-realtime): keep the client's voice on Vertex AI native-audio Live by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38395](https://github.com/BerriAI/litellm/pull/38395)
- fix(vertex_ai): bill Gemini grounding per unique web search query by [@​ousamabenyounes](https://github.com/ousamabenyounes) in [#​36397](https://github.com/BerriAI/litellm/pull/36397)
- fix(health): make the image_edit health probe moderation-safe by [@​mateo-berri](https://github.com/mateo-berri) in [#​38417](https://github.com/BerriAI/litellm/pull/38417)
- test: gate the test tree on fifteen assertion and handler rules it already satisfies by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38361](https://github.com/BerriAI/litellm/pull/38361)
- fix(proxy): key lazy openapi stubs off registered features, not sys.modules by [@​mateo-berri](https://github.com/mateo-berri) in [#​38416](https://github.com/BerriAI/litellm/pull/38416)
- fix(proxy): derive auto-router health from its underlying models by [@​tin-berri](https://github.com/tin-berri) in [#​38174](https://github.com/BerriAI/litellm/pull/38174)
- fix(responses): let cache-control injection reach the system prompt from instructions by [@​tin-berri](https://github.com/tin-berri) in [#​38120](https://github.com/BerriAI/litellm/pull/38120)
- fix(gemini): bill Google Maps grounding as its own SKU by [@​mateo-berri](https://github.com/mateo-berri) in [#​38418](https://github.com/BerriAI/litellm/pull/38418)
- fix(speech): keep proxy metadata and completion cost through the TTS completion bridge by [@​mateo-berri](https://github.com/mateo-berri) in [#​38414](https://github.com/BerriAI/litellm/pull/38414)
- fix: map Gemini ON_DEMAND_FLEX traffic type to flex service tier by [@​bisma-nawaz](https://github.com/bisma-nawaz) in [#​37724](https://github.com/BerriAI/litellm/pull/37724)
- feat(langfuse): support langfuse_environment as a per-key dynamic callback param by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38264](https://github.com/BerriAI/litellm/pull/38264)
- feat(proxy): hide unhealthy models from model listings, opt-in by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38313](https://github.com/BerriAI/litellm/pull/38313)
- fix(mcp): honor admin-entered OAuth URLs on authorize after issuer yield by [@​mateo-berri](https://github.com/mateo-berri) in [#​38379](https://github.com/BerriAI/litellm/pull/38379)
- fix(model_prices): correct gemini-3.5-flash-lite flex cache-read pricing by [@​mateo-berri](https://github.com/mateo-berri) in [#​38422](https://github.com/BerriAI/litellm/pull/38422)
- fix(cost): price gemini-live-2.5-flash-native-audio realtime sessions by [@​mateo-berri](https://github.com/mateo-berri) in [#​38419](https://github.com/BerriAI/litellm/pull/38419)
- fix(cost-map): correct Gemini TTS and native-audio rates by [@​mateo-berri](https://github.com/mateo-berri) in [#​38412](https://github.com/BerriAI/litellm/pull/38412)
- fix(prompts): propagate PATCHed prompt templates to every worker and pod by [@​mateo-berri](https://github.com/mateo-berri) in [#​38411](https://github.com/BerriAI/litellm/pull/38411)
- fix(model_prices): bill gemini -latest/preview alias cache reads at 10% of input by [@​mateo-berri](https://github.com/mateo-berri) in [#​38423](https://github.com/BerriAI/litellm/pull/38423)
- fix(proxy): sync search tools into the router on management writes by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38392](https://github.com/BerriAI/litellm/pull/38392)
- feat(guardrails): track Azure Prompt Shield usage and cost with spend isolation by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38387](https://github.com/BerriAI/litellm/pull/38387)
- fix(prompts): apply prompt templates before routing on /v1/responses and honor ignore_prompt_manager_model by [@​mateo-berri](https://github.com/mateo-berri) in [#​38407](https://github.com/BerriAI/litellm/pull/38407)
- fix(cost): make cost-breakdown headers respect service tier by [@​mateo-berri](https://github.com/mateo-berri) in [#​38424](https://github.com/BerriAI/litellm/pull/38424)
- fix(mcp): add litellm\[mcp] extra and actionable error when streamable_http_client is missing by [@​mateo-berri](https://github.com/mateo-berri) in [#​38399](https://github.com/BerriAI/litellm/pull/38399)
- revert(proxy): remove router_model_name from auto-routed response bodies by [@​tin-berri](https://github.com/tin-berri) in [#​38429](https://github.com/BerriAI/litellm/pull/38429)
- fix(google_genai): price streamed generateContent with the provider that served it by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​36055](https://github.com/BerriAI/litellm/pull/36055)
- fix(logging): stop billing and logging response reads as LLM calls by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​36890](https://github.com/BerriAI/litellm/pull/36890)
- fix(budget): serialize model_max_budget before the /budget/update write by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38430](https://github.com/BerriAI/litellm/pull/38430)
- fix(ui): block the auto-router submit on a missing classifier model and an orphaned keyword rule by [@​tin-berri](https://github.com/tin-berri) in [#​38427](https://github.com/BerriAI/litellm/pull/38427)
- feat(complexity_router): heuristic-first classifier chaining by [@​tin-berri](https://github.com/tin-berri) in [#​38428](https://github.com/BerriAI/litellm/pull/38428)
- test(e2e): un-skip the per-model budget update case by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38437](https://github.com/BerriAI/litellm/pull/38437)
- fix(cost): stop double-billing cached tokens that overlap a modality by [@​Srivatsa03](https://github.com/Srivatsa03) in [#​37407](https://github.com/BerriAI/litellm/pull/37407)
- feat(ui): add Teams list CSV export with budgets, model grants, and rate limits by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38436](https://github.com/BerriAI/litellm/pull/38436)
- fix(mcp): accept raw x-litellm-api-key on streamable HTTP admission by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38364](https://github.com/BerriAI/litellm/pull/38364)
- fix: bound row count on GET /spend/logs to stop unbounded LiteLLM_SpendLogs scans by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38420](https://github.com/BerriAI/litellm/pull/38420)
- fix(scim): apply default_team_params (incl. models) to SCIM-created teams by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38433](https://github.com/BerriAI/litellm/pull/38433)
- fix(prompts): propagate prompt deletes to every worker and pod by [@​mateo-berri](https://github.com/mateo-berri) in [#​38434](https://github.com/BerriAI/litellm/pull/38434)
- fix(anthropic_adapter): carry web search cost into /v1/messages breakdown headers by [@​mateo-berri](https://github.com/mateo-berri) in [#​38439](https://github.com/BerriAI/litellm/pull/38439)
- fix(ui): show custom technical keywords on every router whose scorer runs by [@​tin-berri](https://github.com/tin-berri) in [#​38451](https://github.com/BerriAI/litellm/pull/38451)
- fix(e2e): move the vertex realtime suite off the retired Live preview model by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38454](https://github.com/BerriAI/litellm/pull/38454)
- feat(newrelic): per-team cost and usage metrics via team callbacks by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​37610](https://github.com/BerriAI/litellm/pull/37610)
- fix(ui): carry a preset's per-tier litellm_params through the prefill by [@​tin-berri](https://github.com/tin-berri) in [#​38453](https://github.com/BerriAI/litellm/pull/38453)
- fix(e2e): size the mid-conversation-system cache prefix above the minimum deterministically by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38468](https://github.com/BerriAI/litellm/pull/38468)
- fix(e2e): disable thinking on the gemini chat cost test instead of racing its budget by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38469](https://github.com/BerriAI/litellm/pull/38469)
- feat(ui): put the auto-router savings hero on a spend rail and a four-tile row by [@​tin-berri](https://github.com/tin-berri) in [#​38470](https://github.com/BerriAI/litellm/pull/38470)
- feat(ui): toggle internal health check visibility in request logs by [@​mateo-berri](https://github.com/mateo-berri) in [#​38391](https://github.com/BerriAI/litellm/pull/38391)
- fix(mcp): canonicalize bearer scheme on bridge egress by [@​daniel-meismer-zocdoc](https://github.com/daniel-meismer-zocdoc) in [#​38398](https://github.com/BerriAI/litellm/pull/38398)
- refactor: clean up fresh tech debt from 2026-08-27 window by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38484](https://github.com/BerriAI/litellm/pull/38484)
- fix(exception_mapping_utils): map unmapped exceptions when model and provider are unset by [@​mateo-berri](https://github.com/mateo-berri) in [#​38496](https://github.com/BerriAI/litellm/pull/38496)
- fix(ui_sso): resolve highest privilege Entra app role, not first in claim by [@​imranismail](https://github.com/imranismail) in [#​36728](https://github.com/BerriAI/litellm/pull/36728)
- fix(proxy): regenerate lazy OpenAPI snapshot and guard it in CI by [@​mateo-berri](https://github.com/mateo-berri) in [#​38410](https://github.com/BerriAI/litellm/pull/38410)
- feat(ui): add cache hit/miss filter to Request Logs by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38432](https://github.com/BerriAI/litellm/pull/38432)
- fix(bedrock): sign rerank requests with the shared header-filtered SigV4 helper (internal copy of [#​36462](https://github.com/BerriAI/litellm/issues/36462)) by [@​mateo-berri](https://github.com/mateo-berri) in [#​38093](https://github.com/BerriAI/litellm/pull/38093)
- fix(bedrock): sign rerank requests with the shared, header-filtered SigV4 helper by [@​noahnistler](https://github.com/noahnistler) in [#​36462](https://github.com/BerriAI/litellm/pull/36462)
- fix(ui): order the auto-routers table newest first so a new router lands on page one by [@​tin-berri](https://github.com/tin-berri) in [#​38545](https://github.com/BerriAI/litellm/pull/38545)
- feat(ui): run the Anthropic Family preset's reasoning tier on Opus 5 at high thinking by [@​tin-berri](https://github.com/tin-berri) in [#​38490](https://github.com/BerriAI/litellm/pull/38490)
- build(ui): bump nginx to 1.31-alpine by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38541](https://github.com/BerriAI/litellm/pull/38541)
- feat(otel): support per-team/per-key service.name for OTel v2 destinations by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38532](https://github.com/BerriAI/litellm/pull/38532)
- test(e2e): de-flake the cost-header cache read and the router fallback control by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38435](https://github.com/BerriAI/litellm/pull/38435)
- feat(gemini): day-0 support for gemini-3.5-transcribe and transcribe-live by [@​mateo-berri](https://github.com/mateo-berri) in [#​38540](https://github.com/BerriAI/litellm/pull/38540)
- feat(health): opt-in model-group allowlist for background health checks and health-check routing by [@​mateo-berri](https://github.com/mateo-berri) in [#​38539](https://github.com/BerriAI/litellm/pull/38539)
- fix(mcp): keep upstream OAuth Authorization when jwt signer hook injects one on tools/call by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38555](https://github.com/BerriAI/litellm/pull/38555)
- fix: suppress misleading register_model unresolved-cost warnings for entries without custom pricing by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38542](https://github.com/BerriAI/litellm/pull/38542)
- feat(proxy): opt-in budget rollover carrying overage into the next window by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38514](https://github.com/BerriAI/litellm/pull/38514)
- fix(auth): skip guaranteed-miss team lookup for the litellm-dashboard sentinel by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38471](https://github.com/BerriAI/litellm/pull/38471)
- fix(key_management): allow /key/update to keep or shrink MCP server grants the key already holds by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38463](https://github.com/BerriAI/litellm/pull/38463)
- fix: keep schema reconciliation from fighting a partitioned LiteLLM_SpendLogs by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38452](https://github.com/BerriAI/litellm/pull/38452)
- fix(ui): open select popups below the trigger instead of over it by [@​tin-berri](https://github.com/tin-berri) in [#​38554](https://github.com/BerriAI/litellm/pull/38554)
- fix(realtime): bill trailing audio when a Gemini transcribe Live session closes by [@​mateo-berri](https://github.com/mateo-berri) in [#​38563](https://github.com/BerriAI/litellm/pull/38563)
- test(e2e): cover key generate and update on the Admin UI path by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38448](https://github.com/BerriAI/litellm/pull/38448)
- chore: bump litellm-enterprise 0.1.60 -> 0.1.61, litellm-proxy-extras 0.4.89 -> 0.4.90 by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38566](https://github.com/BerriAI/litellm/pull/38566)
- fix(ui): let the paginated search select keep what the user types by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38475](https://github.com/BerriAI/litellm/pull/38475)
- fix(otel): anchor MCP tool-call spans to the gateway's own trace, link the client's context by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38317](https://github.com/BerriAI/litellm/pull/38317)
- fix: roll up the open deflake fixes for the MCP logging queue, PTU rollup, license gate, and pricing test isolation by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​37833](https://github.com/BerriAI/litellm/pull/37833)
- fix(model_prices): rolling registry audit - verified models and rates for Novita, DeepInfra, W\&B, Bedrock Sol, Gemini, Fireworks, Azure gpt-5.6, Mistral, Together by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38207](https://github.com/BerriAI/litellm/pull/38207)
- test(together_ai): assert fail-open supported params for models missing from the registry by [@​mateo-berri](https://github.com/mateo-berri) in [#​38487](https://github.com/BerriAI/litellm/pull/38487)
- test(e2e): let the together tool tests accept parallel calls by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38567](https://github.com/BerriAI/litellm/pull/38567)
- feat(mcp): let a resolved OAuth token target a custom upstream header by [@​tin-berri](https://github.com/tin-berri) in [#​38456](https://github.com/BerriAI/litellm/pull/38456)
- feat(together_ai): map reasoning_effort per model class by [@​mateo-berri](https://github.com/mateo-berri) in [#​38263](https://github.com/BerriAI/litellm/pull/38263)
- feat(dashscope): support qwen-image-3.0 and qwen-image-3.0-pro image generation by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38449](https://github.com/BerriAI/litellm/pull/38449)
- fix(cost): apply Together AI cache read pricing and per-model registry rates by [@​mateo-berri](https://github.com/mateo-berri) in [#​38280](https://github.com/BerriAI/litellm/pull/38280)
- fix(guardrails): forward aws_external_id when the bedrock guardrail assumes a role by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38376](https://github.com/BerriAI/litellm/pull/38376)
- fix(transcription): synthesize srt/vtt output for adapters without native subtitle formats by [@​mateo-berri](https://github.com/mateo-berri) in [#​38561](https://github.com/BerriAI/litellm/pull/38561)
- fix(streaming): preserve provider service-tier metadata so Vertex flex streams bill at flex rates by [@​mateo-berri](https://github.com/mateo-berri) in [#​38458](https://github.com/BerriAI/litellm/pull/38458)
- fix(realtime): bill Gemini Live native-audio output tokens at the audio rate by [@​mateo-berri](https://github.com/mateo-berri) in [#​38457](https://github.com/BerriAI/litellm/pull/38457)
- fix(anthropic): carry tool_reference tool results through the guardrail translation round trip by [@​mateo-berri](https://github.com/mateo-berri) in [#​38465](https://github.com/BerriAI/litellm/pull/38465)
- fix(anthropic-adapter): pass provider-native and OpenAI-format tools through on /v1/messages by [@​mateo-berri](https://github.com/mateo-berri) in [#​38431](https://github.com/BerriAI/litellm/pull/38431)
- test(e2e): serve the vision image from our own fixture by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38575](https://github.com/BerriAI/litellm/pull/38575)
- feat(together_ai): add zai-org/GLM-5.3-Flash to the model registry by [@​mateo-berri](https://github.com/mateo-berri) in [#​38486](https://github.com/BerriAI/litellm/pull/38486)
- fix(ui): stop server-searched comboboxes from clobbering picks and queries by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38574](https://github.com/BerriAI/litellm/pull/38574)
- feat(model_prices): let a map entry declare its exact reasoning_effort levels by [@​tin-berri](https://github.com/tin-berri) in [#​38481](https://github.com/BerriAI/litellm/pull/38481)
- fix(anthropic): carry the adaptive effort tier to every bridged Claude target by [@​tin-berri](https://github.com/tin-berri) in [#​38533](https://github.com/BerriAI/litellm/pull/38533)
- feat(alerting): add native Microsoft Teams alerting destination by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38367](https://github.com/BerriAI/litellm/pull/38367)
- chore(proxy): resync the generated API artifacts with the current models by [@​tin-berri](https://github.com/tin-berri) in [#​38587](https://github.com/BerriAI/litellm/pull/38587)
- fix(router): reject complexity-router settings written outside complexity_router_config by [@​tin-berri](https://github.com/tin-berri) in [#​38570](https://github.com/BerriAI/litellm/pull/38570)
- feat(ui): session-level cache observability in request logs by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38442](https://github.com/BerriAI/litellm/pull/38442)
- fix(ui): link Virtual Keys hint through the migrated /ui route by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38596](https://github.com/BerriAI/litellm/pull/38596)
- fix(anthropic): carry the effort tier only where the target declares reasoning_effort by [@​tin-berri](https://github.com/tin-berri) in [#​38592](https://github.com/BerriAI/litellm/pull/38592)
- fix(presidio): chunk oversized text before /analyze so large content blocks do not fail by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38483](https://github.com/BerriAI/litellm/pull/38483)
- fix(logging): stop stream-based log collectors classifying INFO logs as errors by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38476](https://github.com/BerriAI/litellm/pull/38476)
- feat(ui): dry-run an auto-router config against the backend before saving it by [@​tin-berri](https://github.com/tin-berri) in [#​38595](https://github.com/BerriAI/litellm/pull/38595)
- fix(guardrails): add fail-open mode to CrowdStrike AIDR guardrail by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38568](https://github.com/BerriAI/litellm/pull/38568)
- fix(router): copy instead of mutating caller metadata when scrubbing fallback stamp keys by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38586](https://github.com/BerriAI/litellm/pull/38586)
- feat(proxy): opt-in enforce_fallback_model_access authorizes router fallbacks against the calling key by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38572](https://github.com/BerriAI/litellm/pull/38572)
- fix(langfuse): warn and drop invalid LANGFUSE_TRACING_ENVIRONMENT instead of failing requests by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38582](https://github.com/BerriAI/litellm/pull/38582)
- fix(tencent): route thinking through extra_body in chat completions by [@​FelipeRodriguesGare](https://github.com/FelipeRodriguesGare) in [#​38100](https://github.com/BerriAI/litellm/pull/38100)
- test-check-commits by [@​nickhac](https://github.com/nickhac) in [#​36344](https://github.com/BerriAI/litellm/pull/36344)
- feat(proxy): dry-run a real request body on /auto_router/test_routing by [@​tin-berri](https://github.com/tin-berri) in [#​38590](https://github.com/BerriAI/litellm/pull/38590)
- fix(shadow_eval): refuse a judge model that also serves one of the arms it grades by [@​tin-berri](https://github.com/tin-berri) in [#​38589](https://github.com/BerriAI/litellm/pull/38589)
- fix(anthropic): resolve /v1/messages effort tiers through the capability owner by [@​tin-berri](https://github.com/tin-berri) in [#​38492](https://github.com/BerriAI/litellm/pull/38492)
- fix(router): fall over on raised mid-stream errors in /v1/messages streams by [@​mateo-berri](https://github.com/mateo-berri) in [#​38606](https://github.com/BerriAI/litellm/pull/38606)
- feat(models): add daily Together AI model registry sync script and workflow by [@​mateo-berri](https://github.com/mateo-berri) in [#​38257](https://github.com/BerriAI/litellm/pull/38257)
- feat(ui): the model and wire layer for operator-defined auto-router tier sets by [@​tin-berri](https://github.com/tin-berri) in [#​38602](https://github.com/BerriAI/litellm/pull/38602)
- fix(moonshot, together_ai): send the reasoning effort Kimi K3 accepts by [@​tin-berri](https://github.com/tin-berri) in [#​38611](https://github.com/BerriAI/litellm/pull/38611)
- fix(ui): one-click theme toggle and matching Docs/Blog styling in the top bar by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38601](https://github.com/BerriAI/litellm/pull/38601)
- feat(proxy): opt-in flags to require rpm/tpm on model and project create by [@​ansh-agrawal](https://github.com/ansh-agrawal) in [#​36514](https://github.com/BerriAI/litellm/pull/36514)
- fix(exceptions): keep a refused connection an APIConnectionError by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38624](https://github.com/BerriAI/litellm/pull/38624)
- chore(ci): promote internal staging to main by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38616](https://github.com/BerriAI/litellm/pull/38616)
- fix(anthropic): drop and self-heal empty thinking blocks on /v1/messages by [@​tin-berri](https://github.com/tin-berri) in [#​38625](https://github.com/BerriAI/litellm/pull/38625)
- fix(anthropic): handle per-level reasoning_effort flags without supports_reasoning by [@​tin-berri](https://github.com/tin-berri) in [#​38618](https://github.com/BerriAI/litellm/pull/38618)
- fix(complexity_router): route client housekeeping calls to the cheapest tier by [@​tin-berri](https://github.com/tin-berri) in [#​38598](https://github.com/BerriAI/litellm/pull/38598)
- test: fix staging CI regressions from [#​38182](https://github.com/BerriAI/litellm/issues/38182), [#​38144](https://github.com/BerriAI/litellm/issues/38144), [#​38265](https://github.com/BerriAI/litellm/issues/38265), [#​37962](https://github.com/BerriAI/litellm/issues/37962), and [#​37969](https://github.com/BerriAI/litellm/issues/37969) by [@​mateo-berri](https://github.com/mateo-berri) in [#​38304](https://github.com/BerriAI/litellm/pull/38304)
- feat(spend): report prompt caching savings as total and gateway-attributed by [@​tin-berri](https://github.com/tin-berri) in [#​38134](https://github.com/BerriAI/litellm/pull/38134)
- fix(proxy): let llm_api virtual keys read /model_group/info by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38662](https://github.com/BerriAI/litellm/pull/38662)
- feat(ui): edit the auto-router tier set with custom classifier-defined tiers by [@​tin-berri](https://github.com/tin-berri) in [#​38603](https://github.com/BerriAI/litellm/pull/38603)
- fix(proxy): count tools, system, and Anthropic image and document blocks in the count_tokens fallback (internal copy of [#​36671](https://github.com/BerriAI/litellm/issues/36671)) by [@​mateo-berri](https://github.com/mateo-berri) in [#​38657](https://github.com/BerriAI/litellm/pull/38657)
- test: refresh the suites that drifted from langfuse and OpenAI's retired Assistants API by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38637](https://github.com/BerriAI/litellm/pull/38637)
- test(e2e): unskip four tests whose blockers no longer hold by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38640](https://github.com/BerriAI/litellm/pull/38640)
- feat(proxy): add paginated GET /public/v1/model_hub by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38636](https://github.com/BerriAI/litellm/pull/38636)
- refactor(ui): type search tool params from the generated schema by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38633](https://github.com/BerriAI/litellm/pull/38633)
- feat(a2a): semantic search over the agent registry via GET /v1/agents?query and an agent_search MCP tool by [@​mateo-berri](https://github.com/mateo-berri) in [#​38609](https://github.com/BerriAI/litellm/pull/38609)
- fix(model_prices): add bedrock_mantle gpt-5.5/5.4 272K tiers, align sol with AWS invoice by [@​mateo-berri](https://github.com/mateo-berri) in [#​38615](https://github.com/BerriAI/litellm/pull/38615)
- fix(ui): keep the usage filter visible when the caller's scope is empty by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38581](https://github.com/BerriAI/litellm/pull/38581)
- fix(registry): add Gemini Omni 1.1 Flash, xAI grok-imagine image models, Mistral cache-read pricing, GLM 5.3 Flash + Kimi K2.7 Code entries by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38560](https://github.com/BerriAI/litellm/pull/38560)
- fix(logging): preserve null end user in callbacks by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38642](https://github.com/BerriAI/litellm/pull/38642)
- test: close mutation-testing gaps in container, skills and openai-like config factories by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38677](https://github.com/BerriAI/litellm/pull/38677)
- fix: enforce MCP toolsets attached to a team, org, or internal user by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38488](https://github.com/BerriAI/litellm/pull/38488)
- fix(tests): drain the global logging worker in RAG aquery billing tests by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38653](https://github.com/BerriAI/litellm/pull/38653)
- chore(techdebt): type new signatures and drop slop comments from the last 24h by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38644](https://github.com/BerriAI/litellm/pull/38644)
- feat(auto_router): write and preview the classifier prompt an edited tier set sends by [@​tin-berri](https://github.com/tin-berri) in [#​38605](https://github.com/BerriAI/litellm/pull/38605)
- fix(proxy): price the /v1/messages cost header by the deployment model, not the client alias by [@​mateo-berri](https://github.com/mateo-berri) in [#​38691](https://github.com/BerriAI/litellm/pull/38691)
- fix(streaming): preserve provider model for cost calculation by [@​aaaaaandrew](https://github.com/aaaaaandrew) in [#​38656](https://github.com/BerriAI/litellm/pull/38656)
- feat(models): sync together_ai model registry by [@​github-actions](https://github.com/github-actions)\[bot] in [#​38694](https://github.com/BerriAI/litellm/pull/38694)
- test(e2e): cover Together reasoning_effort=none, json_schema, and cache-read pricing by [@​mateo-berri](https://github.com/mateo-berri) in [#​38697](https://github.com/BerriAI/litellm/pull/38697)
- fix(model_info): map supports_parallel_function_calling into ModelInfo by [@​mateo-berri](https://github.com/mateo-berri) in [#​38692](https://github.com/BerriAI/litellm/pull/38692)
- test(litellm_utils_tests): give the aiohttp transport tests teeth by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38066](https://github.com/BerriAI/litellm/pull/38066)
- fix(proxy): use default_factory for \_BudgetCascade.rollover_caps by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​38687](https://github.com/BerriAI/litellm/pull/38687)
- feat(guardrails): add Lakera v2 skip-message honoring and advisory (inject_system_message) mode by [@​deepanshululla](https://github.com/deepanshululla) in [#​34940](https://github.com/BerriAI/litellm/pull/34940)
- fix(router): drop a tier param the routed target cannot take by [@​tin-berri](https://github.com/tin-berri) in [#​38622](https://github.com/BerriAI/litellm/pull/38622)
- fix(router): scrub fallback stamp keys in place and strip them at the proxy boundary by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38690](https://github.com/BerriAI/litellm/pull/38690)
- fix(shadow-eval): validate Anthropic SDK judge credentials by [@​tin-berri](https://github.com/tin-berri) in [#​38701](https://github.com/BerriAI/litellm/pull/38701)
- feat(ui): run the Lite preset's medium and complex tiers at their documented efforts by [@​tin-berri](https://github.com/tin-berri) in [#​38482](https://github.com/BerriAI/litellm/pull/38482)
- chore: drop stray learnings.md workflow note from CLAUDE.md by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38704](https://github.com/BerriAI/litellm/pull/38704)
- fix(spend): remove the proxy-wide autorouter savings baseline override by [@​tin-berri](https://github.com/tin-berri) in [#​38700](https://github.com/BerriAI/litellm/pull/38700)
- fix(router): tier-pinned reasoning_effort supersedes client effort carriers by [@​tin-berri](https://github.com/tin-berri) in [#​38698](https://github.com/BerriAI/litellm/pull/38698)
- fix(proxy): reset a key's budget-window counters on spend reset by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​38686](https://github.com/BerriAI/litellm/pull/38686)
- feat(shadow_eval): measure both arms' cost so a job reports what the router would have saved by [@​tin-berri](https://github.com/tin-berri) in [#​38631](https://github.com/BerriAI/litellm/pull/38631)
- fix(gpt-5): stop forwarding temperature and top_p to reasoning models that reject them by [@​tin-berri](https://github.com/tin-berri) in [#​38593](https://github.com/BerriAI/litellm/pull/38593)
- fix(streaming): report response_cost and Anthropic citations from stream_chunk_builder by [@​mateo-berri](https://github.com/mateo-berri) in [#​38696](https://github.com/BerriAI/litellm/pull/38696)
- feat(ui): make provider logos readable in dark mode by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38588](https://github.com/BerriAI/litellm/pull/38588)
- feat(terraform): resource and data source parity with the community provider by [@​shivamrawat1](https://github.com/shivamrawat1) in [#​38158](https://github.com/BerriAI/litellm/pull/38158)
- test(shadow_eval): configure the anthropic sdk judge in the funnel-seed test by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38717](https://github.com/BerriAI/litellm/pull/38717)
- fix(ci): fall back to github.token when the GH_TOKEN secret is unset in the Together sync workflow by [@​mateo-berri](https://github.com/mateo-berri) in [#​38695](https://github.com/BerriAI/litellm/pull/38695)
- feat(terraform): add litellm_jwt_key_mapping resource by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38714](https://github.com/BerriAI/litellm/pull/38714)
- feat(terraform): coverage-enforcing CI gate against the latest OpenAPI spec by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38710](https://github.com/BerriAI/litellm/pull/38710)
- fix(terraform): refresh jwt key mapping allowlist entries now that the resource is merged by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38720](https://github.com/BerriAI/litellm/pull/38720)
- fix(guardrails): record post_call scans on native /v1/messages streams by [@​mateo-berri](https://github.com/mateo-berri) in [#​38713](https://github.com/BerriAI/litellm/pull/38713)
- chore(deps): raise RestrictedPython floor to 8.5 by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38715](https://github.com/BerriAI/litellm/pull/38715)
- fix(proxy): trigger async_pre_call_hook on POST /v1/files uploads by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38607](https://github.com/BerriAI/litellm/pull/38607)
- test(responses): adapt temperature tests to the gpt-5 reasoning validation by [@​mateo-berri](https://github.com/mateo-berri) in [#​38748](https://github.com/BerriAI/litellm/pull/38748)
- fix(router): pin batch, file, and fine-tuning job ids to their owning model group on fallback by [@​mateo-berri](https://github.com/mateo-berri) in [#​38742](https://github.com/BerriAI/litellm/pull/38742)
- fix(bedrock): map real batch record counts and guard zero-count retire by [@​mateo-berri](https://github.com/mateo-berri) in [#​38744](https://github.com/BerriAI/litellm/pull/38744)
- fix(aws): forward aws_external_id in Bedrock embeddings and SageMaker credential loading by [@​mateo-berri](https://github.com/mateo-berri) in [#​38727](https://github.com/BerriAI/litellm/pull/38727)
- fix(aws): build every AWS endpoint and ARN from the region's partition (aws-cn, aws-us-gov) by [@​mateo-berri](https://github.com/mateo-berri) in [#​38747](https://github.com/BerriAI/litellm/pull/38747)
- refactor(types): replace Any with real types across 178 backend files by [@​mateo-berri](https://github.com/mateo-berri) in [#​38501](https://github.com/BerriAI/litellm/pull/38501)
- feat(hosted_vllm): add vLLM-Omni videos API by [@​mubashir1osmani](https://github.com/mubashir1osmani) in [#​38148](https://github.com/BerriAI/litellm/pull/38148)
- fix(databricks): derive OAuth token URL from workspace origin by [@​ump45nose](https://github.com/ump45nose) in [#​35940](https://github.com/BerriAI/litellm/pull/35940)
- test(e2e): add logging e2e coverage (s3_v2, gcs_bucket, team langfuse callback, datadog failure) by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38552](https://github.com/BerriAI/litellm/pull/38552)
- fix(batches): fill a managed batch page past rows that will not parse by [@​mateo-berri](https://github.com/mateo-berri) in [#​38738](https://github.com/BerriAI/litellm/pull/38738)
- fix(proxy): tag routing misses proxy-merged tags when chat requests carry litellm_metadata by [@​mateo-berri](https://github.com/mateo-berri) in [#​38739](https://github.com/BerriAI/litellm/pull/38739)
- fix(health): honor allow_requests_on_db_unavailable in readiness probe by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​37640](https://github.com/BerriAI/litellm/pull/37640)
- feat(mcp): support asymmetric (RS256) signing for MCP gateway session tokens by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38728](https://github.com/BerriAI/litellm/pull/38728)
- fix(ui): make code blocks follow the theme in dark mode by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38771](https://github.com/BerriAI/litellm/pull/38771)
- perf(rust): use pythonize for bridge serialization by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​38764](https://github.com/BerriAI/litellm/pull/38764)
- fix(policy): let the AI policy suggester drop sampling params its model refuses by [@​tin-berri](https://github.com/tin-berri) in [#​38594](https://github.com/BerriAI/litellm/pull/38594)
- feat(ui): link team and key model chips to the models page filtered to that group by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38626](https://github.com/BerriAI/litellm/pull/38626)
- fix(ui): make the logs JSON viewer follow the theme in dark mode by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38778](https://github.com/BerriAI/litellm/pull/38778)
- chore: bump litellm-enterprise 0.1.61 -> 0.1.62, litellm-proxy-extras 0.4.90 -> 0.4.91 by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38779](https://github.com/BerriAI/litellm/pull/38779)
- refactor: clean up tech debt that landed on 2026-08-29 by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38743](https://github.com/BerriAI/litellm/pull/38743)
- fix(managed resources): let keys with no user_id or team_id read their own batches and files by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​34849](https://github.com/BerriAI/litellm/pull/34849)
- fix(proxy): pin model reconcile read to the writer DB so /model/new does not 500 under read replica lag by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38580](https://github.com/BerriAI/litellm/pull/38580)
- fix(ui): restore the reopen control for the log drawer's trace sidebar by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38782](https://github.com/BerriAI/litellm/pull/38782)
- fix(azure): use /openai/v1 image routes for v1, preview and latest api versions by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38285](https://github.com/BerriAI/litellm/pull/38285)
- fix(soniox): align synthesized SRT/VTT cues to real speech timing by [@​dan2k3k4](https://github.com/dan2k3k4) in [#​34440](https://github.com/BerriAI/litellm/pull/34440)
- fix(bedrock): route all cohere.embed models to the cohere embedding config by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38670](https://github.com/BerriAI/litellm/pull/38670)
- feat(mcp_gateway): add RFC 7662 introspection for gateway session tokens by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38726](https://github.com/BerriAI/litellm/pull/38726)
- fix(headroom): resolve CCR retrieval on streaming /chat/completions by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​35017](https://github.com/BerriAI/litellm/pull/35017)
- fix: bound Hugging Face config fetch and keep embedding tests off the network by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38752](https://github.com/BerriAI/litellm/pull/38752)
- feat(vertex-ai): add veo 3.1 lite model metadata by [@​emerzon](https://github.com/emerzon) in [#​30782](https://github.com/BerriAI/litellm/pull/30782)
- feat(proxy): cyberark conjur secret manager configuration via Admin UI by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38445](https://github.com/BerriAI/litellm/pull/38445)
- ci: build the benchmark environment outside the CodSpeed runner by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38426](https://github.com/BerriAI/litellm/pull/38426)
- fix(proxy): give every `requests` call a timeout so a silent server cannot hang the caller by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38234](https://github.com/BerriAI/litellm/pull/38234)
- fix(batches): aggregate reasoning tokens and per-line pass/fail counts by [@​mubashir1osmani](https://github.com/mubashir1osmani) in [#​37208](https://github.com/BerriAI/litellm/pull/37208)
- fix(ui): allow in-place editing of classifier numeric inputs by [@​tin-berri](https://github.com/tin-berri) in [#​38803](https://github.com/BerriAI/litellm/pull/38803)
- fix(anthropic): emit signature-only thinking blocks on the /v1/messages bridge by [@​tin-berri](https://github.com/tin-berri) in [#​38809](https://github.com/BerriAI/litellm/pull/38809)
- fix(ui): keep a deleted-from search query instead of blanking the box by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38830](https://github.com/BerriAI/litellm/pull/38830)
- fix(proxy): run SMTP send_email off the event loop with a connection timeout by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38473](https://github.com/BerriAI/litellm/pull/38473)
- feat(budgets): enforce shared budgets on model access groups by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38784](https://github.com/BerriAI/litellm/pull/38784)
- feat(vertex_ai): support gemini-3.5-transcribe on /v1/audio/transcriptions by [@​mateo-berri](https://github.com/mateo-berri) in [#​38740](https://github.com/BerriAI/litellm/pull/38740)
- fix(anthropic_endpoints): serialize dict-detail HTTPExceptions on /v1/messages like sibling surfaces by [@​mateo-berri](https://github.com/mateo-berri) in [#​38741](https://github.com/BerriAI/litellm/pull/38741)
- fix(proxy): count auto-router classifier cost in savings and benchmarks by [@​tin-berri](https://github.com/tin-berri) in [#​38835](https://github.com/BerriAI/litellm/pull/38835)
- feat(proxy): add LiteLLM_BudgetWindowSpend table for per-window budget spend by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​35854](https://github.com/BerriAI/litellm/pull/35854)
- feat(policy_engine): execute post_call guardrail pipelines on streaming responses by [@​mateo-berri](https://github.com/mateo-berri) in [#​38788](https://github.com/BerriAI/litellm/pull/38788)
- fix(models): registry audit: new Together/Fireworks/Gemini/Mistral/xAI models, xai retirement repricing, bedrock grok-4.6 caching, deprecation dates by [@​mateo-berri](https://github.com/mateo-berri) in [#​38804](https://github.com/BerriAI/litellm/pull/38804)
- feat(proxy): maintain per-window budget spend rows in the spend writer by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​35886](https://github.com/BerriAI/litellm/pull/35886)
- perf(proxy): read budget-window spend from the maintained window table by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​35887](https://github.com/BerriAI/litellm/pull/35887)
- fix(together_ai): stop writing context_length as max_output_tokens in the serverless sync by [@​mateo-berri](https://github.com/mateo-berri) in [#​38820](https://github.com/BerriAI/litellm/pull/38820)
- fix(openai): flatten top-level anyOf/oneOf/allOf in Responses API tool schemas by [@​mateo-berri](https://github.com/mateo-berri) in [#​38792](https://github.com/BerriAI/litellm/pull/38792)
- fix(anthropic): cap reasoning_effort thinking budget below max_tokens on /v1/messages by [@​mateo-berri](https://github.com/mateo-berri) in [#​38836](https://github.com/BerriAI/litellm/pull/38836)
- fix(azure): flatten top-level tool schema combinators for Azure Responses GPT-4-family deployments by [@​mateo-berri](https://github.com/mateo-berri) in [#​38837](https://github.com/BerriAI/litellm/pull/38837)
- chore: rebuild Admin UI bundle for the next release by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38846](https://github.com/BerriAI/litellm/pull/38846)
- fix(proxy): list all non-team models for users with an empty model list by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38249](https://github.com/BerriAI/litellm/pull/38249)
- fix(guardrails): stop Lakera monitor mode forwarding unmasked PII on Responses-API bodies by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38841](https://github.com/BerriAI/litellm/pull/38841)
- feat(mcp): bulk-import Anthropic MCP connectors via API and admin UI by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38444](https://github.com/BerriAI/litellm/pull/38444)
- feat(ui): set a model access group's shared budget from the dashboard by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38843](https://github.com/BerriAI/litellm/pull/38843)
- fix(ui): drop stray text next to Close in the model connection test dialog by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38852](https://github.com/BerriAI/litellm/pull/38852)
- feat(helm): make extra ingress paths configurable in the componentized chart by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​35700](https://github.com/BerriAI/litellm/pull/35700)
- fix(otel/v2): detach credential-routed tenant spans into their own trace by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38847](https://github.com/BerriAI/litellm/pull/38847)
- test(e2e): stop the reliability fallback tests flaking on gpt-5.5's reasoning budget by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38833](https://github.com/BerriAI/litellm/pull/38833)
- test(e2e): retry upstream-saturation failures in the claude CLI driver by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38850](https://github.com/BerriAI/litellm/pull/38850)
- chore(ci): promote internal staging to main by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​38805](https://github.com/BerriAI/litellm/pull/38805)
- fix(proxy): emit timing headers and overhead for /v1/messages and /v1/responses by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38840](https://github.com/BerriAI/litellm/pull/38840)
- fix(tests): derive the no-cache-read-rate savings baseline from the model map by [@​tin-berri](https://github.com/tin-berri) in [#​38863](https://github.com/BerriAI/litellm/pull/38863)
- chore(typing): clear Any seams across 47 files, ratchet basedpyright ceilings -3,302 by [@​mateo-berri](https://github.com/mateo-berri) in [#​37778](https://github.com/BerriAI/litellm/pull/37778)
- chore(typing): clear 1.2k basedpyright Any errors across 16 hotspot files by [@​mateo-berri](https://github.com/mateo-berri) in [#​36722](https://github.com/BerriAI/litellm/pull/36722)
- feat(bedrock): honor streaming buffer/sampling config for unbuffered post_call scans by [@​mateo-berri](https://github.com/mateo-berri) in [#​38722](https://github.com/BerriAI/litellm/pull/38722)
- feat(cli): set ENABLE_TOOL_SEARCH=true for lite claude by [@​mateo-berri](https://github.com/mateo-berri) in [#​38942](https://github.com/BerriAI/litellm/pull/38942)
- fix(proxy): deliver budget alerts on webhook-only alerting and accept ALERTING_WEBHOOK_URL by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38441](https://github.com/BerriAI/litellm/pull/38441)
- docs(claude.md): require tests to check behavior, not code structure by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38772](https://github.com/BerriAI/litellm/pull/38772)
- chore(newrelic): cover static default_team_settings per-team routing by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38857](https://github.com/BerriAI/litellm/pull/38857)
- fix: update stale source URLs and deprecation dates in model cost map by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38801](https://github.com/BerriAI/litellm/pull/38801)
- feat(ci): close duplicate issues after a 3-day grace period by [@​mubashir1osmani](https://github.com/mubashir1osmani) in [#​38381](https://github.com/BerriAI/litellm/pull/38381)
- docs(proxy): clarify spend semantics on /v2/user/info and /user/daily/activity by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38883](https://github.com/BerriAI/litellm/pull/38883)
- fix(guardrails): configure Prompt Security file timeout policy by [@​davida-ps](https://github.com/davida-ps) in [#​38083](https://github.com/BerriAI/litellm/pull/38083)
- fix(bedrock): stop duplicating Converse config blocks inside inferenceConfig by [@​mateo-berri](https://github.com/mateo-berri) in [#​38993](https://github.com/BerriAI/litellm/pull/38993)
- fix(guardrails): exclude images from HiddenLayer v1 scans by [@​Ashton-Sidhu](https://github.com/Ashton-Sidhu) in [#​29210](https://github.com/BerriAI/litellm/pull/29210)
- feat(spend_tracking): persist router metadata in spend logs for internal router models by [@​mateo-berri](https://github.com/mateo-berri) in [#​39001](https://github.com/BerriAI/litellm/pull/39001)
- fix(vertex_ai): graft default vertex path when api_base has a version-only path by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38986](https://github.com/BerriAI/litellm/pull/38986)
- fix(proxy): allow unblocking customers via /customer/update by [@​cat0825](https://github.com/cat0825) in [#​34696](https://github.com/BerriAI/litellm/pull/34696)
- feat(openai): support workload identity federation (OIDC token exchange) by [@​mateo-berri](https://github.com/mateo-berri) in [#​38995](https://github.com/BerriAI/litellm/pull/38995)
- fix(otel): emit cache token counts on OTel v2 LLM spans by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38716](https://github.com/BerriAI/litellm/pull/38716)
- feat(proxy): add /v1/responses/input_tokens token counting endpoint by [@​mateo-berri](https://github.com/mateo-berri) in [#​38997](https://github.com/BerriAI/litellm/pull/38997)
- fix(docker): bump wolfi-base for glibc 2.44 and pin apk python to 3.13 by [@​mateo-berri](https://github.com/mateo-berri) in [#​38917](https://github.com/BerriAI/litellm/pull/38917)
- fix(docker): bump wolfi-base for glibc 2.44 and pin apk python to 3.13 in migrations image by [@​mateo-berri](https://github.com/mateo-berri) in [#​38973](https://github.com/BerriAI/litellm/pull/38973)
- feat(friendli): add zai-org/GLM-5.3-Flash model pricing by [@​Lee-Si-Yoon](https://github.com/Lee-Si-Yoon) in [#​38880](https://github.com/BerriAI/litellm/pull/38880)
- chore(techdebt): clear fresh debt from the 2026-08-29 and 2026-08-30 windows by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38884](https://github.com/BerriAI/litellm/pull/38884)
- fix(bedrock): surface Nova Sonic user transcripts, speech events, and usage in realtime API by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38597](https://github.com/BerriAI/litellm/pull/38597)
- fix(guardrails): carry Anthropic url image sources through to guardrails by [@​samtsai15](https://github.com/samtsai15) in [#​38940](https://github.com/BerriAI/litellm/pull/38940)
- feat(friendli): add zai-org/GLM-5.3 model pricing by [@​Lee-Si-Yoon](https://github.com/Lee-Si-Yoon) in [#​38881](https://github.com/BerriAI/litellm/pull/38881)
- fix(router): apply model renames to the in-memory deployment list by [@​yatishgoel](https://github.com/yatishgoel) in [#​38479](https://github.com/BerriAI/litellm/pull/38479)
- test(e2e): cover SCIM token creation and SCIM API auth in the Admin UI suite by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39027](https://github.com/BerriAI/litellm/pull/39027)
- feat(gigachat): add native API passthrough routes with spend logging by [@​mateo-berri](https://github.com/mateo-berri) in [#​38913](https://github.com/BerriAI/litellm/pull/38913)
- feat(gigachat): add passthrough gigachat route by [@​KnyazSh](https://github.com/KnyazSh) in [#​25886](https://github.com/BerriAI/litellm/pull/25886)
- feat(complexity-router): add classification_mode to skip classifier on continuation turns by [@​tin-berri](https://github.com/tin-berri) in [#​38861](https://github.com/BerriAI/litellm/pull/38861)
- fix(proxy): preserve model table columns on master key rotation by [@​mateo-berri](https://github.com/mateo-berri) in [#​38878](https://github.com/BerriAI/litellm/pull/38878)
- fix(speech): stop forwarding response_format as a chat param for Gemini TTS by [@​mateo-berri](https://github.com/mateo-berri) in [#​38819](https://github.com/BerriAI/litellm/pull/38819)
- fix(proxy): return 200 from /model/block and /model/unblock instead of 500 by [@​mateo-berri](https://github.com/mateo-berri) in [#​38873](https://github.com/BerriAI/litellm/pull/38873)
- feat(complexity_router): escalate oversized prompts to a tier that fits before dispatch by [@​tin-berri](https://github.com/tin-berri) in [#​38844](https://github.com/BerriAI/litellm/pull/38844)
- feat(shadow_eval): target teams and users so JWT-auth traffic can be evaluated by [@​tin-berri](https://github.com/tin-berri) in [#​39015](https://github.com/BerriAI/litellm/pull/39015)
- fix(anthropic_messages): drain upstream in a detached pump so client … by [@​nuernber](https://github.com/nuernber) in [#​36008](https://github.com/BerriAI/litellm/pull/36008)
- refactor(proxy): bound the budget window seed by time instead of request ids by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​38851](https://github.com/BerriAI/litellm/pull/38851)
- fix(proxy): ship psycopg so partitioned SpendLogs detection actually runs by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​38994](https://github.com/BerriAI/litellm/pull/38994)
- test(e2e): assert user-observable behavior instead of DOM structure by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39016](https://github.com/BerriAI/litellm/pull/39016)
- build(rust): configure native extension profiles by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39020](https://github.com/BerriAI/litellm/pull/39020)
- fix(ui): keep litellm_credential_name from LiteLLM Params JSON when no credential is selected by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39005](https://github.com/BerriAI/litellm/pull/39005)
- Revert "fix(ui): keep litellm_credential_name from LiteLLM Params JSON when no credential is selected" by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​39046](https://github.com/BerriAI/litellm/pull/39046)
- fix(auth): quiet malformed virtual key rejections to stdout by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38838](https://github.com/BerriAI/litellm/pull/38838)
- fix(proxy): wire team-level logging callbacks into passthrough endpoints by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​38979](https://github.com/BerriAI/litellm/pull/38979)
- feat(complexity_router): opt-in modality-based capability routing for image requests by [@​tin-berri](https://github.com/tin-berri) in [#​39032](https://github.com/BerriAI/litellm/pull/39032)
- fix(ui): let the auto-router scoring tier list follow the theme by [@​tin-berri](https://github.com/tin-berri) in [#​39040](https://github.com/BerriAI/litellm/pull/39040)
- feat(ui): auto-router controls for context-window escalation by [@​tin-berri](https://github.com/tin-berri) in [#​39054](https://github.com/BerriAI/litellm/pull/39054)
- fix(redis): coerce env var string types and fix param discovery through decorator wrappers by [@​koladefaj](https://github.com/koladefaj) in [#​30644](https://github.com/BerriAI/litellm/pull/30644)
- feat(key management): show budget window usage on /key/info by [@​Thijmen](https://github.com/Thijmen) in [#​37044](https://github.com/BerriAI/litellm/pull/37044)
- fix(websearch): reject invalid explicit search tool selections by [@​georgeatparallel](https://github.com/georgeatparallel) in [#​38113](https://github.com/BerriAI/litellm/pull/38113)
- feat(shadow_eval): compare several auto-routers on one job's sampled traffic by [@​tin-berri](https://github.com/tin-berri) in [#​39028](https://github.com/BerriAI/litellm/pull/39028)
- fix(speech): honor pcm/wav response_format for Gemini TTS and reject unsupported containers by [@​mateo-berri](https://github.com/mateo-berri) in [#​38868](https://github.com/BerriAI/litellm/pull/38868)
- fix(proxy): match /v1/audio/speech content-type to the returned audio format by [@​mateo-berri](https://github.com/mateo-berri) in [#​38798](https://github.com/BerriAI/litellm/pull/38798)
- test(e2e): drop the two mgmt registry cells no shared-proxy test can cover by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39055](https://github.com/BerriAI/litellm/pull/39055)
- feat(ui): one classification frequency picker for complexity auto-routers by [@​tin-berri](https://github.com/tin-berri) in [#​39042](https://github.com/BerriAI/litellm/pull/39042)
- test(e2e/ui): automate 8 manual QA checklist flows by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39025](https://github.com/BerriAI/litellm/pull/39025)
- fix(key_management): allow non-admin key_type preset transitions on /key/update by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39051](https://github.com/BerriAI/litellm/pull/39051)
- chore(typing): clear 1.1k basedpyright Any errors across 53 backend files by [@​mateo-berri](https://github.com/mateo-berri) in [#​38796](https://github.com/BerriAI/litellm/pull/38796)
- fix(openai): forward reasoning_effort for unknown model aliases instead of failing closed by [@​mateo-berri](https://github.com/mateo-berri) in [#​39065](https://github.com/BerriAI/litellm/pull/39065)
- test(e2e-ui): poll credential availability before Test Connect to deflake multi-instance runs by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39073](https://github.com/BerriAI/litellm/pull/39073)
- feat(ui): modality routing toggle on the auto-router create and edit forms by [@​tin-berri](https://github.com/tin-berri) in [#​39059](https://github.com/BerriAI/litellm/pull/39059)
- fix(proxy): include litellm_model_table in GET /v2/team/list by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​39045](https://github.com/BerriAI/litellm/pull/39045)
- fix(bedrock): mask signed request headers in guardrail debug log by [@​mateo-berri](https://github.com/mateo-berri) in [#​39044](https://github.com/BerriAI/litellm/pull/39044)
- fix(bedrock): forward aws_external_id in files and batches credential loading by [@​mateo-berri](https://github.com/mateo-berri) in [#​39066](https://github.com/BerriAI/litellm/pull/39066)
- fix(mcp): persist alias MCP grants verbatim instead of rewriting to local server ids by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39119](https://github.com/BerriAI/litellm/pull/39119)
- fix(responses): json-encode object tool call arguments in the chat completions bridge by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​35417](https://github.com/BerriAI/litellm/pull/35417)
- fix(cost): bill OCR annotation pages via annotation_cost_per_page by [@​mateo-berri](https://github.com/mateo-berri) in [#​38985](https://github.com/BerriAI/litellm/pull/38985)
- fix(policy_engine): restore request guardrails list after pipeline allow by [@​mateo-berri](https://github.com/mateo-berri) in [#​39038](https://github.com/BerriAI/litellm/pull/39038)
- fix(embeddings): omit encoding_format when the client omits it on OpenAI-compatible calls by [@​mateo-berri](https://github.com/mateo-berri) in [#​38774](https://github.com/BerriAI/litellm/pull/38774)
- test: deflake MCP registry state, savings cost map, and MCP identity env reload tests by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38891](https://github.com/BerriAI/litellm/pull/38891)
- feat(helm): add Argo CD PreSync hook and rollout strategy knobs to the componentized chart by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39112](https://github.com/BerriAI/litellm/pull/39112)
- fix(registry): veo 3.1 pricing tiers + roll up open registry PRs (glm-5.2, Qwen3.8-Flash, gemma-4-31b, scribe_v2, fireworks/databricks deepseek v4) + deprecation dates by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38990](https://github.com/BerriAI/litellm/pull/38990)
- test(ui): budget DOM-structure assertions in dashboard tests by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39082](https://github.com/BerriAI/litellm/pull/39082)
- test(ui): assert DataTable behavior instead of DOM structure by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39084](https://github.com/BerriAI/litellm/pull/39084)
- test(ui): query the screen instead of the render result by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39085](https://github.com/BerriAI/litellm/pull/39085)
- fix(ui): stop checkboxes stretching to the full width of a form field by [@​yatishgoel](https://github.com/yatishgoel) in [#​39108](https://github.com/BerriAI/litellm/pull/39108)
- chore: bump litellm-enterprise 0.1.62 -> 0.1.63, litellm-proxy-extras 0.4.91 -> 0.4.92, litellm 1.100.0 -> 1.101.0 by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39140](https://github.com/BerriAI/litellm/pull/39140)
- revert: restore search tool fallback when no router is configured by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39146](https://github.com/BerriAI/litellm/pull/39146)
- test(websearch): register configured search tool in pre-request hook test by [@​mateo-berri](https://github.com/mateo-berri) in [#​39074](https://github.com/BerriAI/litellm/pull/39074)
- feat(proxy): default to the v2 migration resolver, keep v1 as an opt-out by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​31125](https://github.com/BerriAI/litellm/pull/31125)
- build(deps): bump browserslist to 4.28.8 to clear osv-scan by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39142](https://github.com/BerriAI/litellm/pull/39142)
- fix(ui): render the skill detail page with theme tokens by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39130](https://github.com/BerriAI/litellm/pull/39130)
- feat: add Azure AI DeepSeek V4 Flash 0731 pricing by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39023](https://github.com/BerriAI/litellm/pull/39023)
- fix(streaming): keep response id stable across streamed chunks by [@​Timik232](https://github.com/Timik232) in [#​38106](https://github.com/BerriAI/litellm/pull/38106)
- test(e2e/ui): cover the Budgets page create, edit and delete flows by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39052](https://github.com/BerriAI/litellm/pull/39052)
- feat(dashscope): add QwenCloud and Qwen AI Platform provider aliases by [@​mateo-berri](https://github.com/mateo-berri) in [#​39149](https://github.com/BerriAI/litellm/pull/39149)
- fix(bedrock): forward native structured outputs on Invoke instead of silently inlining the schema by [@​tin-berri](https://github.com/tin-berri) in [#​39070](https://github.com/BerriAI/litellm/pull/39070)
- test(e2e/ui): cover creating, testing and deleting a guardrail by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39053](https://github.com/BerriAI/litellm/pull/39053)
- refactor(types): replace Any with precise types across 73 modules by [@​mateo-berri](https://github.com/mateo-berri) in [#​39104](https://github.com/BerriAI/litellm/pull/39104)
- feat(models): add Claude Fable 5.1 across Anthropic, Bedrock, Vertex AI, and Azure AI by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39148](https://github.com/BerriAI/litellm/pull/39148)
- feat(guardrails): add Alice guardrail by [@​seanyasno-af](https://github.com/seanyasno-af) in [#​38898](https://github.com/BerriAI/litellm/pull/38898)
- test(e2e/ui): cover the Logs page filter drawer by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39056](https://github.com/BerriAI/litellm/pull/39056)
- test(e2e/ui): stop the suite failing on things that are not regressions by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39063](https://github.com/BerriAI/litellm/pull/39063)
- test(e2e/ui): cover the team Settings tab by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39058](https://github.com/BerriAI/litellm/pull/39058)
- test(e2e/ui): cover the Usage page activity tabs by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39061](https://github.com/BerriAI/litellm/pull/39061)
- fix(ui): render the guardrail garden detail page with theme tokens by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39131](https://github.com/BerriAI/litellm/pull/39131)
- fix(responses): tool call id shape breaks gpt-5 -> claude fallback conversations by [@​mateo-berri](https://github.com/mateo-berri) in [#​39144](https://github.com/BerriAI/litellm/pull/39144)
- fix(openai): drop tool_choice when request has no tools on chat completions by [@​mateo-berri](https://github.com/mateo-berri) in [#​39147](https://github.com/BerriAI/litellm/pull/39147)
- chore(ci): promote internal staging to main by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39141](https://github.com/BerriAI/litellm/pull/39141)
- test(ui): pick select options by role instead of by text by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39175](https://github.com/BerriAI/litellm/pull/39175)
- feat(cost): support time-based off-peak pricing in cost calculation by [@​Srivatsa03](https://github.com/Srivatsa03) in [#​31725](https://github.com/BerriAI/litellm/pull/31725)
- fix(openai): flatten top-level tool schema combinators on chat completions by [@​mateo-berri](https://github.com/mateo-berri) in [#​38839](https://github.com/BerriAI/litellm/pull/38839)
- fix(s3): bound s3 object keys and download filenames for long Responses API ids by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39164](https://github.com/BerriAI/litellm/pull/39164)
- revert: default the proxy back to the v1 migration resolver by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39178](https://github.com/BerriAI/litellm/pull/39178)
- fix(prometheus): bound requested_model label cardinality on client failure paths by [@​mateo-berri](https://github.com/mateo-berri) in [#​39136](https://github.com/BerriAI/litellm/pull/39136)
- feat(ui): add search to the Agent Hub tab and admin agents table by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39155](https://github.com/BerriAI/litellm/pull/39155)
- fix(anthropic): fix response_format for claude-fable-5-1 on Vertex AI and Bedrock by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39184](https://github.com/BerriAI/litellm/pull/39184)
- fix: keep litellm_credential_name from LiteLLM Params JSON and gate stored credential attach to proxy admins by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​39047](https://github.com/BerriAI/litellm/pull/39047)
- chore(ci): promote internal staging to main by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39186](https://github.com/BerriAI/litellm/pull/39186)
- test: exempt MockTransport request-shape embedding tests from VCR replay by [@​mateo-berri](https://github.com/mateo-berri) in [#​39185](https://github.com/BerriAI/litellm/pull/39185)
- fix(ui): render the logs Tools panel with theme tokens by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39129](https://github.com/BerriAI/litellm/pull/39129)
- fix(proxy): default max_idle_connection_lifetime to 60s on DB URLs by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39134](https://github.com/BerriAI/litellm/pull/39134)
- fix(mcp): follow tools/list pagination from upstream servers by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39172](https://github.com/BerriAI/litellm/pull/39172)
- fix(proxy): resolve router model aliases in /utils/supported_openai_params by [@​mateo-berri](https://github.com/mateo-berri) in [#​39000](https://github.com/BerriAI/litellm/pull/39000)
- fix(azure): flatten top-level tool schema combinators on Azure chat completions by [@​mateo-berri](https://github.com/mateo-berri) in [#​38870](https://github.com/BerriAI/litellm/pull/38870)
- fix(bedrock): route streamed responses-API output through the unified guardrail by [@​mateo-berri](https://github.com/mateo-berri) in [#​38734](https://github.com/BerriAI/litellm/pull/38734)
- fix(ui): hide model write affordances from view-only admin sessions by [@​mateo-berri](https://github.com/mateo-berri) in [#​38872](https://github.com/BerriAI/litellm/pull/38872)
- fix(cli): quote the Claude Code apiKeyHelper for cmd.exe on Windows by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39174](https://github.com/BerriAI/litellm/pull/39174)
- fix(logging): guarantee max_parallel_requests slot release when streaming logging fails by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39093](https://github.com/BerriAI/litellm/pull/39093)
- feat(alerting): slack alerts for per-user daily/monthly spend thresholds and spend anomaly detection by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38438](https://github.com/BerriAI/litellm/pull/38438)
- fix(docker): add public Wolfi apk repo to runtime image by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39033](https://github.com/BerriAI/litellm/pull/39033)
- fix(router): keep order fallback on the requested order level by [@​emerzon](https://github.com/emerzon) in [#​38969](https://github.com/BerriAI/litellm/pull/38969)
- test(e2e): cover retry-on-timeout and the context-window fallback by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39197](https://github.com/BerriAI/litellm/pull/39197)
- fix(budget): reject known estimates over remaining budget under fail_closed_budget_enforcement by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39214](https://github.com/BerriAI/litellm/pull/39214)
- fix: stop a cleared Team field from blocking personal key creation by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39206](https://github.com/BerriAI/litellm/pull/39206)
- test: record each e2e test's source location in the JUnit report by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39209](https://github.com/BerriAI/litellm/pull/39209)
- feat(router): fall back on anthropic safeguard refusals on /v1/messages by [@​tin-berri](https://github.com/tin-berri) in [#​39157](https://github.com/BerriAI/litellm/pull/39157)
- fix(proxy): report requested model on Anthropic streaming message_start by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​35816](https://github.com/BerriAI/litellm/pull/35816)
- fix(helm): reuse the generated master key Secret on helm upgrade by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39219](https://github.com/BerriAI/litellm/pull/39219)
- fix(mcp): report per-server outcomes in aggregate REST tools/list by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39232](https://github.com/BerriAI/litellm/pull/39232)
- fix(cost-map): retry transient boot fetch failures and recover config deployments dropped by a stale cost map by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39230](https://github.com/BerriAI/litellm/pull/39230)
- perf(scim): resolve group members with one user table read per member by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39228](https://github.com/BerriAI/litellm/pull/39228)
- fix(docker): install bedrock-realtime extra in monolith proxy images by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39223](https://github.com/BerriAI/litellm/pull/39223)
- fix(aiohttp_transport): map transport-internal CancelledError to a retryable ConnectError by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39240](https://github.com/BerriAI/litellm/pull/39240)
- fix(bedrock): gate Converse cachePoint emission on model prompt caching support by [@​tin-berri](https://github.com/tin-berri) in [#​39210](https://github.com/BerriAI/litellm/pull/39210)
- fix(datadog_llm_obs): send tool calls, tool results and cache tokens in DD's own fields by [@​tin-berri](https://github.com/tin-berri) in [#​39222](https://github.com/BerriAI/litellm/pull/39222)
- feat(prometheus): expose per-key and per-team rate limit allowed and used gauges by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39236](https://github.com/BerriAI/litellm/pull/39236)
- feat(scim): add placeholder listing and merge so a shadowed account can be healed by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39231](https://github.com/BerriAI/litellm/pull/39231)
- fix: normalize provider-specific cache token fields in OTel v2 usage by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39202](https://github.com/BerriAI/litellm/pull/39202)
- fix: stop deployment default API key limits leaking into provider requests by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39211](https://github.com/BerriAI/litellm/pull/39211)
- fix(proxy): keep passthrough logging metadata and model_info dicts when team callbacks are wired by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39216](https://github.com/BerriAI/litellm/pull/39216)
- fix(guardrails): deliver modify_response block as valid SSE on streaming chat and Responses by [@​mateo-berri](https://github.com/mateo-berri) in [#​39036](https://github.com/BerriAI/litellm/pull/39036)
- fix(search): forward search-tool params through the router, complete Parallel AI v1 param mapping by [@​jliounis](https://github.com/jliounis) in [#​37883](https://github.com/BerriAI/litellm/pull/37883)
- fix(bedrock): stop Converse crashing on bearer-token auth without SigV4 credentials by [@​mateo-berri](https://github.com/mateo-berri) in [#​39166](https://github.com/BerriAI/litellm/pull/39166)
- fix(policy_engine): apply post_call pipeline text rewrites on streams by [@​mateo-berri](https://github.com/mateo-berri) in [#​39233](https://github.com/BerriAI/litellm/pull/39233)
- fix(docker): install saml extra in litellm-backend image by [@​ojensen-berri](https://github.com/ojensen-berri) in [#​39291](https://github.com/BerriAI/litellm/pull/39291)
- fix(guardrails): run apply_guardrail-only providers in logging_only mode by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39297](https://github.com/BerriAI/litellm/pull/39297)
- feat(gemini): day-0 pricing for gemini-3.8-flash by [@​mateo-berri](https://github.com/mateo-berri) in [#​39340](https://github.com/BerriAI/litellm/pull/39340)
- fix(vertex): avoid duplicate DeepSeek OCR model namespace by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39194](https://github.com/BerriAI/litellm/pull/39194)
- feat(streaming): carry final response cost on streamed usage by default by [@​mateo-berri](https://github.com/mateo-berri) in [#​39069](https://github.com/BerriAI/litellm/pull/39069)
- fix(rerank): map provider errors with the resolved provider on sync and async paths by [@​mateo-berri](https://github.com/mateo-berri) in [#​39176](https://github.com/BerriAI/litellm/pull/39176)
- test(e2e): read JUnit properties off the real collected pytest Item by [@​mateo-berri](https://github.com/mateo-berri) in [#​39246](https://github.com/BerriAI/litellm/pull/39246)
- feat(proxy): configurable display_name for the Anthropic-shaped /v1/models listing by [@​mateo-berri](https://github.com/mateo-berri) in [#​39238](https://github.com/BerriAI/litellm/pull/39238)
- fix(helm): scale the classic chart's HPA out at the documented 60 percent CPU by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​35975](https://github.com/BerriAI/litellm/pull/35975)
- fix(gemini): return enabled thinking content by default by [@​mateo-berri](https://github.com/mateo-berri) in [#​39160](https://github.com/BerriAI/litellm/pull/39160)
- fix: run access group key sync UPDATEs on the writer, not the read replica by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39128](https://github.com/BerriAI/litellm/pull/39128)
- fix(models): registry audit 2026-09-01: openai realtime and long-context tiers, mistral aliases, voyage, xai, fireworks, together, scaleway, azure ai, govcloud, azure gov, cloudflare whisper, deprecation dates by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39170](https://github.com/BerriAI/litellm/pull/39170)
- fix: apply optional_pre_call_checks and reject unsupported router settings on /config/update by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39249](https://github.com/BerriAI/litellm/pull/39249)
- fix(vector_stores): s3 vectors search router bypass + rag query config drop + ui error swallow by [@​michelligabriele](https://github.com/michelligabriele) in [#​34788](https://github.com/BerriAI/litellm/pull/34788)
- fix(models): key Azure DeepSeek V4 Flash 0731 by its Foundry catalog id by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39341](https://github.com/BerriAI/litellm/pull/39341)
- fix(deps): raise the tornado and pypdf floors for six new advisories by [@​mateo-berri](https://github.com/mateo-berri) in [#​39188](https://github.com/BerriAI/litellm/pull/39188)
- fix(headroom): stop re-compressing retrieved CCR content in client tool loops by [@​QuantumBreakz](https://github.com/QuantumBreakz) in [#​38591](https://github.com/BerriAI/litellm/pull/38591)
- feat(agentcore-a2a): derive runtime session id from A2A message.contextId by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39371](https://github.com/BerriAI/litellm/pull/39371)
- fix(proxy): share per-model budget counters across replicas through the spend counter cache by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39375](https://github.com/BerriAI/litellm/pull/39375)
- fix(proxy-extras): give prisma migrate deploy its own timeout budget by [@​mateo-berri](https://github.com/mateo-berri) in [#​39365](https://github.com/BerriAI/litellm/pull/39365)
- fix(proxy): route container create and list through model_list deployments by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39220](https://github.com/BerriAI/litellm/pull/39220)
- test(build): validate release wheel contracts by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39021](https://github.com/BerriAI/litellm/pull/39021)
- refactor(rust): extract domain-neutral Python interop by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39026](https://github.com/BerriAI/litellm/pull/39026)
- refactor(rust): standardize the core Error type by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39331](https://github.com/BerriAI/litellm/pull/39331)
- fix(ui): preserve full AgentCore runtime ARN in agent edit form by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​39382](https://github.com/BerriAI/litellm/pull/39382)
- feat(ui): update OpenAI preset model tiers by [@​tin-berri](https://github.com/tin-berri) in [#​39396](https://github.com/BerriAI/litellm/pull/39396)
- fix(router): resolve realtime session model to routed deployment by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​36811](https://github.com/BerriAI/litellm/pull/36811)
- fix(security): restrict and validate file uploads at /v1/files and /upload/logo by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​39379](https://github.com/BerriAI/litellm/pull/39379)
- feat(auth): enforce configurable password policy and SSO-only login by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​39381](https://github.com/BerriAI/litellm/pull/39381)
- fix(agents): redact secret litellm_params fields from all /v1/agents responses by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​39389](https://github.com/BerriAI/litellm/pull/39389)
- fix(otel): stamp Langfuse root observation input and output from the request task by [@​mateo-berri](https://github.com/mateo-berri) in [#​39369](https://github.com/BerriAI/litellm/pull/39369)
- fix(guardrails): track and tear down presidio sibling callbacks on delete and update by [@​mateo-berri](https://github.com/mateo-berri) in [#​39271](https://github.com/BerriAI/litellm/pull/39271)
- fix(spend): keep every-deployment scope on gateway cache-injection marks by [@​mateo-berri](https://github.com/mateo-berri) in [#​39241](https://github.com/BerriAI/litellm/pull/39241)
- fix(proxy/db): keep prisma predicates from raising TypeError under a mocked prisma module by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39253](https://github.com/BerriAI/litellm/pull/39253)
- fix(proxy): word database 503s by whether the fault is transient by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39256](https://github.com/BerriAI/litellm/pull/39256)
- refactor(utils): remove the dead get_api_key provider-key resolver by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39260](https://github.com/BerriAI/litellm/pull/39260)
- feat(mcp): semantic tool search for the native MCP Gateway by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39404](https://github.com/BerriAI/litellm/pull/39404)
- fix(logging): redact credential query params from the uvicorn access log by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39293](https://github.com/BerriAI/litellm/pull/39293)
- feat(model_prices): add meta/muse-spark-1.3 and its contributor tier by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39417](https://github.com/BerriAI/litellm/pull/39417)
- refactor(core): move audio transcription into core by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39126](https://github.com/BerriAI/litellm/pull/39126)
- fix(proxy): build coordination Redis from REDIS\_\* env vars unconditionally by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​39410](https://github.com/BerriAI/litellm/pull/39410)
- test: add interactive Rust Python parity harness in [#​39419](https://github.com/BerriAI/litellm/pull/39419)
- test(proxy): verify NO_DOCS/NO_REDOC/NO_OPENAPI restrict every doc surface by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​39378](https://github.com/BerriAI/litellm/pull/39378)
- test(bedrock): accept the router kwarg in the knowledge base search fake by [@​mateo-berri](https://github.com/mateo-berri) in [#​39420](https://github.com/BerriAI/litellm/pull/39420)
- refactor(python-bridge): split routes and add shared function tracing by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39031](https://github.com/BerriAI/litellm/pull/39031)
- fix(python-bridge): harden sync and async execution boundaries by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39332](https://github.com/BerriAI/litellm/pull/39332)
- refactor(python-bridge): declare sync and async routes once by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39333](https://github.com/BerriAI/litellm/pull/39333)
- feat(python): unify Rust opt-in and bridge policy by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39334](https://github.com/BerriAI/litellm/pull/39334)
- feat(router): add heuristic v2 complexity routing by [@​tin-berri](https://github.com/tin-berri) in [#​39276](https://github.com/BerriAI/litellm/pull/39276)
- fix(anthropic): upgrade legacy thinking to adaptive on adaptive-only Claude models for chat, Bedrock Converse, Invoke, Vertex AI, and Databricks by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39159](https://github.com/BerriAI/litellm/pull/39159)
- fix(proxy): mark session/SSO/SAML cookies Secure behind a TLS-terminating reverse proxy by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​39391](https://github.com/BerriAI/litellm/pull/39391)
- fix(bedrock): honor BEDROCK_MANTLE_API_BASE on bedrock/mantle messages and chat URLs by [@​mateo-berri](https://github.com/mateo-berri) in [#​39364](https://github.com/BerriAI/litellm/pull/39364)
- fix(bedrock): strip client_metadata from converse additionalModelRequestFields by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​35967](https://github.com/BerriAI/litellm/pull/35967)
- chore(techdebt): clear fresh debt from the 2026-08-31 and 2026-09-01 windows by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39091](https://github.com/BerriAI/litellm/pull/39091)
- fix(mcp): cap tools preview and test-connection at the listing timeout and name the unreachable upstream by [@​mateo-berri](https://github.com/mateo-berri) in [#​38791](https://github.com/BerriAI/litellm/pull/38791)
- fix(hosted_vllm): forward truncate_prompt_tokens on rerank requests by [@​mateo-berri](https://github.com/mateo-berri) in [#​39363](https://github.com/BerriAI/litellm/pull/39363)
- fix(messages): drop cache_control ttl on non-Anthropic /v1/messages passthrough by [@​mateo-berri](https://github.com/mateo-berri) in [#​39355](https://github.com/BerriAI/litellm/pull/39355)
- fix(bedrock_mantle): carry per-request AWS credentials into chat completions SigV4 signing by [@​mateo-berri](https://github.com/mateo-berri) in [#​39362](https://github.com/BerriAI/litellm/pull/39362)
- feat(router): add a hybrid classifier that defers near tier boundaries by [@​tin-berri](https://github.com/tin-berri) in [#​39403](https://github.com/BerriAI/litellm/pull/39403)
- fix: recover the v2 migration resolver from concurrent migrate deploy deadlocks by [@​mateo-berri](https://github.com/mateo-berri) in [#​39187](https://github.com/BerriAI/litellm/pull/39187)
- fix(ollama_chat): stamp finish_reason tool_calls when tool calls streamed before the done chunk by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39010](https://github.com/BerriAI/litellm/pull/39010)
- fix(router): route Claude Code subagents through session router by [@​moe-berri](https://github.com/moe-berri) in [#​39239](https://github.com/BerriAI/litellm/pull/39239)
- fix(responses): keep namespace tools intact when a guardrail returns them unchanged by [@​mateo-berri](https://github.com/mateo-berri) in [#​39366](https://github.com/BerriAI/litellm/pull/39366)
- fix(vector-store): resolve embedding credentials per request by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​38936](https://github.com/BerriAI/litellm/pull/38936)
- test(e2e/ui): give the seeded users passwords that pass the default password policy by [@​mateo-berri](https://github.com/mateo-berri) in [#​39442](https://github.com/BerriAI/litellm/pull/39442)
- fix(http_handler): honor HTTP(S)\_PROXY / NO_PROXY when force_ipv4 uses the httpx transport by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39443](https://github.com/BerriAI/litellm/pull/39443)
- fix(proxy): stop leaking internal exception details to clients by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​39380](https://github.com/BerriAI/litellm/pull/39380)
- fix(guardrails): forward mode and streaming params to crowdstrike_aidr handler by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39317](https://github.com/BerriAI/litellm/pull/39317)
- fix(mcp): gate the connect-time OBO pre-flight on the key's allowed servers by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39447](https://github.com/BerriAI/litellm/pull/39447)
- fix(responses): keep provider response headers in streaming logging callbacks by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38131](https://github.com/BerriAI/litellm/pull/38131)
- fix(mcp): fence an outbound-token write against an overlapping invalidation by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​35398](https://github.com/BerriAI/litellm/pull/35398)
- feat(cli): pre-fill the SSO verification code in the browser when the proxy allows it by [@​mateo-berri](https://github.com/mateo-berri) in [#​39428](https://github.com/BerriAI/litellm/pull/39428)
- fix(ui): paginate request logs by session groups server-side by [@​tin-berri](https://github.com/tin-berri) in [#​39257](https://github.com/BerriAI/litellm/pull/39257)
- feat(proxy): serve the auto-router preset catalog at runtime by [@​tin-berri](https://github.com/tin-berri) in [#​39412](https://github.com/BerriAI/litellm/pull/39412)
- docs: define Rust Python harness structure by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39456](https://github.com/BerriAI/litellm/pull/39456)
- fix(guardrails): apply PUT /guardrails/{id} to the serving worker immediately and reject invalid configs with 422 by [@​mateo-berri](https://github.com/mateo-berri) in [#​38877](https://github.com/BerriAI/litellm/pull/38877)
- test(responses): expect the 404 OpenAI now returns for an unknown model by [@​mateo-berri](https://github.com/mateo-berri) in [#​39457](https://github.com/BerriAI/litellm/pull/39457)
- fix(guardrails): skip streaming guardrail rounds that re-scan cleared output by [@​mateo-berri](https://github.com/mateo-berri) in [#​39386](https://github.com/BerriAI/litellm/pull/39386)
- fix: keep litellm importable on Python 3.10 and guard 3.11-only typing imports in CI by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39448](https://github.com/BerriAI/litellm/pull/39448)
- fix(proxy): keep SpendLogs and callback session ids in sync when the request has none by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39450](https://github.com/BerriAI/litellm/pull/39450)
- feat(router): arm safeguard-refusal fallback on generic chains when no content-policy list exists by [@​tin-berri](https://github.com/tin-berri) in [#​39274](https://github.com/BerriAI/litellm/pull/39274)
- feat(azure): support credential chain for storage by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39229](https://github.com/BerriAI/litellm/pull/39229)
- chore(crowdstrike): expect the deduped end-of-stream scan in crowdstrike cadence test by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39467](https://github.com/BerriAI/litellm/pull/39467)
- fix(model_armor): handle Anthropic Messages and Responses streams in post_call by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39181](https://github.com/BerriAI/litellm/pull/39181)
- test: add OCR python-to-rust test parity ledger (WIP) in [#​39434](https://github.com/BerriAI/litellm/pull/39434)
- feat(complexity_router): opt-in modality override of a kept session-affinity pin by [@​tin-berri](https://github.com/tin-berri) in [#​39454](https://github.com/BerriAI/litellm/pull/39454)
- feat(datadog_llm_obs): cost tag dimensions, router decision fields, reasoning token metric, redaction gating by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39402](https://github.com/BerriAI/litellm/pull/39402)
- test(rust-python-harness): wire existing e2e SDK tests into the matrix in [#​39463](https://github.com/BerriAI/litellm/pull/39463)
- fix(mcp): never exchange the LiteLLM virtual key as the upstream subject token by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39446](https://github.com/BerriAI/litellm/pull/39446)
- test: add mistral ocr transformation parity coverage in [#​39482](https://github.com/BerriAI/litellm/pull/39482)
- test(vector-store): accept embedding_executor in the Bedrock KB hook fake handler by [@​mateo-berri](https://github.com/mateo-berri) in [#​39472](https://github.com/BerriAI/litellm/pull/39472)
- refactor(s3_vectors): embed search queries through the shared vector store executor by [@​mateo-berri](https://github.com/mateo-berri) in [#​39474](https://github.com/BerriAI/litellm/pull/39474)
- fix(xai): bill from the cost xAI reports instead of recomputing it (internal copy of [#​36281](https://github.com/BerriAI/litellm/issues/36281)) by [@​mateo-berri](https://github.com/mateo-berri) in [#​39441](https://github.com/BerriAI/litellm/pull/39441)
- feat(ui): add 1M context auto-router preset by [@​tin-berri](https://github.com/tin-berri) in [#​39490](https://github.com/BerriAI/litellm/pull/39490)
- fix(ui): stop the create team form resetting organization and models by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39476](https://github.com/BerriAI/litellm/pull/39476)
- fix(ui): read the preset catalog at runtime in the dashboard tests by [@​tin-berri](https://github.com/tin-berri) in [#​39478](https://github.com/BerriAI/litellm/pull/39478)
- fix(sso): resolve multi-valued role claims to the highest privilege role by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39480](https://github.com/BerriAI/litellm/pull/39480)
- fix(guardrail): hide-secrets playground redaction and guardrail telemetry by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39398](https://github.com/BerriAI/litellm/pull/39398)
- fix(test): drop the duplicate embedding_executor arg in the Bedrock KB fake handler by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39502](https://github.com/BerriAI/litellm/pull/39502)
- fix(ui): keep Virtual Keys list state in the URL so it survives leaving the page by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39481](https://github.com/BerriAI/litellm/pull/39481)
- fix(proxy): 404 a credential delete that matched nothing, and raise instead of return by [@​eeshsaxena](https://github.com/eeshsaxena) in [#​36260](https://github.com/BerriAI/litellm/pull/36260)
- fix(proxy-extras): only spend a migrate-deploy attempt when a pass made no progress by [@​mateo-berri](https://github.com/mateo-berri) in [#​39506](https://github.com/BerriAI/litellm/pull/39506)
- feat(cli): enable Claude Code gateway model discovery by default in lite claude by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39445](https://github.com/BerriAI/litellm/pull/39445)
- fix(docker): bump nginx runtime to 1.31.5-alpine3.24 and pin digest by [@​rakeshrepository](https://github.com/rakeshrepository) in [#​39561](https://github.com/BerriAI/litellm/pull/39561)
- fix: 1.99.0-rc2 UI bug batch (empty org on key create, session pagination, access group rename/delete) by [@​mateo-berri](https://github.com/mateo-berri) in [#​39436](https://github.com/BerriAI/litellm/pull/39436)
- feat(auto-router): support classifier reasoning effort by [@​moe-berri](https://github.com/moe-berri) in [#​39372](https://github.com/BerriAI/litellm/pull/39372)
- fix(ui): replace the key detail URL entry when a virtual key is rotated by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39471](https://github.com/BerriAI/litellm/pull/39471)
- test(timeout): time out against the local fake endpoint instead of api.openai.com by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39583](https://github.com/BerriAI/litellm/pull/39583)
- test(harness): add OCR parity with migration strategy runners by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​38765](https://github.com/BerriAI/litellm/pull/38765)
- fix(databricks): strip thinking_blocks and reasoning_content from outbound messages by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39409](https://github.com/BerriAI/litellm/pull/39409)
- test(ocr): record provider fixtures in the migration harness by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39425](https://github.com/BerriAI/litellm/pull/39425)
- feat(ui): keyset-paginate request logs by session trace by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38794](https://github.com/BerriAI/litellm/pull/38794)
- fix(proxy/db): translate libpq sslrootcert and verify-\* into Prisma's strict TLS params by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39563](https://github.com/BerriAI/litellm/pull/39563)
- fix(agents): keep the published agent in public_agent_groups by [@​mateo-berri](https://github.com/mateo-berri) in [#​39554](https://github.com/BerriAI/litellm/pull/39554)
- fix(mcp): scope allow-all servers to virtual keys by [@​tin-berri](https://github.com/tin-berri) in [#​39531](https://github.com/BerriAI/litellm/pull/39531)
- fix(team): generate team IDs for blank input by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39571](https://github.com/BerriAI/litellm/pull/39571)
- fix(bedrock_mantle): stop dropping the web_search tool on /v1/responses by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​35987](https://github.com/BerriAI/litellm/pull/35987)
- chore: bump litellm-enterprise 0.1.63 -> 0.1.64, litellm-proxy-extras 0.4.92 -> 0.4.93 by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39595](https://github.com/BerriAI/litellm/pull/39595)
- fix(images): forward gpt-image supported params like background to OpenAI and Azure by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39525](https://github.com/BerriAI/litellm/pull/39525)
- fix(proxy): return persisted team memberships from /user/new so first CLI login gets the default team by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39545](https://github.com/BerriAI/litellm/pull/39545)
- fix(spend_tracking): add missing_session_id: omit to leave SpendLogs.session_id null without a client session by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39458](https://github.com/BerriAI/litellm/pull/39458)
- fix: stop a cleared Organization field from failing key creation by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39316](https://github.com/BerriAI/litellm/pull/39316)
- fix(ui): show MCP servers and agents inherited from access groups on team overview by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39215](https://github.com/BerriAI/litellm/pull/39215)
- fix(proxy): expose configured mode for auto-router models by [@​moe-berri](https://github.com/moe-berri) in [#​39619](https://github.com/BerriAI/litellm/pull/39619)
- fix(ui): aggregate session token usage in the logs table by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39598](https://github.com/BerriAI/litellm/pull/39598)
- fix(cost): apply off_peak_pricing in the dashscope cost calculator by [@​mateo-berri](https://github.com/mateo-berri) in [#​39592](https://github.com/BerriAI/litellm/pull/39592)
- test(bedrock): drop EOL cohere.command-r-plus-v1:0 from local_testing by [@​mateo-berri](https://github.com/mateo-berri) in [#​39608](https://github.com/BerriAI/litellm/pull/39608)
- fix(openai): default stream usage on PrivateLink and regional api.openai.com hosts by [@​mateo-berri](https://github.com/mateo-berri) in [#​39614](https://github.com/BerriAI/litellm/pull/39614)
- fix(proxy): drop anthropic-beta on the Vertex passthrough count-tokens route by [@​mateo-berri](https://github.com/mateo-berri) in [#​39597](https://github.com/BerriAI/litellm/pull/39597)
- fix(headroom): resolve CCR retrieval on streaming /v1/responses by [@​mateo-berri](https://github.com/mateo-berri) in [#​38808](https://github.com/BerriAI/litellm/pull/38808)
- fix(openai): bridge gpt-5.4+ tool calls to /v1/responses on every api.openai.com host by [@​mateo-berri](https://github.com/mateo-berri) in [#​39587](https://github.com/BerriAI/litellm/pull/39587)
- fix(router): pin JWT-authenticated callers by user id in deployment_affinity by [@​mateo-berri](https://github.com/mateo-berri) in [#​39594](https://github.com/BerriAI/litellm/pull/39594)
- fix(cost): bill bedrock_mantle web search at $12 per 1k queries using Bedrock's reported count by [@​mateo-berri](https://github.com/mateo-berri) in [#​39610](https://github.com/BerriAI/litellm/pull/39610)
- fix(azure_ai): don't reclassify Foundry deployments as azure provider by [@​mateo-berri](https://github.com/mateo-berri) in [#​38975](https://github.com/BerriAI/litellm/pull/38975)
- fix(vector_stores): only list vector stores the caller was granted by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39612](https://github.com/BerriAI/litellm/pull/39612)
- feat(models): add gpt-6-astra pricing and metadata by [@​mateo-berri](https://github.com/mateo-berri) in [#​39622](https://github.com/BerriAI/litellm/pull/39622)
- chore(ci): promote internal staging to main by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39593](https://github.com/BerriAI/litellm/pull/39593)
- feat(router): limit heuristic_v2 auto-routers to one without the auto_router license feature by [@​tin-berri](https://github.com/tin-berri) in [#​39468](https://github.com/BerriAI/litellm/pull/39468)
- fix(ui): clear agents when updating team permissions by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39600](https://github.com/BerriAI/litellm/pull/39600)
- fix(auto_router): bill the routing embedding to the caller's key and team by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39532](https://github.com/BerriAI/litellm/pull/39532)
- test(router): cover get_configured_mode so router_code_coverage passes by [@​mubashir1osmani](https://github.com/mubashir1osmani) in [#​39630](https://github.com/BerriAI/litellm/pull/39630)
- fix: treat gpt-6 names as the gpt-5 request family in OpenAI and Azure configs by [@​mateo-berri](https://github.com/mateo-berri) in [#​39631](https://github.com/BerriAI/litellm/pull/39631)
- fix(prompts): key the in-memory prompt registry by environment by [@​mateo-berri](https://github.com/mateo-berri) in [#​38440](https://github.com/BerriAI/litellm/pull/38440)
- fix(ui): let the Internal Users search box match user_id as well as email by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39604](https://github.com/BerriAI/litellm/pull/39604)
- test(responses): bound the background stream cancel e2e so an upstream stall skips fast by [@​mateo-berri](https://github.com/mateo-berri) in [#​39617](https://github.com/BerriAI/litellm/pull/39617)
- fix(vertex): add the API version to versionless project routes on the Vertex passthrough by [@​mateo-berri](https://github.com/mateo-berri) in [#​39625](https://github.com/BerriAI/litellm/pull/39625)
- chore(ci): promote internal staging to main by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39648](https://github.com/BerriAI/litellm/pull/39648)
- fix(spend_tracking): key /v1/messages spend rows on the msg\_ id the client received by [@​mateo-berri](https://github.com/mateo-berri) in [#​39511](https://github.com/BerriAI/litellm/pull/39511)
- ci(rust): build and test the ai-gateway server feature by [@​mateo-berri](https://github.com/mateo-berri) in [#​39493](https://github.com/BerriAI/litellm/pull/39493)
- ci(ui): run the UI build check through the image's ui-builder stage by [@​mateo-berri](https://github.com/mateo-berri) in [#​39496](https://github.com/BerriAI/litellm/pull/39496)
- fix(proxy): parse numeric multipart fields on /v1/images/edits back into numbers by [@​mateo-berri](https://github.com/mateo-berri) in [#​39510](https://github.com/BerriAI/litellm/pull/39510)
- fix(guardrails): remove the module-global translation mapping that leaked between tests by [@​mateo-berri](https://github.com/mateo-berri) in [#​39543](https://github.com/BerriAI/litellm/pull/39543)
- feat(azure_ai): add grok-4.6 to the model cost map by [@​mateo-berri](https://github.com/mateo-berri) in [#​39426](https://github.com/BerriAI/litellm/pull/39426)
- fix: attach vector store search_results when a guardrail is registered by [@​mateo-berri](https://github.com/mateo-berri) in [#​38984](https://github.com/BerriAI/litellm/pull/38984)
- fix(proxy): stop putting the literal string "None" in error payloads by [@​mateo-berri](https://github.com/mateo-berri) in [#​39521](https://github.com/BerriAI/litellm/pull/39521)
- fix(router): keep retry breadcrumbs per request and out of the request snapshot by [@​mateo-berri](https://github.com/mateo-berri) in [#​39491](https://github.com/BerriAI/litellm/pull/39491)
- fix(vector-stores): survive a failing vector store search in the chat completions hook by [@​mateo-berri](https://github.com/mateo-berri) in [#​39495](https://github.com/BerriAI/litellm/pull/39495)
- fix(utils): redact credential kwargs from the set_verbose request line by [@​mateo-berri](https://github.com/mateo-berri) in [#​39526](https://github.com/BerriAI/litellm/pull/39526)
- fix(bedrock): skip the SigV4 credential chain when a bearer token is configured by [@​mateo-berri](https://github.com/mateo-berri) in [#​39411](https://github.com/BerriAI/litellm/pull/39411)
- fix(proxy-extras): kill the whole Prisma process group when a command times out by [@​mateo-berri](https://github.com/mateo-berri) in [#​39466](https://github.com/BerriAI/litellm/pull/39466)
- fix(rag): forward the managed vector store's params to the search call by [@​mateo-berri](https://github.com/mateo-berri) in [#​39452](https://github.com/BerriAI/litellm/pull/39452)
- fix(utils): redact credentials nested in extra_body on the verbose optional-params line by [@​mateo-berri](https://github.com/mateo-berri) in [#​39538](https://github.com/BerriAI/litellm/pull/39538)
- fix(containers): pass upstream error status through and forward list pagination params by [@​mateo-berri](https://github.com/mateo-berri) in [#​39464](https://github.com/BerriAI/litellm/pull/39464)
- fix(anthropic_messages): key bridged streaming spend rows on the streamed msg\_ id by [@​mateo-berri](https://github.com/mateo-berri) in [#​39541](https://github.com/BerriAI/litellm/pull/39541)
- fix(helm): render ingress-nginx compatible path types via ingress.controller by [@​mateo-berri](https://github.com/mateo-berri) in [#​39465](https://github.com/BerriAI/litellm/pull/39465)
- fix(cache): use sync Redis batch reads by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39358](https://github.com/BerriAI/litellm/pull/39358)
- fix(guardrails): rebuild the serving worker guardrail on PUT instead of patching it in place by [@​mateo-berri](https://github.com/mateo-berri) in [#​39243](https://github.com/BerriAI/litellm/pull/39243)
- test(team-race): wait on pg_locks instead of a fixed sleep by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39611](https://github.com/BerriAI/litellm/pull/39611)
- fix(agents): hide agents from non-admins who were never granted them by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39636](https://github.com/BerriAI/litellm/pull/39636)
- fix(team_endpoints): stop partial /team/update from wiping team metadata by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​36328](https://github.com/BerriAI/litellm/pull/36328)
- test(router): cover configured mode lookup by [@​moe-berri](https://github.com/moe-berri) in [#​39634](https://github.com/BerriAI/litellm/pull/39634)
- fix(responses): encrypt the response id on every streamed event by [@​mateo-berri](https://github.com/mateo-berri) in [#​39534](https://github.com/BerriAI/litellm/pull/39534)
- fix(mcp): resolve OAuth broker endpoints by server_id with IP access checks by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39432](https://github.com/BerriAI/litellm/pull/39432)
- feat(proxy): enforce team isolation for provider-format batch ids and output files by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​33536](https://github.com/BerriAI/litellm/pull/33536)
- fix(mcp): strip inbound auth scheme case-insensitively before token exchange by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39346](https://github.com/BerriAI/litellm/pull/39346)
- fix(mcp): normalize a schemed authentication_token on the v2 and OpenAPI static paths by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39345](https://github.com/BerriAI/litellm/pull/39345)
- fix(docker): match USE_DDTRACE case-insensitively and route build_from_pip through prod_entrypoint.sh by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39344](https://github.com/BerriAI/litellm/pull/39344)
- perf(auth): skip object permission DB lookup when no vector stores requested by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39347](https://github.com/BerriAI/litellm/pull/39347)
- fix(caching): don't trip redis circuit breaker on short timeout bursts by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38999](https://github.com/BerriAI/litellm/pull/38999)
- fix(access_groups): derive attached teams from the team table and reject unknown team ids by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39218](https://github.com/BerriAI/litellm/pull/39218)
- test(router): drop duplicate get_configured_mode test failing ruff F811 by [@​mateo-berri](https://github.com/mateo-berri) in [#​39659](https://github.com/BerriAI/litellm/pull/39659)
- feat(cost): honor off_peak_pricing reasoning and cache-creation rates by [@​mateo-berri](https://github.com/mateo-berri) in [#​39635](https://github.com/BerriAI/litellm/pull/39635)
- fix(openai): mint workload identity tokens for PrivateLink and regional api.openai.com hosts by [@​mateo-berri](https://github.com/mateo-berri) in [#​39652](https://github.com/BerriAI/litellm/pull/39652)
- feat(ui): find rows by a pasted ID on keys, agents, memory, audit, and request logs by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39661](https://github.com/BerriAI/litellm/pull/39661)
- test(proxy-extras): fake run_prisma instead of subprocess.run in the migrate deploy harness by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39669](https://github.com/BerriAI/litellm/pull/39669)
- fix(scim): default-team fallback on create and keep memberships when PUT /Users has no groups by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39623](https://github.com/BerriAI/litellm/pull/39623)
- fix(router): count tools and Anthropic system prompt in context-window pre-call check by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39663](https://github.com/BerriAI/litellm/pull/39663)
- test(proxy-extras): repoint the migrate-deploy harness at the run_prisma seam by [@​mubashir1osmani](https://github.com/mubashir1osmani) in [#​39673](https://github.com/BerriAI/litellm/pull/39673)
- perf(spend): group /spend/logs summary by day in Postgres instead of per-row Prisma group_by by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39351](https://github.com/BerriAI/litellm/pull/39351)
- fix(proxy): apply default_vertex_config location before building the Vertex passthrough base URL by [@​mateo-berri](https://github.com/mateo-berri) in [#​39662](https://github.com/BerriAI/litellm/pull/39662)
- fix(anthropic_endpoints): return Anthropic type:error envelope for /v1/messages errors by [@​mateo-berri](https://github.com/mateo-berri) in [#​39037](https://github.com/BerriAI/litellm/pull/39037)
- feat(ui): configure auto-router session affinity TTL by [@​tin-berri](https://github.com/tin-berri) in [#​39679](https://github.com/BerriAI/litellm/pull/39679)
- perf(mcp): cache SSO identity assertion reads on the ID-JAG path by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39348](https://github.com/BerriAI/litellm/pull/39348)
- test(e2e): match the Internal Users search placeholder shipped by [#​39604](https://github.com/BerriAI/litellm/issues/39604) by [@​mateo-berri](https://github.com/mateo-berri) in [#​39678](https://github.com/BerriAI/litellm/pull/39678)
- fix(ui): scroll admin table rows inside the table instead of the page by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39684](https://github.com/BerriAI/litellm/pull/39684)
- fix(router): evict stale global pattern_router entries on upsert/delete by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39664](https://github.com/BerriAI/litellm/pull/39664)
- fix(caching): keep a node timeout from forcing a cluster-wide topology reinit on redis-py 8.x by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39349](https://github.com/BerriAI/litellm/pull/39349)
- fix(logging): blocked requests no longer report guardrail_status=success in multi-guardrail configs by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39596](https://github.com/BerriAI/litellm/pull/39596)
- fix(snowflake): normalize Cortex Claude request shapes by [@​tin-berri](https://github.com/tin-berri) in [#​39453](https://github.com/BerriAI/litellm/pull/39453)
- feat(proxy): per-worker admission control that rejects excess requests with 503 by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39352](https://github.com/BerriAI/litellm/pull/39352)
- fix(proxy): emit SSE keepalives on queue, rag, azure passthrough, usage chat and policy enrich streams by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39273](https://github.com/BerriAI/litellm/pull/39273)
- fix(azure): restrict the storage credential chain to deployment identities by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39637](https://github.com/BerriAI/litellm/pull/39637)
- fix(model_checks): drop wildcard routes like bedrock/\* from /v1/models by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​31731](https://github.com/BerriAI/litellm/pull/31731)
- fix(mcp): pre-flight the ID-JAG credential at the transport edge by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​35392](https://github.com/BerriAI/litellm/pull/35392)
- feat(caching): add semantic_cache_scope to isolate semantic cache hits per end user by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39590](https://github.com/BerriAI/litellm/pull/39590)
- feat(ui): add one-click Auto Router setup by [@​moe-berri](https://github.com/moe-berri) in [#​39693](https://github.com/BerriAI/litellm/pull/39693)
- fix(ci): pin setup-uv to v10.0.1 by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39111](https://github.com/BerriAI/litellm/pull/39111)
- refactor(tests): restructure rust python harness around strategy definitions by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39628](https://github.com/BerriAI/litellm/pull/39628)
- test(ocr): complete Rust unit test parity by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39689](https://github.com/BerriAI/litellm/pull/39689)
- feat: page the public model hub table off /public/v1/model_hub, keeping every filter by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39691](https://github.com/BerriAI/litellm/pull/39691)
- refactor(rust): extract config crate by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39706](https://github.com/BerriAI/litellm/pull/39706)
- feat(python): rename Rust rollout API by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39704](https://github.com/BerriAI/litellm/pull/39704)
- fix: restore Python compatibility and test 3.10 through 3.14 by [@​yujonglee-berri](https://github.com/yujonglee-berri) in [#​39399](https://github.com/BerriAI/litellm/pull/39399)
- fix(spend-tracking): keep batch spend keys joinable after v1.99 provenance gate by [@​mateo-berri](https://github.com/mateo-berri) in [#​39568](https://github.com/BerriAI/litellm/pull/39568)
- test: repair four chronically failing CI tests by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39770](https://github.com/BerriAI/litellm/pull/39770)
- feat(team): report per-user spend within a team for JWT traffic by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39771](https://github.com/BerriAI/litellm/pull/39771)
- feat(router): add classifier circuit breaker by [@​moe-berri](https://github.com/moe-berri) in [#​39701](https://github.com/BerriAI/litellm/pull/39701)
- ci: report every failing test in a job instead of stopping at the first by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39772](https://github.com/BerriAI/litellm/pull/39772)
- test(caching): drive the redis stall burst off the clock, not asyncio.wait_for by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39773](https://github.com/BerriAI/litellm/pull/39773)
- fix(ui): clamp server-paginated DataTable page index when rowCount shrinks by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39776](https://github.com/BerriAI/litellm/pull/39776)
- feat(mcp): use x-mcp-\<access_group>-\* headers as default upstream credentials for group members by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39717](https://github.com/BerriAI/litellm/pull/39717)
- fix(ui): paginate per-user usage with the shared server-side DataTable footer by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39682](https://github.com/BerriAI/litellm/pull/39682)
- fix(proxy): log mid-stream /v1/messages failures as failures with partial usage by [@​mateo-berri](https://github.com/mateo-berri) in [#​39589](https://github.com/BerriAI/litellm/pull/39589)
- fix(cost): honor off_peak_pricing in the fireworks_ai and perplexity cost calculators by [@​mateo-berri](https://github.com/mateo-berri) in [#​39632](https://github.com/BerriAI/litellm/pull/39632)
- fix(organization): clear org budget limits when PATCH /organization/update sends null by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39670](https://github.com/BerriAI/litellm/pull/39670)
- fix(organization): reject negative limits and unparseable budget_duration on PATCH /v2/organization by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39793](https://github.com/BerriAI/litellm/pull/39793)
- feat(organization): expose PATCH /v2/organization/{organization_id} in the OpenAPI schema by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39794](https://github.com/BerriAI/litellm/pull/39794)
- fix(auto-router): route 1M complex tier to GPT Sol by [@​tin-berri](https://github.com/tin-berri) in [#​39797](https://github.com/BerriAI/litellm/pull/39797)
- fix(bedrock_mantle): anchor MANTLE_HOST_RE so custom Mantle hosts are honored by [@​mateo-berri](https://github.com/mateo-berri) in [#​39361](https://github.com/BerriAI/litellm/pull/39361)
- fix(health): probe test_connection with the credential the request names by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39801](https://github.com/BerriAI/litellm/pull/39801)
- fix(router): bound auto-router classifier latency by [@​moe-berri](https://github.com/moe-berri) in [#​39696](https://github.com/BerriAI/litellm/pull/39696)
- fix(ui): accept any routing group name the backend accepts by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39807](https://github.com/BerriAI/litellm/pull/39807)
- fix(model_prices): verified registry audit, Databricks Sep-2026 catalog, realtime image pricing, deprecation dates by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39388](https://github.com/BerriAI/litellm/pull/39388)
- fix(jwt): invalidate JWT key mapping cache on /key/regenerate by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39808](https://github.com/BerriAI/litellm/pull/39808)
- fix(complexity_router): fall back to a live peer when the decided tier model is fully cooled down by [@​tin-berri](https://github.com/tin-berri) in [#​39675](https://github.com/BerriAI/litellm/pull/39675)
- feat(guardrails): roll up Bedrock guardrail cost per usage counter by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39196](https://github.com/BerriAI/litellm/pull/39196)
- fix(auto_router): derive tier definitions in prompt editor by [@​tin-berri](https://github.com/tin-berri) in [#​39688](https://github.com/BerriAI/litellm/pull/39688)
- fix(proxy): recognize opencode's bare x-session-id header for session affinity by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39802](https://github.com/BerriAI/litellm/pull/39802)
- feat(cli): sync OpenCode models from /v1/models in lite opencode by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39789](https://github.com/BerriAI/litellm/pull/39789)
- fix(spend-tracking): keep internal service-account key names readable in spend logs by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39572](https://github.com/BerriAI/litellm/pull/39572)
- fix(anthropic): never carry cache_control on translated thinking blocks by [@​moe-berri](https://github.com/moe-berri) in [#​39815](https://github.com/BerriAI/litellm/pull/39815)
- fix(responses/mcp): keep follow-up calls stateless when store=false by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​36575](https://github.com/BerriAI/litellm/pull/36575)
- fix(router): resolve retry_policy by exception hierarchy, add ServiceUnavailableErrorRetries and DefaultRetries by [@​shivamrawat1](https://github.com/shivamrawat1) in [#​35853](https://github.com/BerriAI/litellm/pull/35853)
- fix(headroom): bound the /v1/compress and /v1/retrieve calls with a timeout by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39527](https://github.com/BerriAI/litellm/pull/39527)
- feat(vector_stores): add a MongoDB vector store provider for Atlas and self-managed deployments by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39811](https://github.com/BerriAI/litellm/pull/39811)
- fix(fireworks_ai): resolve tool_choice and reasoning support for short model names by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39763](https://github.com/BerriAI/litellm/pull/39763)
- fix(datadog_llm_obs): keep the guardrail audit record under message redaction by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39702](https://github.com/BerriAI/litellm/pull/39702)
- fix(proxy): invalidate end-user spend counter and cache on budget reset ([#​39726](https://github.com/BerriAI/litellm/issues/39726)) by [@​amasen02](https://github.com/amasen02) in [#​39729](https://github.com/BerriAI/litellm/pull/39729)
- fix(proxy): strip every TypedDict qualifier before numeric form-field detection by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39780](https://github.com/BerriAI/litellm/pull/39780)
- fix(bedrock): stop sending toolConfig tool definitions to guardrails on passthrough converse by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39281](https://github.com/BerriAI/litellm/pull/39281)
- feat(shadow_eval): judge tool-call turns instead of dropping or erroring on them by [@​moe-berri](https://github.com/moe-berri) in [#​39818](https://github.com/BerriAI/litellm/pull/39818)
- feat(router): auto-escalate stalled complexity-router tasks by [@​moe-berri](https://github.com/moe-berri) in [#​39809](https://github.com/BerriAI/litellm/pull/39809)
- fix(team_endpoints): let member_delete clear a team left on the user row by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​38703](https://github.com/BerriAI/litellm/pull/38703)
- feat(cost-map): add azure/gpt-6-astra and azure/us/gpt-6-astra Foundry pricing by [@​mateo-berri](https://github.com/mateo-berri) in [#​39827](https://github.com/BerriAI/litellm/pull/39827)
- feat(complexity_router): let the LLM classifier see request images by [@​tin-berri](https://github.com/tin-berri) in [#​39825](https://github.com/BerriAI/litellm/pull/39825)
- feat(access-groups): resolve resource names on access group responses by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39822](https://github.com/BerriAI/litellm/pull/39822)
- fix(datadog_llm_obs): keep guardrail_cost_by_unit on redacted spans by [@​mateo-berri](https://github.com/mateo-berri) in [#​39848](https://github.com/BerriAI/litellm/pull/39848)
- test(store_model_in_db): assert the 400 contract in the unknown-model spend log test by [@​mateo-berri](https://github.com/mateo-berri) in [#​39842](https://github.com/BerriAI/litellm/pull/39842)
- feat(cli): add `lite debug claude` session report and /debug-lite slash command by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39435](https://github.com/BerriAI/litellm/pull/39435)
- test: deflake JWT tamper, fuzzy picker, tag routing, liveliness, redis stall burst, and pre-commit interrupt tests by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39306](https://github.com/BerriAI/litellm/pull/39306)
- feat(otel): stamp litellm.request.route on the LLM call span by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39698](https://github.com/BerriAI/litellm/pull/39698)
- feat(shadow_eval): scope a job to model groups, ANDed with its key, team, and user targets by [@​tin-berri](https://github.com/tin-berri) in [#​39828](https://github.com/BerriAI/litellm/pull/39828)
- test(e2e/batches): assert Bedrock batch cancel and list in the lifecycle by [@​mateo-berri](https://github.com/mateo-berri) in [#​39847](https://github.com/BerriAI/litellm/pull/39847)
- refactor: clear fresh tech debt from the last 24 hours (2026-09-03, 2026-09-04) by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39518](https://github.com/BerriAI/litellm/pull/39518)
- refactor(typing): cut 1,397 Any errors across 183 backend files by [@​mateo-berri](https://github.com/mateo-berri) in [#​39461](https://github.com/BerriAI/litellm/pull/39461)
- fix(responses): decode JSON-string tool schemas before sending to the provider by [@​tin-berri](https://github.com/tin-berri) in [#​39844](https://github.com/BerriAI/litellm/pull/39844)
- feat(helm): render nodeSelector, tolerations, and affinity on the componentized chart migrations Job by [@​mateo-berri](https://github.com/mateo-berri) in [#​39843](https://github.com/BerriAI/litellm/pull/39843)
- fix(mcp): let config.yaml MCP servers pin server_id by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39286](https://github.com/BerriAI/litellm/pull/39286)
- feat(dashboard): configure classifier vision input by [@​tin-berri](https://github.com/tin-berri) in [#​39840](https://github.com/BerriAI/litellm/pull/39840)
- fix(batches): register ownership for every batch create path by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39810](https://github.com/BerriAI/litellm/pull/39810)
- fix(proxy): gate the OpenAI websocket passthrough behind an explicit opt-in by [@​mateo-berri](https://github.com/mateo-berri) in [#​39841](https://github.com/BerriAI/litellm/pull/39841)
- fix(ui): bring the inline-object lint budget back under its ceiling by [@​mateo-berri](https://github.com/mateo-berri) in [#​39856](https://github.com/BerriAI/litellm/pull/39856)
- fix(realtime): relay the upstream websocket close to the client instead of hanging by [@​mateo-berri](https://github.com/mateo-berri) in [#​39851](https://github.com/BerriAI/litellm/pull/39851)
- feat(router): meter auto-router tier and prompt customization against the auto_router license feature by [@​tin-berri](https://github.com/tin-berri) in [#​39674](https://github.com/BerriAI/litellm/pull/39674)
- fix(shadow_eval): size the judge output cap for a judge that reasons by [@​moe-berri](https://github.com/moe-berri) in [#​39817](https://github.com/BerriAI/litellm/pull/39817)
- feat(organization): expose PATCH /v2/organization/{organization_id} in the OpenAPI spec by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39672](https://github.com/BerriAI/litellm/pull/39672)
- fix(ui): make Admin UI table pagination honor the selected page size by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39680](https://github.com/BerriAI/litellm/pull/39680)
- chore: bump litellm-enterprise 0.1.64 -> 0.1.65, litellm-proxy-extras 0.4.93 -> 0.4.94 by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39912](https://github.com/BerriAI/litellm/pull/39912)
- test(e2e): repair the wildcard readiness probe and the semantic auto-router spend assertion by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39804](https://github.com/BerriAI/litellm/pull/39804)
- fix(guardrails): record guardrail information for undecorated custom apply_guardrail overrides by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39727](https://github.com/BerriAI/litellm/pull/39727)
- feat(responses): honor supported_endpoints /v1/responses opt-in for OpenAI-compatible deployments by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39725](https://github.com/BerriAI/litellm/pull/39725)
- fix(router): hold max_parallel_requests slot until streaming response is exhausted or closed by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39859](https://github.com/BerriAI/litellm/pull/39859)
- fix(proxy): retry deadlocks and requeue spend logs on any DB write error by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39883](https://github.com/BerriAI/litellm/pull/39883)
- fix(mcp): reject URL credentials for none auth by [@​tin-berri](https://github.com/tin-berri) in [#​39926](https://github.com/BerriAI/litellm/pull/39926)
- fix(hide-secrets): stop redacting benign identifiers by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39879](https://github.com/BerriAI/litellm/pull/39879)
- perf(logging): scan large base64 payloads for log truncation off the event loop by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39890](https://github.com/BerriAI/litellm/pull/39890)
- fix(proxy): make the invalid-model 403 path cheap under a burst of rejections by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39892](https://github.com/BerriAI/litellm/pull/39892)
- test(e2e): cover Anthropic /chat/completions streaming and tool calls by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39916](https://github.com/BerriAI/litellm/pull/39916)
- fix(router): coordinate async and sync failure handlers at remaining router call sites by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39887](https://github.com/BerriAI/litellm/pull/39887)
- fix(cloudzero): infer daily batch schema from every row by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39871](https://github.com/BerriAI/litellm/pull/39871)
- fix(cloudzero): preserve late resource tags by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39873](https://github.com/BerriAI/litellm/pull/39873)
- feat(ui): deep link guardrail detail with ?guardrail= on guardrails pages by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39930](https://github.com/BerriAI/litellm/pull/39930)
- test: repair two CI tests broken by intentional changes by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39932](https://github.com/BerriAI/litellm/pull/39932)
- feat(terraform/gcp): dependencies-only mode and bring-your-own-network for GKE by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39695](https://github.com/BerriAI/litellm/pull/39695)
- test(e2e): cover Anthropic and OpenAI prompt caching, Cohere embeddings, and costed /openai chat passthrough by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39920](https://github.com/BerriAI/litellm/pull/39920)
- test(e2e): cover key spend reset, regenerate grace period, and the llm_api_routes grant by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39917](https://github.com/BerriAI/litellm/pull/39917)
- test(e2e/ui): select 50 rows per page before asserting the Tags and Model Hub tables overflow by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39934](https://github.com/BerriAI/litellm/pull/39934)
- feat(auto-router): decouple compression between the routing decision and the model call by [@​moe-berri](https://github.com/moe-berri) in [#​39823](https://github.com/BerriAI/litellm/pull/39823)
- feat(mcp): renew the stored SSO identity assertion behind ID-JAG by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​35401](https://github.com/BerriAI/litellm/pull/35401)
- feat(mcp): warn when an oauth2_id_jag server outruns the SSO provider's assertion capture by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​35394](https://github.com/BerriAI/litellm/pull/35394)
- perf: lazy-load SDK symbols so import litellm stays under 60 MB RSS by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39121](https://github.com/BerriAI/litellm/pull/39121)
- test(e2e): cover presidio post_call, tool_permission, and weave logging cells by [@​yucheng-berri](https://github.com/yucheng-berri) in [#​39279](https://github.com/BerriAI/litellm/pull/39279)
- fix(ci): grant pull_requests write for release wheel reporter by [@​cursor](https://github.com/cursor)\[bot] in [#​39922](https://github.com/BerriAI/litellm/pull/39922)
- feat(guardrails): add non-blocking flag() verdict to custom code guardrails by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39728](https://github.com/BerriAI/litellm/pull/39728)
- feat(proxy): serve Prometheus /metrics from a separate process via --prometheus_metrics_port by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39889](https://github.com/BerriAI/litellm/pull/39889)
- fix(mcp): scan and mask MCP tool call arguments in unified guardrails by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​35142](https://github.com/BerriAI/litellm/pull/35142)
- fix(proxy): reject ambiguous name or alias keys in mcp_tool_permissions on write by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39947](https://github.com/BerriAI/litellm/pull/39947)
- test(e2e): stream a longer /v1/messages reply so the delta-count pin has margin by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39946](https://github.com/BerriAI/litellm/pull/39946)
- feat(ui): show guardrail usage units and cost on the Guardrails Monitor by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39853](https://github.com/BerriAI/litellm/pull/39853)
- fix(ui): show indirectly granted and name-keyed MCP servers in the tool matrix by [@​yassin-berriai](https://github.com/yassin-berriai) in [#​35154](https://github.com/BerriAI/litellm/pull/35154)
- test(e2e): prove Vertex context caching on the first cold call and on the spend row by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39938](https://github.com/BerriAI/litellm/pull/39938)
- feat(ocr): add Cohere Parse support for cohere and azure_ai by [@​mateo-berri](https://github.com/mateo-berri) in [#​39862](https://github.com/BerriAI/litellm/pull/39862)
- fix(proxy): keep guardrail cost in spend on cache hits by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39960](https://github.com/BerriAI/litellm/pull/39960)
- test(e2e): judge /v1/messages streaming on the clock, not on the provider's delta count by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39953](https://github.com/BerriAI/litellm/pull/39953)
- fix(ui): remove unreachable AI Hub dialog that put the session key in a URL by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​39968](https://github.com/BerriAI/litellm/pull/39968)
- fix(ui): read Usage Total Requests tile from gateway request counts by [@​devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#​39963](https://github.com/BerriAI/litellm/pull/39963)
- revert: perf: lazy-load SDK symbols so import litellm stays under 60 MB RSS ([#​39121](https://github.com/BerriAI/litellm/issues/39121)) by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39969](https://github.com/BerriAI/litellm/pull/39969)
- chore: rebuild Admin UI bundle for the next release by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39959](https://github.com/BerriAI/litellm/pull/39959)
- chore(ci): promote internal staging to main by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​39849](https://github.com/BerriAI/litellm/pull/39849)
- fix(proxy): redact provider keys from pass-through failure tracebacks by [@​mateo-berri](https://github.com/mateo-berri) in [#​39964](https://github.com/BerriAI/litellm/pull/39964)
- fix(file_search): scope emulated file_search to the request's vector stores by [@​mateo-berri](https://github.com/mateo-berri) in [#​39972](https://github.com/BerriAI/litellm/pull/39972)
- feat(cli): add lite pi to run the pi coding agent through the proxy by [@​ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#​36841](https://github.com/BerriAI/litellm/pull/36841)
- feat(pricing): add GovCloud pricing for every live but unpriced Bedrock model by [@​mateo-berri](https://github.com/mateo-berri) in [#​39764](https://github.com/BerriAI/litellm/pull/39764)
**Full Changelog**: <https://github.com/BerriAI/litellm/releases/tag/v1.108.0>
### [`v1.106.7`](https://github.com/BerriAI/litellm/releases/tag/v1.106.7)
[Compare Source](https://github.com/BerriAI/litellm/compare/v1.106.6...v1.106.7)
#### Verify Docker Image Signature
All LiteLLM Docker images are signed with [cosign](https://docs.sigstore.dev/cosign/overview/). This release is signed with the key introduced in [commit `e82a3c6`](https://github.com/BerriAI/litellm/commit/e82a3c646908ba0a6ee0beddc4310d7a6cac4065).
**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 published signing key:
```bash
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/e82a3c646908ba0a6ee0beddc4310d7a6cac4065/cosign.pub \
ghcr.io/berriai/litellm:v1.106.7
```
**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.106.7/cosign.pub \
ghcr.io/berriai/litellm:v1.106.7
```
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
- chore(lens)!: stop bundling and building Lens on 1.106.x by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​49173](https://github.com/BerriAI/litellm/pull/49173)
- feat(videos): serve custom_provider_map BaseVideoConfig providers on /v1/videos ([#​49785](https://github.com/BerriAI/litellm/issues/49785)) \[backport stable/1.106.x] by [@​kerry-berri](https://github.com/kerry-berri) in [#​49802](https://github.com/BerriAI/litellm/pull/49802)
**Full Changelog**: <https://github.com/BerriAI/litellm/compare/v1.106.6...v1.106.7>
### [`v1.106.6`](https://github.com/BerriAI/litellm/releases/tag/v1.106.6)
[Compare Source](https://github.com/BerriAI/litellm/compare/v1.106.5...v1.106.6)
#### Verify Docker Image Signature
All LiteLLM Docker images are signed with [cosign](https://docs.sigstore.dev/cosign/overview/). This release is signed with the key introduced in [commit `e82a3c6`](https://github.com/BerriAI/litellm/commit/e82a3c646908ba0a6ee0beddc4310d7a6cac4065).
**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 published signing key:
```bash
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/e82a3c646908ba0a6ee0beddc4310d7a6cac4065/cosign.pub \
ghcr.io/berriai/litellm:v1.106.6
```
**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.106.6/cosign.pub \
ghcr.io/berriai/litellm:v1.106.6
```
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(proxy): backport [#​46712](https://github.com/BerriAI/litellm/issues/46712) gzip scoping and off-loop compression to stable/1.106.x for v1.106.6 by [@​kerry-berri](https://github.com/kerry-berri) in [#​48680](https://github.com/BerriAI/litellm/pull/48680)
**Full Changelog**: <https://github.com/BerriAI/litellm/compare/v1.106.5...v1.106.6>
### [`v1.106.5`](https://github.com/BerriAI/litellm/releases/tag/v1.106.5)
[Compare Source](https://github.com/BerriAI/litellm/compare/v1.106.4...v1.106.5)
#### Verify this release
```bash
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/e82a3c646908ba0a6ee0beddc4310d7a6cac4065/cosign.pub \
ghcr.io/berriai/litellm:v1.106.5
```
Same command for `litellm-database`, `litellm-non_root` and the `docker.io/litellm/*` images
#### What's new in 1.106.5
1 PR. 1 changed. No action needed to upgrade
##### Changes
- **Logging and observability:** Changed failure logs for rejected requests to keep only core request fields, `tags` and guardrail details ([#​48599](https://github.com/BerriAI/litellm/issues/48599)) <sup>Also in [1.103.10](https://github.com/BerriAI/litellm/releases/tag/v1.103.10), [1.104.8](https://github.com/BerriAI/litellm/releases/tag/v1.104.8), [1.105.6](https://github.com/BerriAI/litellm/releases/tag/v1.105.6)</sup>
- **Logging and observability:** Changed the GCS logger to use the bucket and credentials configured on the proxy ([#​48599](https://github.com/BerriAI/litellm/issues/48599)) <sup>Also in [1.103.10](https://github.com/BerriAI/litellm/releases/tag/v1.103.10), [1.104.8](https://github.com/BerriAI/litellm/releases/tag/v1.104.8), [1.105.6](https://github.com/BerriAI/litellm/releases/tag/v1.105.6)</sup>
***
Backport [#​48605](https://github.com/BerriAI/litellm/issues/48605) · [Full changelog](https://github.com/BerriAI/litellm/compare/v1.106.4...v1.106.5)
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xODEuNyIsInVwZGF0ZWRJblZlciI6IjQ0LjE4MS43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
renovateBot
changed title from Update LITELLM_IMAGE (docker.litellm.ai/berriai/litellm) to v1.106.5 to Update LITELLM_IMAGE (docker.litellm.ai/berriai/litellm) to v1.106.62026-10-28 17:01:37 -07:00
renovateBot
changed title from Update LITELLM_IMAGE (docker.litellm.ai/berriai/litellm) to v1.106.6 to Update LITELLM_IMAGE (docker.litellm.ai/berriai/litellm) to v1.108.02026-11-03 22:05:38 -08:00
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
v1.106.4→v1.108.0Release Notes
BerriAI/litellm (LITELLM_IMAGE)
v1.108.0Compare Source
Verify Docker Image Signature
All LiteLLM Docker images are signed with cosign. This release is signed with the key introduced in commit
e82a3c6.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 published signing key:
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:
Expected output:
What's Changed
1050000by @mateo-berri in #382251050000by @mateo-berri in #38368mode: image_editin health checks by @devin-ai-integration[bot] in #38291requestscall a timeout so a silent server cannot hang the caller by @ryan-crabbe-berri in #38234lite debug claudesession report and /debug-lite slash command by @devin-ai-integration[bot] in #39435Full Changelog: https://github.com/BerriAI/litellm/releases/tag/v1.108.0
v1.106.7Compare Source
Verify Docker Image Signature
All LiteLLM Docker images are signed with cosign. This release is signed with the key introduced in commit
e82a3c6.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 published signing key:
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:
Expected output:
What's Changed
Full Changelog: https://github.com/BerriAI/litellm/compare/v1.106.6...v1.106.7
v1.106.6Compare Source
Verify Docker Image Signature
All LiteLLM Docker images are signed with cosign. This release is signed with the key introduced in commit
e82a3c6.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 published signing key:
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:
Expected output:
What's Changed
Full Changelog: https://github.com/BerriAI/litellm/compare/v1.106.5...v1.106.6
v1.106.5Compare Source
Verify this release
Same command for
litellm-database,litellm-non_rootand thedocker.io/litellm/*imagesWhat's new in 1.106.5
1 PR. 1 changed. No action needed to upgrade
Changes
tagsand guardrail details (#48599) Also in 1.103.10, 1.104.8, 1.105.6Backport #48605 · Full changelog
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate CLI.
3660b919f7tofb62f874f0Update LITELLM_IMAGE (docker.litellm.ai/berriai/litellm) to v1.106.5to Update LITELLM_IMAGE (docker.litellm.ai/berriai/litellm) to v1.106.6fb62f874f0toa65cf12f23a65cf12f23to3e252a2d75Update LITELLM_IMAGE (docker.litellm.ai/berriai/litellm) to v1.106.6to Update LITELLM_IMAGE (docker.litellm.ai/berriai/litellm) to v1.108.0View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.