v1.100.0-rc.1Pre-release
Added 7
- Report prompt caching savings as total and gateway-attributed in spend tracking
- Edit the auto-router tier set with custom classifier-defined tiers in UI
- Add paginated GET /public/v1/model_hub endpoint
- Implement semantic search over the agent registry via GET /v1/agents?query and an agent_search MCP tool
- Write and preview the classifier prompt an edited tier set sends in auto_router
- Sync together_ai model registry
- Add Lakera v2 skip-message honoring and advisory (inject_system_message) mode to guardrails
Fixed 16
- Drop and self-heal empty thinking blocks on /v1/messages for Anthropic
- Handle per-level reasoning_effort flags without supports_reasoning for Anthropic
- Route client housekeeping calls to the cheapest tier in complexity_router
- Allow llm_api virtual keys to read /model_group/info
- Count tools, system, and Anthropic image and document blocks in the count_tokens fallback
- Add bedrock_mantle gpt-5.5/5.4 272K tiers and align sol with AWS invoice in model_prices
- Keep the usage filter visible when the caller's scope is empty in UI
- Add Gemini Omni 1.1 Flash, xAI grok-imagine image models, Mistral cache-read pricing, and GLM and Kimi entries to registry
- Preserve null end user in callbacks for logging
- Enforce MCP toolsets attached to a team, org, or internal user
- Price the /v1/messages cost header by the deployment model, not the client alias
- Preserve provider model for cost calculation in streaming
- Map supports_parallel_function_calling into ModelInfo
- Use default_factory for _BudgetCascade.rollover_caps
- Drop a tier param the routed target cannot take in router
- Scrub fallback stamp keys in place and strip them at the proxy boundary
Security 1
- Sign all LiteLLM Docker images with cosign
From LiteLLM
Verify Docker Image Signature
All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.
Verify using the pinned commit hash (recommended):
A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
ghcr.io/berriai/litellm:v1.100.0-rc.1
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:
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/v1.100.0-rc.1/cosign.pub \
ghcr.io/berriai/litellm:v1.100.0-rc.1
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(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
requestscall 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
New Contributors
- @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
- @yujonglee-berri made their first contribution in https://github.com/BerriAI/litellm/pull/38764
Full Changelog: https://github.com/BerriAI/litellm/compare/v1.100.0-dev.2...v1.100.0-rc.1