v1.94.0-dev.3
Pre-release
Pre-release
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.94.0-dev.3Verify 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.94.0-dev.3/cosign.pub \
ghcr.io/berriai/litellm:v1.94.0-dev.3Expected 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(ui): stop sending the complexity-router pseudo-model to /health/test_connection by @krrish-berri-2 in #33498
- feat(cli): add lite up/down to ambiently route Claude Code through the proxy by @krrish-berri-2 in #33231
- feat(complexity_router): enable session_affinity by default by @devin-ai-integration[bot] in #33500
- fix(anthropic): stop 500 on combined thinking+signature streaming chunk by @devin-ai-integration[bot] in #33505
- feat(autoroute): prompt for semantic keywords per tier in configure wizard by @devin-ai-integration[bot] in #33508
- fix(cli/anthropic): unblock lite autoroute proxy deps, adaptive thinking, and thinking+signature streaming by @devin-ai-integration[bot] in #33507
- test(ocr): use mistral-document-ai-2512 in azure_ai OCR tests by @mateo-berri in #33489
- fix(guardrails): show YAML-defined guardrails in the Guardrail Monitor by @yuneng-berri in #32853
- refactor(ui): migrate policies, deleted keys, deleted teams, budgets, and search tools tables onto shared DataTable by @yuneng-berri in #33357
- refactor(ui): migrate vector stores, prompts, and skills tables onto shared DataTable by @yuneng-berri in #33343
- test(e2e): datadog log delivery for successful chat, messages, and responses (LIT-4447) by @yucheng-berri in #33415
- fix(cli): make CLI output ASCII-only so it doesn't crash legacy Windows consoles by @devin-ai-integration[bot] in #33465
- fix: remove dead user-cache lookup with None key in spend-update path by @yassin-berriai in #33555
- feat(helm): add per-component PodDisruptionBudget and topologySpreadConstraints to componentized chart by @yassin-berriai in #33430
- fix(e2e/claude_code): unblock stage collection, align proxy env names, register compat models by @mubashir1osmani in #33433
- fix(mcp): index authed request-time tools missing from the semantic filter startup index by @tin-berri in #33318
- fix(streaming): use provider-reported usage cost for OpenRouter streams by @mateo-berri in #32255
- feat(mcp): issuer-anchored OAuth discovery (RFC 8414 §3.3) to close the authorization-server mix-up by @tin-berri in #33450
- feat(logging): add user and team level spend and budget to StandardLoggingPayload metadata by @yucheng-berri in #33459
- fix(router): cast model_info cost values to float in _set_model_group_info by @yassin-berriai in #33556
- chore(e2e): establish litellm_e2e_staging integration line by @mubashir1osmani in #33502
- fix(ui): navigate to /ui/login/ with trailing slash via hard navigation by @ryan-crabbe-berri in #33561
- feat(logging): add structured budget fields to budget rejection failure logs by @yucheng-berri in #33460
- fix(streaming): surface upstream connection resets instead of empty 200 streams by @mateo-berri in #33222
- fix(proxy_cli): reap orphaned prisma query-engine processes when a worker dies by @yassin-berriai in #33424
- test(reasoning_effort_grid): enable azure fable-5 and opus-4-8 grid cells by @mateo-berri in #33485
- build(deps): bump uvicorn lock to 0.51.0 so worker health-check and jitter flags take effect by @yassin-berriai in #33574
- fix(proxy): coerce default_internal_user_params.max_budget to float on config load by @yassin-berriai in #32434
- fix(router): honor per-request routing_strategy from key/team router_settings by @yassin-berriai in #33429
- fix(redis): honor ssl value instead of key presence when building async connection pool by @yassin-berriai in #32590
- fix(langfuse_otel): build per-request OTLP exporter from key and team dynamic Langfuse credentials by @yassin-berriai in #32437
- ci: run zizmor and proxy-db unit tests on PRs targeting litellm_ branches by @mateo-berri in #33568
- fix(router): apply team/key enable_tag_filtering to tag routing by @yassin-berriai in #33436
- feat(proxy): add disable_auto_add_proxy_admin_to_teams flag by @ryan-crabbe-berri in #33563
- fix(proxy): stop stale auth cache re-publish to Redis so key updates propagate across replicas by @yassin-berriai in #33565
- feat(e2e): emit structured E2E_RESULT lines for package status history by @mubashir1osmani in #33578
- chore: bump litellm-enterprise 0.1.50 -> 0.1.51, litellm-proxy-extras 0.4.77 -> 0.4.78 by @yuneng-berri in #33571
- fix(docker): restore litellm-proxy-extras source dir in runtime images by @yuneng-berri in #33592
- feat(ui): require embedding model for semantic auto router by @devin-ai-integration[bot] in #33313
- feat(scim): ingest and round-trip SCIM entitlements and roles user attributes by @tin-berri in #33587
- refactor(ui): migrate 5 simple tables onto shared DataTable by @yuneng-berri in #33548
- fix(model_armor): restore reference attachments via skip_unscannable_attachments and remove the attachment count cap by @devin-ai-integration[bot] in #33554
- fix(mcp): keep the MCP reference intact when the semantic filter narrows tools by @tin-berri in #33584
- fix(sso): stop enforcing UI session budget on CLI login tokens by @mubashir1osmani in #33312
- test: e2e staging leftovers by @mubashir1osmani in #33613
- test(e2e/claude_code): add GPT-5.6 Sol/Terra/Luna columns for OpenAI, Azure OpenAI, and Bedrock Mantle by @mateo-berri in #33474
- test(e2e): otel streaming spans record a real ttft below span duration by @yucheng-berri in #33588
- fix(mcp): make the preemptive-401 OAuth challenge decision mode-aware by @tin-berri in #33586
- fix(ui): show all teams in policy attachment form for admins by @ryan-crabbe-berri in #33628
- refactor(ui): migrate AI Hub, public hub, and MCP Toolsets tables onto shared DataTable by @yuneng-berri in #33629
- test(e2e): datadog log delivery for streamed routes, read back from the real datadog api by @yucheng-berri in #33566
- chore(ci): promote internal staging to main by @yuneng-berri in #33640
Full Changelog: v1.94.0-dev.2...v1.94.0-dev.3