v1.100.0

BerriAI/litellmv1.100.0Sep 6, 2026by yuneng-berri

AI Summary

A major release focused on security, stability, and UI improvements. Key updates include Docker image signing, dark mode UI support, and robust proxy/router stability fixes. It also introduces support for new providers like Gemini 3.5 transcribe and Vertex AI Interactions API.

Key Highlights

  • Docker images are now cryptographically signed using cosign for enhanced security.
  • Major UI overhaul including dark mode support, Teams list CSV export, and auto-router savings visualization.
  • Enhanced proxy stability with mid-stream fallbacks and improved health check routing.
  • Expanded provider support including Vertex AI Interactions API and Azure AI Foundry OAuth.
  • Performance optimizations in CI caching and Redis connection recovery.

Breaking Changes

  • Deletion of the `prompt_token_calculator` utility function.
  • Changes to `get_supported_openai_params` for Cerebras (added `max_retries`, `extra_headers`).
  • Updated wire format matching on image/video routes to align with OpenAI SDK.

New Features

  • New provider support: Gemini 3.5 transcribe and Vertex AI Interactions API.
  • UI enhancements: Teams list CSV export, session-level cache observability.
  • Proxy features: Vector-store upload security controls, per-window budget spend tracking.
  • Router improvements: Per-group supported reasoning efforts and heuristic-first classifier chaining.
  • Monitoring: Prometheus caller identity configuration and Microsoft Teams alerting.

Full Release Notes

## Verify Docker Image Signature

All LiteLLM Docker images are signed with [cosign](https://docs.sigstore.dev/cosign/overview/). Every release is signed with the same key introduced in [commit `0112e53`](https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0).

**Verify using the pinned commit hash (recommended):**

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

```bash
cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.100.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.100.0/cosign.pub \
  ghcr.io/berriai/litellm:v1.100.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(responses): keep the conversation when chaining previous_response_id on the bridge by @mateo-berri in https://github.com/BerriAI/litellm/pull/37956
* feat(newrelic): per-team New Relic trace routing via team callbacks by @yucheng-berri in https://github.com/BerriAI/litellm/pull/37603
* perf(ci): cache uv dependencies in the lint job by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37783
* perf(ci): fan the budget checkers out across cores by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37784
* ci: port the Postgres suites off CircleCI onto service containers by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37785
* feat(ci): gate patching of SDK internals in tests as TQ008 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37787
* ci: measure enterprise/ coverage by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37788
* ci: run the keyless caching tests that ran in no job by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37790
* fix(ci): run the migration DDL guard, and stop it reading comments as SQL by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37791
* ci: run the enterprise package suite in GitHub Actions by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37798
* perf(ci): give the two longest unit shards the runner's spare cores by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37804
* test(exception-mapping): pin the status and error-shape table every provider maps to by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37807
* fix(terraform): add soft_budget, tags, and soft_budget_alerting_emails to litellm_team by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37918
* fix(ui): theme the created-key box so it follows dark mode by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37985
* fix(ui): restore the public model name tooltip layout in the add model flow by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37986
* fix(ui): render team and org tpm/rpm limits of 0 as 0 instead of Unlimited by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37916
* fix(ui): repoint the key detail URL to the rotated hash after regenerating by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37968
* fix(ui): make playground chat bubbles theme-aware by @yuneng-berri in https://github.com/BerriAI/litellm/pull/37978
* fix(UI): correct skill install command and marketplace setup UX by @ozolam in https://github.com/BerriAI/litellm/pull/33514
* fix(proxy): skip health checks for strategy routers by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/37966
* fix(databricks): bill cached tokens at cache rates and add missing Claude pricing by @mateo-berri in https://github.com/BerriAI/litellm/pull/37975
* fix(anthropic): round-trip thinking blocks to OpenAI backends on /v1/messages by @mateo-berri in https://github.com/BerriAI/litellm/pull/37953
* fix(a2a): normalize agent card protocolBinding casing before transport match by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/37917
* fix(interactions): track cost and spend for Google Interactions API requests by @mateo-berri in https://github.com/BerriAI/litellm/pull/33310
* fix(bedrock): stop emitting an empty assistant delta after the finish_reason chunk by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/36806
* fix(anthropic): reconcile enum with declared type in output_format schema by @dkindlund in 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[bot] in 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[bot] in https://github.com/BerriAI/litellm/pull/37982
* fix(proxy): parse form-encoded video edit/extension bodies after auth by @Souravrajvi0 in 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 in https://github.com/BerriAI/litellm/pull/38108
* fix(utils): make prompt_token_calculator count claude models again by @ryan-crabbe-berri in 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 in https://github.com/BerriAI/litellm/pull/37908
* fix(health): apply model_info.health_check_params to health check probes by @mateo-berri in https://github.com/BerriAI/litellm/pull/38101
* fix(runwayml): route every generation endpoint and fix video cost tracking by @mateo-berri in 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 in https://github.com/BerriAI/litellm/pull/38111
* fix: match OpenAI SDK wire format on image/video routes by @mateo-berri in https://github.com/BerriAI/litellm/pull/38104
* fix(ci): give three unit shards a job deadline that outlasts their pytest budget by @tin-berri in https://github.com/BerriAI/litellm/pull/38139
* feat(ui): add Gemini Family auto-router preset by @tin-berri in https://github.com/BerriAI/litellm/pull/38138
* fix(logging_worker): carry queued tasks across event-loop change instead of dropping them by @mateo-berri in https://github.com/BerriAI/litellm/pull/38144
* feat(proxy): enforce vector-store upload security controls on /v1/rag/ingest by @mateo-berri in https://github.com/BerriAI/litellm/pull/38135
* test(e2e): pin require_managed_files enforcement behind a marker-gated stack phase by @mateo-berri in https://github.com/BerriAI/litellm/pull/38117
* refactor(ui): move the dashboard onto class-variance-authority by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38125
* refactor(utils)!: delete prompt_token_calculator by @ryan-crabbe-berri in 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 in https://github.com/BerriAI/litellm/pull/38129
* refactor(ui): install the shadcn field primitive by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38126
* fix(complexity_router): keep both ends of a clipped classifier context turn by @tin-berri in https://github.com/BerriAI/litellm/pull/38141
* fix(ci): ignore-list recursive form-field flatteners in recursive_detector by @mateo-berri in https://github.com/BerriAI/litellm/pull/38149
* fix(passthrough): stop leaking the caller's virtual key on credential-less Vertex passthrough by @mateo-berri in https://github.com/BerriAI/litellm/pull/38114
* fix(router): stop copying forwarded credentials into retry breadcrumbs by @mateo-berri in https://github.com/BerriAI/litellm/pull/38133
* feat(e2e): record and replay streamed provider responses chunk-for-chunk by @mateo-berri in https://github.com/BerriAI/litellm/pull/38136
* fix: tolerate stream chunks without a choices key in stream_chunk_builder by @AkshaySasi in https://github.com/BerriAI/litellm/pull/34382
* fix(files): decode x-litellm-model encoded file_id in chat + responses by @hclsys in https://github.com/BerriAI/litellm/pull/29832
* fix(videos): forward uploaded source file on /v1/videos/edits to the provider by @mateo-berri in 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[bot] in https://github.com/BerriAI/litellm/pull/38005
* feat(ui): add error-code drilldown for failed requests on caching page by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/38156
* feat(search): add Grounding with Bing Search (bing_grounding) as a search provider by @mateo-berri in https://github.com/BerriAI/litellm/pull/38119
* ci: ban row-rewriting DML from prisma migrations by @yucheng-berri in 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 in 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 in https://github.com/BerriAI/litellm/pull/38163
* chore(codeowners): unown ui container plumbing and generated files by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/38124
* fix(logging): skip parsing redacted tool call arguments by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38169
* feat(complexity_router): bound the classifier context block, not each turn in it by @tin-berri in https://github.com/BerriAI/litellm/pull/38145
* fix(http_handler): dispose aiohttp session when AsyncHTTPHandler is finalized without a running loop by @anmolg1997 in https://github.com/BerriAI/litellm/pull/36670
* fix(proxy): reset a stuck team member's budget by @yassin-berriai in 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[bot] in https://github.com/BerriAI/litellm/pull/37979
* fix(completion_extras): forward reasoning_effort=max through the Responses API bridge by @mateo-berri in https://github.com/BerriAI/litellm/pull/38222
* feat(vertex_ai): add native Vertex AI Interactions API support by @mateo-berri in 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 in 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 in https://github.com/BerriAI/litellm/pull/38154
* fix(together_ai): default endpoints to api.together.ai instead of api.together.xyz by @mateo-berri in 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 in https://github.com/BerriAI/litellm/pull/38231
* fix(router): resolve provider from api_base in deployment validation and acompletion by @mateo-berri in https://github.com/BerriAI/litellm/pull/38235
* fix(model_prices): raise bedrock_mantle gpt-5.6 max_input_tokens to Mantle's enforced 1050000 by @mateo-berri in https://github.com/BerriAI/litellm/pull/38225
* fix(bedrock_mantle): normalize Codex input item types Mantle rejects by @mateo-berri in 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[bot] in https://github.com/BerriAI/litellm/pull/37770
* feat(router): per-group supported reasoning efforts with the max level by @tin-berri in https://github.com/BerriAI/litellm/pull/37897
* fix(proxy): stop expected 4xx responses from saturating worker CPU on failure logging by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38102
* fix(caching): use upstream RedisCluster on redis-py with per-connection recovery by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38171
* perf(auth): drop guaranteed-miss internal-cache Redis read from team object lookup by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38073
* fix(together_ai): route chat completions through a dedicated TogetherAIChatConfig by @mateo-berri in https://github.com/BerriAI/litellm/pull/38248
* fix(ui): read reasoning tokens from Responses API output_tokens_details by @yassin-berriai in 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 in https://github.com/BerriAI/litellm/pull/37951
* fix(ui): render tag-based guardrail mode instead of crashing the guardrails page by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/37493
* fix(scim): return user_id as Group members[].value on transformed group responses by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38161
* fix(scim): preserve existing team memberships when POST /Users adoption carries no groups by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38166
* fix(router): support mid-stream fallback for anthropic_messages route type by @yassin-berriai in https://github.com/BerriAI/litellm/pull/38153
* fix(auth): support wildcard prefixes in jwt team_allowed_routes by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/37756
* feat(models): add missing Together AI serverless models to the cost map by @mateo-berri in https://github.com/BerriAI/litellm/pull/38230
* fix(cerebras)!: add max_retries and extra_headers to get_supported_openai_params by @deepanshululla in https://github.com/BerriAI/litellm/pull/36601
* fix(anthropic): translate tool_result document blocks in the /v1/messages bridge by @mateo-berri in 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 in 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 in https://github.com/BerriAI/litellm/pull/38252
* fix(anthropic): carry tool_result document blocks through the /v1/messages responses bridge by @mateo-berri in https://github.com/BerriAI/litellm/pull/38261
* fix(together_ai): pass tools through for models missing from the registry by @mateo-berri in https://github.com/BerriAI/litellm/pull/38265
* fix(anthropic): carry user-content document blocks through the /v1/messages responses bridge by @mateo-berri in https://github.com/BerriAI/litellm/pull/38267
* fix(rerank): emit latency and cost headers on /rerank by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/35419
* perf(streaming): add shared JSONFragmentAccumulator for Vertex and Anthropic by @deepanshululla in https://github.com/BerriAI/litellm/pull/36610
* fix(together_ai): strip internal thinking fields from outbound messages, keep reasoning_content by @mateo-berri in https://github.com/BerriAI/litellm/pull/38275
* fix(router): persist attempted_fallbacks and original_model_group into spend logs metadata by @yucheng-berri in https://github.com/BerriAI/litellm/pull/38107
* fix(logging): redact tool call arguments to valid JSON and preserve null content by @yucheng-berri in 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[bot] in 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 in https://github.com/BerriAI/litellm/pull/38274
* refactor(repositories): type prisma table access with one generic protocol by @mateo-berri in 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 in https://github.com/BerriAI/litellm/pull/36245
* test(together_ai): regression suite across chat, responses, and messages surfaces by @mateo-berri in https://github.com/BerriAI/litellm/pull/38283
* feat(logging): add async_post_call_failure_deployment_hook by @deepanshululla in 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 in 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 in https://github.com/BerriAI/litellm/pull/38286
* fix(logging): keep tracebacks for provider-originated 4xx errors by @mateo-berri in https://github.com/BerriAI/litellm/pull/38296
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38293
* refactor(ui): install the shadcn alert primitive by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38300
* refactor(ui): re-pull label, textarea, separator and skeleton from the registry by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38302
* feat(prometheus): configure deployment caller identity by @mphilippnv in https://github.com/BerriAI/litellm/pull/38221
* test(e2e): let the Together replayed-reasoning case survive a single provider miss by @mateo-berri in https://github.com/BerriAI/litellm/pull/38314
* fix(otel): map /v1/messages provider errors before failure logging by @mateo-berri in https://github.com/BerriAI/litellm/pull/38310
* fix(exceptions): map upstream status codes for providers with no exception_type branch by @mateo-berri in https://github.com/BerriAI/litellm/pull/38318
* fix(passthrough): record ownership of streamed responses under managed ids by @mateo-berri in https://github.com/BerriAI/litellm/pull/38320
* fix(proxy): encrypt streamed responses ids on /openai/v1/responses and /responses aliases by @mateo-berri in https://github.com/BerriAI/litellm/pull/38325
* test(cost-calc): pin the rate fallbacks inside a tiered-pricing tier by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38327
* test(e2e): cover the Bedrock provider-feature cells customers run by @mateo-berri in 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 in https://github.com/BerriAI/litellm/pull/38269
* fix(proxy): honor DATABASE_DISABLE_PREPARED_STATEMENTS in componentized entrypoints by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38363
* fix(anthropic-responses): preserve structured output strictness by @eugene-yao-zocdoc in 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[bot] in https://github.com/BerriAI/litellm/pull/37922
* fix(router): resolve hidden aliases for explicit lookup by @daniel-meismer-zocdoc in https://github.com/BerriAI/litellm/pull/38272
* fix(ui): keep focus in the add model public name input while typing by @devin-ai-integration[bot] in 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 in 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 in https://github.com/BerriAI/litellm/pull/38299
* fix(mcp): preserve provider access token lifetime by @daniel-meismer-zocdoc in https://github.com/BerriAI/litellm/pull/38271
* chore(ui): remove stale "New" badges from the dashboard by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38374
* test(cost-estimate): pin the prices and period totals /cost/estimate returns by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38315
* fix(ci): let the mutation workflow find covered lines so it generates mutants by @yuneng-berri in 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 by @mateo-berri in 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[bot] in https://github.com/BerriAI/litellm/pull/34658
* fix(bedrock): map reasoning_effort to reasoning.effort for OpenAI GPT-5.x on Converse by @6matt in https://github.com/BerriAI/litellm/pull/38279
* test(prometheus): cover caller-identity config failure cases by @yucheng-berri in https://github.com/BerriAI/litellm/pull/38380
* fix(redis): support credential providers across clients by @eugene-yao-zocdoc in https://github.com/BerriAI/litellm/pull/38094
* fix(health): support `mode: image_edit` in health checks by @devin-ai-integration[bot] in 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 in https://github.com/BerriAI/litellm/pull/38369
* fix(anthropic): raise missing-credential error on /v1/messages passthrough by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38240
* fix(mcp): complete DCR bridge OAuth challenges by @daniel-meismer-zocdoc in https://github.com/BerriAI/litellm/pull/37384
* test(proxy): pin the request-validation contracts in proxy/_types.py by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38307
* docs(CLAUDE.md): add pull-before-work rule by @mateo-berri in https://github.com/BerriAI/litellm/pull/38386
* fix(anthropic): scale cache costs by fast mode and trust served speed by @mateo-berri in 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 in https://github.com/BerriAI/litellm/pull/38370
* docs: tighten the pull-before-work rule in CLAUDE.md by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38389
* fix(health): strip credential fields from GET /health output by @Siraj637909 in https://github.com/BerriAI/litellm/pull/37090
* fix(minimax): attach MINIMAX_API_KEY on anthropic messages requests by @mateo-berri in 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 in https://github.com/BerriAI/litellm/pull/38282
* fix(health): probe Azure GA realtime path for transcription-only models by @mateo-berri in https://github.com/BerriAI/litellm/pull/38390
* fix(bedrock): parse cacheDetails for Converse 1h/5m cache write cost split by @danielva-monday in https://github.com/BerriAI/litellm/pull/36762
* fix(caching): flush async cache writes cancelled at event loop shutdown by @mateo-berri in https://github.com/BerriAI/litellm/pull/38385
* fix(router): resolve model_group_alias before pre-routing strategy dispatch by @tin-berri in https://github.com/BerriAI/litellm/pull/38382
* feat(proxy): enforce rpm/tpm on model add + fix validation error title in UI by @kunal2002 in https://github.com/BerriAI/litellm/pull/36518
* refactor(ui): move every page header onto the shared PageHeader by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38306
* fix(proxy): stop cache eviction errors from failing /key/update by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38308
* fix(aiohttp): honor global ssl_verify on the aiohttp_openai handler path by @mateo-berri in https://github.com/BerriAI/litellm/pull/38400
* fix(logging_worker): rescue dequeued logging tasks lost at event loop close by @mateo-berri in https://github.com/BerriAI/litellm/pull/38394
* fix(caching): require the namespace delimiter when checking already-namespaced redis keys by @mateo-berri in https://github.com/BerriAI/litellm/pull/38403
* fix(prompts): reject keyed prompt_data with prompt_id and populate prompt version by @mateo-berri in https://github.com/BerriAI/litellm/pull/38404
* fix(cost_calculator): resolve real cost key when model_name alias contains '/' by @ksk2023 in 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 in https://github.com/BerriAI/litellm/pull/38405
* test(azure-ai): pin the 422 retry that drops the field the provider rejected by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38309
* refactor(ui): read the auto-router tier set through one row list by @tin-berri in https://github.com/BerriAI/litellm/pull/38408
* fix(proxy): stop empty DB router_settings lists from clobbering yaml fallbacks by @mateo-berri in https://github.com/BerriAI/litellm/pull/38406
* fix(team): allow no-reset default budgets for team members by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/37708
* fix: forward image content lists to DeepSeek vision models by @yucheng-berri in https://github.com/BerriAI/litellm/pull/38397
* fix(fireworks_ai): stop using the trace id as the session affinity key by @Hamjaster in https://github.com/BerriAI/litellm/pull/35754
* fix(gemini-realtime): keep the client's voice on Vertex AI native-audio Live by @yucheng-berri in https://github.com/BerriAI/litellm/pull/38395
* fix(vertex_ai): bill Gemini grounding per unique web search query by @ousamabenyounes in https://github.com/BerriAI/litellm/pull/36397
* fix(health): make the image_edit health probe moderation-safe by @mateo-berri in 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 in https://github.com/BerriAI/litellm/pull/38361
* fix(proxy): key lazy openapi stubs off registered features, not sys.modules by @mateo-berri in https://github.com/BerriAI/litellm/pull/38416
* fix(proxy): derive auto-router health from its underlying models by @tin-berri in https://github.com/BerriAI/litellm/pull/38174
* fix(responses): let cache-control injection reach the system prompt from instructions by @tin-berri in https://github.com/BerriAI/litellm/pull/38120
* fix(gemini): bill Google Maps grounding as its own SKU by @mateo-berri in https://github.com/BerriAI/litellm/pull/38418
* fix(speech): keep proxy metadata and completion cost through the TTS completion bridge by @mateo-berri in https://github.com/BerriAI/litellm/pull/38414
* fix: map Gemini ON_DEMAND_FLEX traffic type to flex service tier by @bisma-nawaz in https://github.com/BerriAI/litellm/pull/37724
* feat(langfuse): support langfuse_environment as a per-key dynamic callback param by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38264
* feat(proxy): hide unhealthy models from model listings, opt-in by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38313
* fix(mcp): honor admin-entered OAuth URLs on authorize after issuer yield by @mateo-berri in https://github.com/BerriAI/litellm/pull/38379
* fix(model_prices): correct gemini-3.5-flash-lite flex cache-read pricing by @mateo-berri in https://github.com/BerriAI/litellm/pull/38422
* fix(cost): price gemini-live-2.5-flash-native-audio realtime sessions by @mateo-berri in https://github.com/BerriAI/litellm/pull/38419
* fix(cost-map): correct Gemini TTS and native-audio rates by @mateo-berri in https://github.com/BerriAI/litellm/pull/38412
* fix(prompts): propagate PATCHed prompt templates to every worker and pod by @mateo-berri in https://github.com/BerriAI/litellm/pull/38411
* fix(model_prices): bill gemini -latest/preview alias cache reads at 10% of input by @mateo-berri in https://github.com/BerriAI/litellm/pull/38423
* fix(proxy): sync search tools into the router on management writes by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38392
* feat(guardrails): track Azure Prompt Shield usage and cost with spend isolation by @yucheng-berri in 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 in https://github.com/BerriAI/litellm/pull/38407
* fix(cost): make cost-breakdown headers respect service tier by @mateo-berri in 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 in https://github.com/BerriAI/litellm/pull/38399
* revert(proxy): remove router_model_name from auto-routed response bodies by @tin-berri in https://github.com/BerriAI/litellm/pull/38429
* fix(google_genai): price streamed generateContent with the provider that served it by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/36055
* fix(logging): stop billing and logging response reads as LLM calls by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/36890
* fix(budget): serialize model_max_budget before the /budget/update write by @yuneng-berri in 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 in https://github.com/BerriAI/litellm/pull/38427
* feat(complexity_router): heuristic-first classifier chaining by @tin-berri in https://github.com/BerriAI/litellm/pull/38428
* test(e2e): un-skip the per-model budget update case by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38437
* fix(cost): stop double-billing cached tokens that overlap a modality by @Srivatsa03 in 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[bot] in https://github.com/BerriAI/litellm/pull/38436
* fix(mcp): accept raw x-litellm-api-key on streamable HTTP admission by @devin-ai-integration[bot] in 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[bot] in https://github.com/BerriAI/litellm/pull/38420
* fix(scim): apply default_team_params (incl. models) to SCIM-created teams by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38433
* fix(prompts): propagate prompt deletes to every worker and pod by @mateo-berri in https://github.com/BerriAI/litellm/pull/38434
* fix(anthropic_adapter): carry web search cost into /v1/messages breakdown headers by @mateo-berri in https://github.com/BerriAI/litellm/pull/38439
* fix(ui): show custom technical keywords on every router whose scorer runs by @tin-berri in https://github.com/BerriAI/litellm/pull/38451
* fix(e2e): move the vertex realtime suite off the retired Live preview model by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38454
* feat(newrelic): per-team cost and usage metrics via team callbacks by @yucheng-berri in https://github.com/BerriAI/litellm/pull/37610
* fix(ui): carry a preset's per-tier litellm_params through the prefill by @tin-berri in https://github.com/BerriAI/litellm/pull/38453
* fix(e2e): size the mid-conversation-system cache prefix above the minimum deterministically by @yuneng-berri in 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 in 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 in https://github.com/BerriAI/litellm/pull/38470
* feat(ui): toggle internal health check visibility in request logs by @mateo-berri in https://github.com/BerriAI/litellm/pull/38391
* fix(mcp): canonicalize bearer scheme on bridge egress by @daniel-meismer-zocdoc in https://github.com/BerriAI/litellm/pull/38398
* refactor: clean up fresh tech debt from 2026-08-27 window by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38484
* fix(exception_mapping_utils): map unmapped exceptions when model and provider are unset by @mateo-berri in https://github.com/BerriAI/litellm/pull/38496
* fix(ui_sso): resolve highest privilege Entra app role, not first in claim by @imranismail in https://github.com/BerriAI/litellm/pull/36728
* fix(proxy): regenerate lazy OpenAPI snapshot and guard it in CI by @mateo-berri in https://github.com/BerriAI/litellm/pull/38410
* feat(ui): add cache hit/miss filter to Request Logs by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38432
* fix(bedrock): sign rerank requests with the shared header-filtered SigV4 helper (internal copy of #36462) by @mateo-berri in https://github.com/BerriAI/litellm/pull/38093
* fix(bedrock): sign rerank requests with the shared, header-filtered SigV4 helper by @noahnistler in 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 in 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 in https://github.com/BerriAI/litellm/pull/38490
* build(ui): bump nginx to 1.31-alpine by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38541
* feat(otel): support per-team/per-key service.name for OTel v2 destinations by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38532
* test(e2e): de-flake the cost-header cache read and the router fallback control by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38435
* feat(gemini): day-0 support for gemini-3.5-transcribe and transcribe-live by @mateo-berri in 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 in 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[bot] in https://github.com/BerriAI/litellm/pull/38555
* fix: suppress misleading register_model unresolved-cost warnings for entries without custom pricing by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38542
* feat(proxy): opt-in budget rollover carrying overage into the next window by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38514
* fix(auth): skip guaranteed-miss team lookup for the litellm-dashboard sentinel by @devin-ai-integration[bot] in 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[bot] in https://github.com/BerriAI/litellm/pull/38463
* fix: keep schema reconciliation from fighting a partitioned LiteLLM_SpendLogs by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38452
* fix(ui): open select popups below the trigger instead of over it by @tin-berri in https://github.com/BerriAI/litellm/pull/38554
* fix(realtime): bill trailing audio when a Gemini transcribe Live session closes by @mateo-berri in https://github.com/BerriAI/litellm/pull/38563
* test(e2e): cover key generate and update on the Admin UI path by @yuneng-berri in 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 in https://github.com/BerriAI/litellm/pull/38566
* fix(ui): let the paginated search select keep what the user types by @yuneng-berri in 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 in 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[bot] in 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[bot] in https://github.com/BerriAI/litellm/pull/38207
* test(together_ai): assert fail-open supported params for models missing from the registry by @mateo-berri in https://github.com/BerriAI/litellm/pull/38487
* test(e2e): let the together tool tests accept parallel calls by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38567
* feat(mcp): let a resolved OAuth token target a custom upstream header by @tin-berri in https://github.com/BerriAI/litellm/pull/38456
* feat(together_ai): map reasoning_effort per model class by @mateo-berri in 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[bot] in https://github.com/BerriAI/litellm/pull/38449
* fix(cost): apply Together AI cache read pricing and per-model registry rates by @mateo-berri in https://github.com/BerriAI/litellm/pull/38280
* fix(guardrails): forward aws_external_id when the bedrock guardrail assumes a role by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38376
* fix(transcription): synthesize srt/vtt output for adapters without native subtitle formats by @mateo-berri in 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 in https://github.com/BerriAI/litellm/pull/38458
* fix(realtime): bill Gemini Live native-audio output tokens at the audio rate by @mateo-berri in https://github.com/BerriAI/litellm/pull/38457
* fix(anthropic): carry tool_reference tool results through the guardrail translation round trip by @mateo-berri in https://github.com/BerriAI/litellm/pull/38465
* fix(anthropic-adapter): pass provider-native and OpenAI-format tools through on /v1/messages by @mateo-berri in https://github.com/BerriAI/litellm/pull/38431
* test(e2e): serve the vision image from our own fixture by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38575
* feat(together_ai): add zai-org/GLM-5.3-Flash to the model registry by @mateo-berri in https://github.com/BerriAI/litellm/pull/38486
* fix(ui): stop server-searched comboboxes from clobbering picks and queries by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/38574
* feat(model_prices): let a map entry declare its exact reasoning_effort levels by @tin-berri in https://github.com/BerriAI/litellm/pull/38481
* fix(anthropic): carry the adaptive effort tier to every bridged Claude target by @tin-berri in https://github.com/BerriAI/litellm/pull/38533
* feat(alerting): add native Microsoft Teams alerting destination by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38367
* chore(proxy): resync the generated API artifacts with the current models by @tin-berri in https://github.com/BerriAI/litellm/pull/38587
* fix(router): reject complexity-router settings written outside complexity_router_config by @tin-berri in https://github.com/BerriAI/litellm/pull/38570
* feat(ui): session-level cache observability in request logs by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38442
* fix(ui): link Virtual Keys hint through the migrated /ui route by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38596
* fix(anthropic): carry the effort tier only where the target declares reasoning_effort by @tin-berri in https://github.com/BerriAI/litellm/pull/38592
* fix(presidio): chunk oversized text before /analyze so large content blocks do not fail by @yucheng-berri in https://github.com/BerriAI/litellm/pull/38483
* fix(logging): stop stream-based log collectors classifying INFO logs as errors by @yucheng-berri in https://github.com/BerriAI/litellm/pull/38476
* feat(ui): dry-run an auto-router config against the backend before saving it by @tin-berri in https://github.com/BerriAI/litellm/pull/38595
* fix(guardrails): add fail-open mode to CrowdStrike AIDR guardrail by @yucheng-berri in https://github.com/BerriAI/litellm/pull/38568
* fix(router): copy instead of mutating caller metadata when scrubbing fallback stamp keys by @yucheng-berri in 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 in https://github.com/BerriAI/litellm/pull/38572
* fix(langfuse): warn and drop invalid LANGFUSE_TRACING_ENVIRONMENT instead of failing requests by @yucheng-berri in https://github.com/BerriAI/litellm/pull/38582
* fix(tencent): route thinking through extra_body in chat completions by @FelipeRodriguesGare in https://github.com/BerriAI/litellm/pull/38100
* test-check-commits by @nickhac in https://github.com/BerriAI/litellm/pull/36344
* feat(proxy): dry-run a real request body on /auto_router/test_routing by @tin-berri in 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 in https://github.com/BerriAI/litellm/pull/38589
* fix(anthropic): resolve /v1/messages effort tiers through the capability owner by @tin-berri in https://github.com/BerriAI/litellm/pull/38492
* fix(router): fall over on raised mid-stream errors in /v1/messages streams by @mateo-berri in https://github.com/BerriAI/litellm/pull/38606
* feat(models): add daily Together AI model registry sync script and workflow by @mateo-berri in https://github.com/BerriAI/litellm/pull/38257
* feat(ui): the model and wire layer for operator-defined auto-router tier sets by @tin-berri in https://github.com/BerriAI/litellm/pull/38602
* fix(moonshot, together_ai): send the reasoning effort Kimi K3 accepts by @tin-berri in 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 in https://github.com/BerriAI/litellm/pull/38601
* feat(proxy): opt-in flags to require rpm/tpm on model and project create by @ansh-agrawal in https://github.com/BerriAI/litellm/pull/36514
* fix(exceptions): keep a refused connection an APIConnectionError by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38624
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38616
* fix(anthropic): drop and self-heal empty thinking blocks on /v1/messages by @tin-berri in https://github.com/BerriAI/litellm/pull/38625
* fix(anthropic): handle per-level reasoning_effort flags without supports_reasoning by @tin-berri in https://github.com/BerriAI/litellm/pull/38618
* fix(complexity_router): route client housekeeping calls to the cheapest tier by @tin-berri in https://github.com/BerriAI/litellm/pull/38598
* test: fix staging CI regressions from #38182, #38144, #38265, #37962, and #37969 by @mateo-berri in https://github.com/BerriAI/litellm/pull/38304
* feat(spend): report prompt caching savings as total and gateway-attributed by @tin-berri in https://github.com/BerriAI/litellm/pull/38134
* fix(proxy): let llm_api virtual keys read /model_group/info by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38662
* feat(ui): edit the auto-router tier set with custom classifier-defined tiers by @tin-berri in 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) by @mateo-berri in https://github.com/BerriAI/litellm/pull/38657
* test: refresh the suites that drifted from langfuse and OpenAI's retired Assistants API by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38637
* test(e2e): unskip four tests whose blockers no longer hold by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38640
* feat(proxy): add paginated GET /public/v1/model_hub by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38636
* refactor(ui): type search tool params from the generated schema by @yuneng-berri in 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 in 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 in https://github.com/BerriAI/litellm/pull/38615
* fix(ui): keep the usage filter visible when the caller's scope is empty by @yuneng-berri in 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[bot] in https://github.com/BerriAI/litellm/pull/38560
* fix(logging): preserve null end user in callbacks by @yucheng-berri in https://github.com/BerriAI/litellm/pull/38642
* test: close mutation-testing gaps in container, skills and openai-like config factories by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38677
* fix: enforce MCP toolsets attached to a team, org, or internal user by @yucheng-berri in https://github.com/BerriAI/litellm/pull/38488
* fix(tests): drain the global logging worker in RAG aquery billing tests by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38653
* chore(techdebt): type new signatures and drop slop comments from the last 24h by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38644
* feat(auto_router): write and preview the classifier prompt an edited tier set sends by @tin-berri in 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 in https://github.com/BerriAI/litellm/pull/38691
* fix(streaming): preserve provider model for cost calculation by @aaaaaandrew in https://github.com/BerriAI/litellm/pull/38656
* feat(models): sync together_ai model registry by @github-actions[bot] in https://github.com/BerriAI/litellm/pull/38694
* test(e2e): cover Together reasoning_effort=none, json_schema, and cache-read pricing by @mateo-berri in https://github.com/BerriAI/litellm/pull/38697
* fix(model_info): map supports_parallel_function_calling into ModelInfo by @mateo-berri in https://github.com/BerriAI/litellm/pull/38692
* test(litellm_utils_tests): give the aiohttp transport tests teeth by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38066
* fix(proxy): use default_factory for _BudgetCascade.rollover_caps by @yassin-berriai in https://github.com/BerriAI/litellm/pull/38687
* feat(guardrails): add Lakera v2 skip-message honoring and advisory (inject_system_message) mode by @deepanshululla in https://github.com/BerriAI/litellm/pull/34940
* fix(router): drop a tier param the routed target cannot take by @tin-berri in 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 in https://github.com/BerriAI/litellm/pull/38690
* fix(shadow-eval): validate Anthropic SDK judge credentials by @tin-berri in 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 in https://github.com/BerriAI/litellm/pull/38482
* chore: drop stray learnings.md workflow note from CLAUDE.md by @yucheng-berri in https://github.com/BerriAI/litellm/pull/38704
* fix(spend): remove the proxy-wide autorouter savings baseline override by @tin-berri in https://github.com/BerriAI/litellm/pull/38700
* fix(router): tier-pinned reasoning_effort supersedes client effort carriers by @tin-berri in https://github.com/BerriAI/litellm/pull/38698
* fix(proxy): reset a key's budget-window counters on spend reset by @yassin-berriai in 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 in 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 in https://github.com/BerriAI/litellm/pull/38593
* fix(streaming): report response_cost and Anthropic citations from stream_chunk_builder by @mateo-berri in https://github.com/BerriAI/litellm/pull/38696
* feat(ui): make provider logos readable in dark mode by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38588
* feat(terraform): resource and data source parity with the community provider by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/38158
* test(shadow_eval): configure the anthropic sdk judge in the funnel-seed test by @yucheng-berri in 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 in https://github.com/BerriAI/litellm/pull/38695
* feat(terraform): add litellm_jwt_key_mapping resource by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38714
* feat(terraform): coverage-enforcing CI gate against the latest OpenAPI spec by @devin-ai-integration[bot] in 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[bot] in https://github.com/BerriAI/litellm/pull/38720
* fix(guardrails): record post_call scans on native /v1/messages streams by @mateo-berri in https://github.com/BerriAI/litellm/pull/38713
* chore(deps): raise RestrictedPython floor to 8.5 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38715
* fix(proxy): trigger async_pre_call_hook on POST /v1/files uploads by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38607
* test(responses): adapt temperature tests to the gpt-5 reasoning validation by @mateo-berri in 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 in https://github.com/BerriAI/litellm/pull/38742
* fix(bedrock): map real batch record counts and guard zero-count retire by @mateo-berri in https://github.com/BerriAI/litellm/pull/38744
* fix(aws): forward aws_external_id in Bedrock embeddings and SageMaker credential loading by @mateo-berri in 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 in https://github.com/BerriAI/litellm/pull/38747
* refactor(types): replace Any with real types across 178 backend files by @mateo-berri in https://github.com/BerriAI/litellm/pull/38501
* feat(hosted_vllm): add vLLM-Omni videos API by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/38148
* fix(databricks): derive OAuth token URL from workspace origin by @ump45nose in 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 in https://github.com/BerriAI/litellm/pull/38552
* fix(batches): fill a managed batch page past rows that will not parse by @mateo-berri in https://github.com/BerriAI/litellm/pull/38738
* fix(proxy): tag routing misses proxy-merged tags when chat requests carry litellm_metadata by @mateo-berri in https://github.com/BerriAI/litellm/pull/38739
* fix(health): honor allow_requests_on_db_unavailable in readiness probe by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/37640
* feat(mcp): support asymmetric (RS256) signing for MCP gateway session tokens by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38728
* fix(ui): make code blocks follow the theme in dark mode by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38771
* perf(rust): use pythonize for bridge serialization by @yujonglee-berri in https://github.com/BerriAI/litellm/pull/38764
* fix(policy): let the AI policy suggester drop sampling params its model refuses by @tin-berri in 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 in https://github.com/BerriAI/litellm/pull/38626
* fix(ui): make the logs JSON viewer follow the theme in dark mode by @yuneng-berri in 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 in https://github.com/BerriAI/litellm/pull/38779
* refactor: clean up tech debt that landed on 2026-08-29 by @devin-ai-integration[bot] in 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[bot] in 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[bot] in https://github.com/BerriAI/litellm/pull/38580
* fix(ui): restore the reopen control for the log drawer's trace sidebar by @yuneng-berri in 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[bot] in https://github.com/BerriAI/litellm/pull/38285
* fix(soniox): align synthesized SRT/VTT cues to real speech timing by @dan2k3k4 in https://github.com/BerriAI/litellm/pull/34440
* fix(bedrock): route all cohere.embed models to the cohere embedding config by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38670
* feat(mcp_gateway): add RFC 7662 introspection for gateway session tokens by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38726
* fix(headroom): resolve CCR retrieval on streaming /chat/completions by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/35017
* fix: bound Hugging Face config fetch and keep embedding tests off the network by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38752
* feat(vertex-ai): add veo 3.1 lite model metadata by @emerzon in https://github.com/BerriAI/litellm/pull/30782
* feat(proxy): cyberark conjur secret manager configuration via Admin UI by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38445
* ci: build the benchmark environment outside the CodSpeed runner by @devin-ai-integration[bot] in 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 in https://github.com/BerriAI/litellm/pull/38234
* fix(batches): aggregate reasoning tokens and per-line pass/fail counts by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/37208
* fix(ui): allow in-place editing of classifier numeric inputs by @tin-berri in https://github.com/BerriAI/litellm/pull/38803
* fix(anthropic): emit signature-only thinking blocks on the /v1/messages bridge by @tin-berri in https://github.com/BerriAI/litellm/pull/38809
* fix(ui): keep a deleted-from search query instead of blanking the box by @yuneng-berri in 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[bot] in https://github.com/BerriAI/litellm/pull/38473
* feat(budgets): enforce shared budgets on model access groups by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/38784
* feat(vertex_ai): support gemini-3.5-transcribe on /v1/audio/transcriptions by @mateo-berri in https://github.com/BerriAI/litellm/pull/38740
* fix(anthropic_endpoints): serialize dict-detail HTTPExceptions on /v1/messages like sibling surfaces by @mateo-berri in https://github.com/BerriAI/litellm/pull/38741
* fix(proxy): count auto-router classifier cost in savings and benchmarks by @tin-berri in https://github.com/BerriAI/litellm/pull/38835
* feat(proxy): add LiteLLM_BudgetWindowSpend table for per-window budget spend by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/35854
* fix(models): registry audit: new Together/Fireworks/Gemini/Mistral/xAI models, xai retirement repricing, bedrock grok-4.6 caching, deprecation dates by @mateo-berri in https://github.com/BerriAI/litellm/pull/38804
* feat(proxy): maintain per-window budget spend rows in the spend writer by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/35886
* perf(proxy): read budget-window spend from the maintained window table by @ryan-crabbe-berri in 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 in https://github.com/BerriAI/litellm/pull/38820
* fix(openai): flatten top-level anyOf/oneOf/allOf in Responses API tool schemas by @mateo-berri in https://github.com/BerriAI/litellm/pull/38792
* fix(anthropic): cap reasoning_effort thinking budget below max_tokens on /v1/messages by @mateo-berri in 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 in https://github.com/BerriAI/litellm/pull/38837
* chore: rebuild Admin UI bundle for the next release by @yuneng-berri in 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[bot] in https://github.com/BerriAI/litellm/pull/38249
* fix(guardrails): stop Lakera monitor mode forwarding unmasked PII on Responses-API bodies by @yucheng-berri in https://github.com/BerriAI/litellm/pull/38841
* feat(mcp): bulk-import Anthropic MCP connectors via API and admin UI by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/38444
* feat(ui): set a model access group's shared budget from the dashboard by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/38843
* fix(ui): drop stray text next to Close in the model connection test dialog by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38852
* feat(helm): make extra ingress paths configurable in the componentized chart by @yassin-berriai in https://github.com/BerriAI/litellm/pull/35700
* fix(otel/v2): detach credential-routed tenant spans into their own trace by @yucheng-berri in 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 in https://github.com/BerriAI/litellm/pull/38833
* test(e2e): retry upstream-saturation failures in the claude CLI driver by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38850
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/38805
* fix(docker): bump wolfi-base for glibc 2.44 and pin apk python to 3.13 on rc/1.100.0 (cherry-pick #38917, #38973) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/39992

## New Contributors
* @ozolam made their first contribution in https://github.com/BerriAI/litellm/pull/33514
* @AkshaySasi made their first contribution in https://github.com/BerriAI/litellm/pull/34382
* @mphilippnv made their first contribution in https://github.com/BerriAI/litellm/pull/38221
* @Siraj637909 made their first contribution in https://github.com/BerriAI/litellm/pull/37090
* @danielva-monday made their first contribution in https://github.com/BerriAI/litellm/pull/36762
* @ksk2023 made their first contribution in https://github.com/BerriAI/litellm/pull/38344
* @Hamjaster made their first contribution in https://github.com/BerriAI/litellm/pull/35754
* @ousamabenyounes made their first contribution in https://github.com/BerriAI/litellm/pull/36397
* @bisma-nawaz made their first contribution in https://github.com/BerriAI/litellm/pull/37724
* @imranismail made their first contribution in https://github.com/BerriAI/litellm/pull/36728
* @nickhac made their first contribution in https://github.com/BerriAI/litellm/pull/36344
* @ansh-agrawal made their first contribution in https://github.com/BerriAI/litellm/pull/36514
* @aaaaaandrew made their first contribution in https://github.com/BerriAI/litellm/pull/38656
* @ump45nose made their first contribution in https://github.com/BerriAI/litellm/pull/35940

**Full Changelog**: https://github.com/BerriAI/litellm/compare/v1.99.0...v1.100.0