Skip to content

v1.100.0-dev.1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Aug 05:06
· 154 commits to litellm_internal_staging since this release
6e569ee

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-dev.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-dev.1/cosign.pub \
  ghcr.io/berriai/litellm:v1.100.0-dev.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(responses): keep the conversation when chaining previous_response_id on the bridge by @mateo-berri in #37956
  • feat(newrelic): per-team New Relic trace routing via team callbacks by @yucheng-berri in #37603
  • perf(ci): cache uv dependencies in the lint job by @yuneng-berri in #37783
  • perf(ci): fan the budget checkers out across cores by @yuneng-berri in #37784
  • ci: port the Postgres suites off CircleCI onto service containers by @yuneng-berri in #37785
  • feat(ci): gate patching of SDK internals in tests as TQ008 by @yuneng-berri in #37787
  • ci: measure enterprise/ coverage by @yuneng-berri in #37788
  • ci: run the keyless caching tests that ran in no job by @yuneng-berri in #37790
  • fix(ci): run the migration DDL guard, and stop it reading comments as SQL by @yuneng-berri in #37791
  • ci: run the enterprise package suite in GitHub Actions by @yuneng-berri in #37798
  • perf(ci): give the two longest unit shards the runner's spare cores by @yuneng-berri in #37804
  • test(exception-mapping): pin the status and error-shape table every provider maps to by @yuneng-berri in #37807
  • fix(terraform): add soft_budget, tags, and soft_budget_alerting_emails to litellm_team by @yuneng-berri in #37918
  • fix(ui): theme the created-key box so it follows dark mode by @yuneng-berri in #37985
  • fix(ui): restore the public model name tooltip layout in the add model flow by @yuneng-berri in #37986
  • fix(ui): render team and org tpm/rpm limits of 0 as 0 instead of Unlimited by @yuneng-berri in #37916
  • fix(ui): repoint the key detail URL to the rotated hash after regenerating by @yuneng-berri in #37968
  • fix(ui): make playground chat bubbles theme-aware by @yuneng-berri in #37978
  • fix(UI): correct skill install command and marketplace setup UX by @ozolam in #33514
  • fix(proxy): skip health checks for strategy routers by @devin-ai-integration[bot] in #37966
  • fix(databricks): bill cached tokens at cache rates and add missing Claude pricing by @mateo-berri in #37975
  • fix(anthropic): round-trip thinking blocks to OpenAI backends on /v1/messages by @mateo-berri in #37953
  • fix(a2a): normalize agent card protocolBinding casing before transport match by @devin-ai-integration[bot] in #37917
  • fix(interactions): track cost and spend for Google Interactions API requests by @mateo-berri in #33310
  • fix(bedrock): stop emitting an empty assistant delta after the finish_reason chunk by @devin-ai-integration[bot] in #36806
  • fix(anthropic): reconcile enum with declared type in output_format schema by @dkindlund in #37882
  • feat(azure_ai): support entra id / oauth auth on every azure ai foundry route by @devin-ai-integration[bot] in #35415
  • fix(ui): boot the UI image as an arbitrary uid by anchoring nginx writes under /tmp by @devin-ai-integration[bot] in #37982
  • fix(proxy): parse form-encoded video edit/extension bodies after auth by @Souravrajvi0 in #36513
  • fix(anthropic): keep legacy thinking budget_tokens on Claude 4.6 models on /v1/messages by @mateo-berri in #38108
  • fix(utils): make prompt_token_calculator count claude models again by @ryan-crabbe-berri in #38130
  • fix(proxy): keep every value of a repeated form key, and gate the tests that hid it by @ryan-crabbe-berri in #37908
  • fix(health): apply model_info.health_check_params to health check probes by @mateo-berri in #38101
  • fix(runwayml): route every generation endpoint and fix video cost tracking by @mateo-berri in #38115
  • fix(passthrough): attribute spend and release budget reservation on router-model /vllm and /azure routes by @mateo-berri in #38111
  • fix: match OpenAI SDK wire format on image/video routes by @mateo-berri in #38104
  • fix(ci): give three unit shards a job deadline that outlasts their pytest budget by @tin-berri in #38139
  • feat(ui): add Gemini Family auto-router preset by @tin-berri in #38138
  • fix(logging_worker): carry queued tasks across event-loop change instead of dropping them by @mateo-berri in #38144
  • feat(proxy): enforce vector-store upload security controls on /v1/rag/ingest by @mateo-berri in #38135
  • test(e2e): pin require_managed_files enforcement behind a marker-gated stack phase by @mateo-berri in #38117
  • refactor(ui): move the dashboard onto class-variance-authority by @yuneng-berri in #38125
  • refactor(utils)!: delete prompt_token_calculator by @ryan-crabbe-berri in #38132
  • fix(auto-router): list configured auto-routers in the usage picker before they have traffic by @tin-berri in #38129
  • refactor(ui): install the shadcn field primitive by @yuneng-berri in #38126
  • fix(complexity_router): keep both ends of a clipped classifier context turn by @tin-berri in #38141
  • fix(ci): ignore-list recursive form-field flatteners in recursive_detector by @mateo-berri in #38149
  • fix(passthrough): stop leaking the caller's virtual key on credential-less Vertex passthrough by @mateo-berri in #38114
  • fix(router): stop copying forwarded credentials into retry breadcrumbs by @mateo-berri in #38133
  • feat(e2e): record and replay streamed provider responses chunk-for-chunk by @mateo-berri in #38136
  • fix: tolerate stream chunks without a choices key in stream_chunk_builder by @AkshaySasi in #34382
  • fix(files): decode x-litellm-model encoded file_id in chat + responses by @hclsys in #29832
  • fix(videos): forward uploaded source file on /v1/videos/edits to the provider by @mateo-berri in #38155
  • fix(s3_v2): percent-encode object keys once so signed and sent URLs match by @devin-ai-integration[bot] in #38005
  • feat(ui): add error-code drilldown for failed requests on caching page by @ryan-crabbe-berri in #38156
  • feat(search): add Grounding with Bing Search (bing_grounding) as a search provider by @mateo-berri in #38119
  • ci: ban row-rewriting DML from prisma migrations by @yucheng-berri in #37899
  • fix(langsmith): keep root-run ids self-consistent so batch ingest stops rejecting header-tagged requests by @yucheng-berri in #38116
  • ci(e2e): record the e2e suite weekly and replay it on weekdays with zero egress by @mateo-berri in #38163
  • chore(codeowners): unown ui container plumbing and generated files by @ryan-crabbe-berri in #38124
  • fix(logging): skip parsing redacted tool call arguments by @devin-ai-integration[bot] in #38169
  • feat(complexity_router): bound the classifier context block, not each turn in it by @tin-berri in #38145
  • fix(http_handler): dispose aiohttp session when AsyncHTTPHandler is finalized without a running loop by @anmolg1997 in #36670
  • fix(proxy): reset a stuck team member's budget by @yassin-berriai in #37971
  • fix(anthropic/bedrock): request summarized adaptive thinking for reasoning_effort and use provider thinking token counts by @devin-ai-integration[bot] in #37979
  • fix(completion_extras): forward reasoning_effort=max through the Responses API bridge by @mateo-berri in #38222
  • feat(vertex_ai): add native Vertex AI Interactions API support by @mateo-berri in #38229
  • test(mcp): drain the logging worker after each test so queued callbacks cannot leak into the next test by @ryan-crabbe-berri in #38228
  • fix(ui): forward OAuth issuer/authorization/token/registration URLs from the MCP server edit form by @yassin-berriai in #38154
  • fix(together_ai): default endpoints to api.together.ai instead of api.together.xyz by @mateo-berri in #38233
  • fix(bedrock_mantle): register a Bedrock runtime passthrough config so /bedrock/model//invoke works by @mateo-berri in #38231
  • fix(router): resolve provider from api_base in deployment validation and acompletion by @mateo-berri in #38235
  • fix(model_prices): raise bedrock_mantle gpt-5.6 max_input_tokens to Mantle's enforced 1050000 by @mateo-berri in #38225
  • fix(bedrock_mantle): normalize Codex input item types Mantle rejects by @mateo-berri in #38227
  • fix(proxy): store the actual selected model in spend logs for Azure Model Router by @devin-ai-integration[bot] in #37770
  • feat(router): per-group supported reasoning efforts with the max level by @tin-berri in #37897
  • fix(proxy): stop expected 4xx responses from saturating worker CPU on failure logging by @devin-ai-integration[bot] in #38102
  • fix(caching): use upstream RedisCluster on redis-py with per-connection recovery by @devin-ai-integration[bot] in #38171
  • perf(auth): drop guaranteed-miss internal-cache Redis read from team object lookup by @devin-ai-integration[bot] in #38073
  • fix(together_ai): route chat completions through a dedicated TogetherAIChatConfig by @mateo-berri in #38248
  • fix(ui): read reasoning tokens from Responses API output_tokens_details by @yassin-berriai in #37952
  • fix(dashboard): don't show a stale provider prompt-cache chip on a response-cache hit by @yassin-berriai in #37951
  • fix(ui): render tag-based guardrail mode instead of crashing the guardrails page by @devin-ai-integration[bot] in #37493
  • fix(scim): return user_id as Group members[].value on transformed group responses by @devin-ai-integration[bot] in #38161
  • fix(scim): preserve existing team memberships when POST /Users adoption carries no groups by @devin-ai-integration[bot] in #38166
  • fix(router): support mid-stream fallback for anthropic_messages route type by @yassin-berriai in #38153
  • fix(auth): support wildcard prefixes in jwt team_allowed_routes by @devin-ai-integration[bot] in #37756
  • feat(models): add missing Together AI serverless models to the cost map by @mateo-berri in #38230
  • fix(cerebras)!: add max_retries and extra_headers to get_supported_openai_params by @deepanshululla in #36601
  • fix(anthropic): translate tool_result document blocks in the /v1/messages bridge by @mateo-berri in #38251
  • fix(team): serialize member_add, member_delete, and delete under the team's advisory lock by @yassin-berriai in #37969
  • docs(pr-template): split Caveats bullets into severity tiers and call for plain engineering language by @mateo-berri in #38252
  • fix(anthropic): carry tool_result document blocks through the /v1/messages responses bridge by @mateo-berri in #38261
  • fix(together_ai): pass tools through for models missing from the registry by @mateo-berri in #38265
  • fix(anthropic): carry user-content document blocks through the /v1/messages responses bridge by @mateo-berri in #38267
  • fix(rerank): emit latency and cost headers on /rerank by @devin-ai-integration[bot] in #35419
  • perf(streaming): add shared JSONFragmentAccumulator for Vertex and Anthropic by @deepanshululla in #36610
  • fix(together_ai): strip internal thinking fields from outbound messages, keep reasoning_content by @mateo-berri in #38275
  • fix(router): persist attempted_fallbacks and original_model_group into spend logs metadata by @yucheng-berri in #38107
  • fix(logging): redact tool call arguments to valid JSON and preserve null content by @yucheng-berri in #38182
  • fix(ui): stack policy flow builder below the popup layer so guardrail options render by @devin-ai-integration[bot] in #38273
  • test: gate the test tree on B003 so a test cannot swap os.environ for a plain dict by @ryan-crabbe-berri in #38274
  • refactor(repositories): type prisma table access with one generic protocol by @mateo-berri in #38205
  • fix(anthropic): buffer streamed responses carrying server-fulfilled tools so retrieval tool calls never reach the client by @mateo-berri in #36245
  • test(together_ai): regression suite across chat, responses, and messages surfaces by @mateo-berri in #38283
  • feat(logging): add async_post_call_failure_deployment_hook by @deepanshululla in #36657
  • chore: bump litellm-enterprise 0.1.59 -> 0.1.60, litellm 1.99.0 -> 1.100.0 by @yuneng-berri in #38243
  • test(e2e): cover Together AI reasoning, tool calls, template kwargs, and cost through a live proxy by @mateo-berri in #38286
  • fix(logging): keep tracebacks for provider-originated 4xx errors by @mateo-berri in #38296
  • chore(ci): promote internal staging to main by @yuneng-berri in #38293

New Contributors

Full Changelog: v1.99.0-rc.1...v1.100.0-dev.1