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