github BerriAI/litellm v1.93.0-rc.1

latest release: v1.92.0
pre-release8 hours ago

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.93.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.93.0-rc.1/cosign.pub \
  ghcr.io/berriai/litellm:v1.93.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

  • feat(mcp): add entra_obo profile to the token_exchange (OBO) arm by @tin-berri in #31983
  • chore(lint): zero out crash-class pyright rules and ban new type: ignore comments by @mateo-berri in #32152
  • fix(headroom guardrail): log real token/compression stats instead of "allow" by @krrish-berri-2 in #32158
  • fix(anthropic_messages): forward provider response headers on streaming /v1/messages responses by @mateo-berri in #32160
  • fix(bedrock): emit SSE error event when invoke Messages stream ends without message_stop by @mateo-berri in #32159
  • test(e2e): migrate access-control and inference-endpoint regression tests by @mubashir1osmani in #32016
  • test(e2e): close coverage gaps across chat/responses, provider features, batches, prometheus, and langfuse eviction by @mubashir1osmani in #32165
  • chore: add latest model rule to CLAUDE.md by @mateo-berri in #32164
  • ci: gate CircleCI jobs on changed paths by @ryan-crabbe-berri in #32080
  • fix(e2e): register batch + rust OCR deployments via /model/new by @mubashir1osmani in #32166
  • fix: merge websearch tool params by @krrish-berri-2 in #32162
  • test: de-flake langfuse callbacks-in-db e2e test by @yuneng-berri in #32167
  • feat(router): add separate ITPM/OTPM deployment rate limits by @Sameerlite in #31952
  • fix(streaming): surface in-body error payloads on OpenAI-compatible streams by @yassin-berriai in #32237
  • fix(ui): reflect persisted "Store Prompts in Spend Logs" toggle on load by @devin-ai-integration[bot] in #32145
  • feat(ui): add cost optimization feedback banner to models page by @krrish-berri-2 in #32174
  • fix(spend): filter /global/spend/report by team_id when group_by=team by @yuneng-berri in #32170
  • fix(guardrails): send only new messages since last assistant turn to CrowdStrike AIDR by @ryan-crabbe-berri in #31974
  • feat(helm): support user-defined volumes and volumeMounts in microservices chart by @yassin-berriai in #32233
  • fix(proxy): resolve os.environ/ refs for all AWS auth params in DB-sourced models by @yucheng-berri in #32256
  • fix(main): forward verbosity param to chat completion providers by @mateo-berri in #32254
  • feat(ui): flag experimental dashboard pages on the draft deprecation list by @ryan-crabbe-berri in #32132
  • fix(proxy): stop CacheCodec dropping null fields on cache round-trip by @ryan-crabbe-berri in #32207
  • feat(complexity_router): add custom_technical_keywords config by @mateo-berri in #32262
  • fix(security): hash Bearer-prefixed API keys in spend logs by @devin-ai-integration[bot] in #31799
  • test(e2e): probe the full spend read surface including schema-hidden routes by @mubashir1osmani in #32267
  • fix(azure): build responses input_items url with path before query string by @mateo-berri in #32270
  • fix(responses_id_security): decrypt response ids for input_items follow-ups by @mateo-berri in #32269
  • fix(responses): map upstream 4xx on cancel to client error instead of 500 by @mateo-berri in #32271
  • fix(docker): bump wolfi-base digest for glibc 2.43-r10 by @yuneng-berri in #32277
  • fix(mcp): stamp oauth2_flow=authorization_code when persisting a DCR client registration by @tin-berri in #32283
  • fix(logging): classify allm_passthrough_route as async to prevent duplicate success callbacks by @yucheng-berri in #32265
  • fix(mcp): forward short OAuth state upstream, keep session in a cookie by @tin-berri in #32146
  • fix(bedrock): honor AWS auth params in realtime handler by @mateo-berri in #32275
  • feat(pricing): add azure data-zone and long-context pricing for gpt-5.4/5.5 by @devin-ai-integration[bot] in #32279
  • fix(model_armor): scan MCP tool calls for pre_mcp_call / during_mcp_call modes by @yucheng-berri in #32296
  • feat(jwt): fall back to DB team memberships when JWT has no team claims by @mateo-berri in #31356
  • fix(responses-bridge): custom tool round-trip and allowlist preservation for Codex CLI by @mateo-berri in #32258
  • feat(mcp): persist oauth2_flow explicitly on create instead of inferring it at read time by @tin-berri in #32288
  • fix(dynamic_rate_limiter): make test_priority_reservation deterministic across minute rollover by @mateo-berri in #32299
  • feat(vertex_ai): add Google Cloud Speech-to-Text Chirp 3 transcription support by @mateo-berri in #32274
  • feat(mcp): startup backfill stamping oauth2_flow on legacy null rows by @tin-berri in #32290
  • docs(github): note greptile runs automatically and require commit hashes in proof of fix by @mateo-berri in #32303
  • test(e2e): add management suite covering key/team/user/org lifecycle and route permissions by @mubashir1osmani in #32300
  • fix(streaming): stamp completion_start_time on first chunk for /v1/messages and /v1/responses by @yucheng-berri in #32284
  • fix(mcp_semantic_filter): keep tool names whole in filter response header by @tin-berri in #32282
  • fix(batches): price anthropic passthrough message batches correctly in batch cost job by @mateo-berri in #32307
  • fix(proxy): trigger gateway fallbacks on local rate limit errors by @devin-ai-integration[bot] in #31788
  • fix(responses): surface upstream error status on get instead of 500 by @mateo-berri in #32287
  • fix(caching): pass only metadata to valkey semantic async embedding by @shivamrawat1 in #32295
  • refactor(helm): move litellm-helm chart to helm/ and drop deploy folder by @yassin-berriai in #32234
  • feat(cache): back the Redis URL and Database Index UI fields end-to-end by @yuneng-berri in #32075
  • fix(proxy): wire general_settings SSRF allowlist to litellm globals by @Sameerlite in #32243
  • fix(mcp): alias/display-name tool routing, REST filters, BYOK auth by @Sameerlite in #32320
  • fix(gateway): keep the Prometheus /metrics Mount in the gateway route trim by @yassin-berriai in #32317
  • fix(mcp): defer proxy import so completion(tools=...) works without proxy extras by @yassin-berriai in #32339
  • fix(proxy): recover Prisma DB reconnect loop when client is disconnected by @yassin-berriai in #32323
  • fix(responses): stop scheduling sync success_handler concurrently with async_success_handler by @yassin-berriai in #32239
  • feat(otel): stamp gen_ai.response.time_to_first_chunk on streaming LLM spans by @yassin-berriai in #32236
  • feat(terraform): vendor terraform-provider-litellm as source of truth with endpoint drift CI by @yassin-berriai in #32241
  • docs(claude): note UI dev server command in run guidance by @ryan-crabbe-berri in #32344
  • fix(mcp): apply semantic filter to expanded litellm_proxy tools and show filtered-out count by @tin-berri in #32285
  • feat(budget): throttle keys after spend limit instead of revoking access by @yassin-berriai in #31300
  • fix(spend): bound the logs-tab pagination count to stop full-window scans by @yassin-berriai in #31825
  • refactor(ui): switch shadcn primitives from Radix to Base UI by @ryan-crabbe-berri in #32124
  • feat(mcp)!: oauth2_flow read verbatim from DB rows and required in config; inference reduced to the request-time backstop by @tin-berri in #32292
  • fix(bedrock): preserve stream param and decode SSE for bedrock mantle streaming by @mateo-berri in #32141
  • chore: bump litellm-enterprise 0.1.47 -> 0.1.48, litellm 1.92.0 -> 1.93.0 by @yuneng-berri in #32349
  • fix(main): stop per-request custom pricing from clobbering shared model_cost pricing by @mateo-berri in #32163
  • fix(mcp): stop 'Team doesn't exist' warnings for UI dashboard sessions by @tin-berri in #32348
  • ci(codspeed): re-enable benchmarks on litellm_internal_staging by @yassin-berriai in #32340
  • feat(MCP/UI): add OAuth flow selector on the MCP edit page by @tin-berri in #32298
  • test(ui): characterize DataTable behavior before shadcn reskin by @ryan-crabbe-berri in #32208
  • test(e2e): add coverage registry and collector by @yuneng-berri in #32304
  • fix(vertex_ai): build full request path when custom api_base has no path by @mateo-berri in #32367
  • docs(CLAUDE.md): warn that harness-injected PR template copies strip HTML comments by @mateo-berri in #32373
  • fix(vertex_ai): return create_vertex_url result directly for openai-path partner models with custom api_base by @mateo-berri in #32380
  • feat(mcp): support oauth2_token_exchange auth type via REST API and dashboard by @tin-berri in #31772
  • test(realtime): assert guardrail block on backend wire traffic instead of model refusal wording by @mateo-berri in #32388
  • fix(bedrock): stop stale SigV4 headers clobbering fresh signature on strip-and-retry re-sign by @mateo-berri in #32371
  • fix(mcp): apply outbound concurrency limit to OBO tool calls by @tin-berri in #32071
  • test(ui): pin token-exchange field visibility to the oauth2_token_exchange auth type by @tin-berri in #32385
  • feat(mcp): let users select the entra_obo token_exchange profile in the UI and API by @tin-berri in #32144
  • chore(ci): promote internal staging to main by @yuneng-berri in #32400
  • fix(ui): scope key models dropdown options to the key's team by @mubashir1osmani in #32382
  • fix(model_prices): add gpt-realtime-2.1 models with regional processing uplift by @mateo-berri in #32387
  • ci(server-root-path): retry npm/playwright installs and disable matrix fail-fast by @mateo-berri in #32406
  • fix(passthrough): stop request params from clobbering merged target query params by @mateo-berri in #32404
  • test: add e2e coverage module metrics by @ishaan-berri in #32403
  • fix(responses): make response-id encoding idempotent to prevent MCP g… by @thibault-linktree in #32034
  • fix(utils): resolve bedrock regional inference profiles to regional pricing in get_model_info (LIT-4056) by @mateo-berri in #32389
  • fix(passthrough): stream non-sse passthrough responses instead of buffering in memory by @mateo-berri in #32386
  • fix(ui/mcp): do not reset in-flight OAuth resume when create modal mounts closed by @tin-berri in #32416
  • fix(mcp): accept integer progressToken in host progress capture by @tin-berri in #32402
  • fix(proxy): resolve os.environ/ refs universally in DB-sourced models by @yucheng-berri in #32405
  • ci: ratchet LIT003 budget down to current count to remove suppression slack by @mateo-berri in #32423
  • ci(llm_responses_api_testing): bound live re-record calls and rerun timeout-only failures to stop 15m no-output kills by @mateo-berri in #32420
  • test(responses): bound azure shell tool live call at 90s and skip on provider timeout by @mateo-berri in #32424
  • ci: skip unit test workflows when only ui or markdown files change by @mateo-berri in #32422
  • feat(ui): expose MCP max_concurrent_requests in server create and edit forms by @tin-berri in #32397
  • feat(rate_limit): support per-tag rpm limiting on a single key by @yassin-berriai in #31502
  • fix(mcp): drop the cached per-user OAuth token when the credential row changes by @tin-berri in #32302
  • perf(auth): negative-cache missing user/key lookups on the request hot path by @yassin-berriai in #32368
  • test(vertex_ai): bump local_testing vertex tests from gemini-2.5-flash to gemini-3.5-flash by @mateo-berri in #32439
  • test(realtime): record and replay websocket traffic in redis vcr cassettes by @mateo-berri in #32390
  • fix(mcp): log MCP tool calls returning isError=true as failures by @yassin-berriai in #32238
  • feat(ui): sort session sidebar calls by duration or start time by @thibault-linktree in #32432
  • test(responses): replace perma-skip azure shell e2e with offline coverage by @mateo-berri in #32444
  • fix(proxy): harden secret name validation for external secret manager integrations by @yucheng-berri in #32092
  • test: emit e2e coverage metrics for loki by @ishaan-berri in #32513
  • feat(proxy): make Microsoft Graph endpoint configurable for GCC High by @devin-ai-integration[bot] in #32517
  • fix(mcp): pair token-endpoint client_secret with the same source as client_id by @tin-berri in #32507
  • ci: run unit test workflows on ui-only changes (revert #32422) by @yuneng-berri in #32530
  • fix(health): bridge litellm_metadata into logging object in _batch_health_check by @yucheng-berri in #32520
  • feat(ui): sort session sidebar calls by duration or start time by @yuneng-berri in #32502
  • fix(otel): restore error.* span attributes on v2 error spans (LIT-4179) by @yucheng-berri in #32524
  • refactor(ui): reskin shared DataTable from tremor onto shadcn table primitives by @ryan-crabbe-berri in #32209
  • fix(bedrock): preserve cache_control ttl on message-level cache points by @devin-ai-integration[bot] in #32538
  • feat(ui): add eslint rules for nested ternaries, large inline object args, and long condition chains by @ryan-crabbe-berri in #32415
  • fix(guardrails): forward grayswan scan id header by @yucheng-berri in #32544
  • feat(ui): add enterprise license expiry banner to admin dashboard by @yuneng-berri in #32540
  • refactor(ui): consolidate table cells onto a shared table_cells kit by @ryan-crabbe-berri in #32393
  • feat(mcp): add true_passthrough and oauth_delegate auth modes by @tin-berri in #31989
  • fix(vertex): forward realtime health check params by @mateo-berri in #32550
  • feat(pricing): add xai/grok-4.5 model pricing and metadata by @devin-ai-integration[bot] in #32549
  • fix(rerank): log optional_rerank_params at debug to stop leaking request content by @devin-ai-integration[bot] in #32533
  • refactor(ui): point invitation links at the dedicated /onboarding route by @ryan-crabbe-berri in #30857
  • fix(bedrock): honor cache_control ttl on message-level cachePoint blocks by @mateo-berri in #32551
  • fix(guardrails): walk Responses-API text taxonomy in shared content helpers by @yucheng-berri in #32542
  • refactor(otel): move litellm error detail keys under the litellm.* namespace by @yassin-berriai in #32591
  • fix(proxy): surface OAuth error params in SSO callback by @yassin-berriai in #32433
  • test(benchmarks): run shared logging executor inline to make CodSpeed measurements deterministic by @yassin-berriai in #32435
  • fix(deps): constrain soupsieve>=2.8.4 to patch two high-severity CVEs by @devin-ai-integration[bot] in #32643
  • feat(ui): add session id filter to request logs by @thibault-linktree in #32568
  • feat(ui): add session id filter to request logs by @tin-berri in #32647
  • chore: bump litellm-enterprise 0.1.48 -> 0.1.49 by @yuneng-berri in #32634
  • fix(ui): prevent reasoning block from expanding chat playground layout by @devin-ai-integration[bot] in #32485
  • docs(enterprise): fix enterprise doc link in Readme.md by @hasan4791 in #31815
  • feat(models): add GPT-5.6 (sol/terra/luna) pricing and metadata by @devin-ai-integration[bot] in #32659
  • chore(ci): promote internal staging to main by @yuneng-berri in #32663
  • fix(ui): forward refs through ui primitives and fail tests on swallowed refs by @ryan-crabbe-berri in #32401
  • refactor(ui): consolidate invitation flow into the dashboard layout by @ryan-crabbe-berri in #32576
  • fix(guardrails/bedrock): honor disable_exception_on_block by raising ModifyResponseException by @yucheng-berri in #32289
  • test(e2e): make dynamic model provisioning robust on split deployments by @mubashir1osmani in #32670
  • fix(ui): rename Virtual Keys 'Key Hash' filter label to 'Key ID' by @ryan-crabbe-berri in #32672
  • fix(proxy): capture logging_obj before post_call_failure_hook pops it in ModifyResponseException streaming path by @yucheng-berri in #32665
  • ci: add OSS daily branch workflow by @ishaan-berri in #32514
  • test: litellm fix failing tests by @mubashir1osmani in #32577
  • fix(bedrock-invoke): retain clear_tool_uses_20250919 context_management edits and emit context-management-2025-06-27 beta (LIT-3393) by @mateo-berri in #32658
  • fix(tests): stop DATABASE_URL env pollution from read-replica tests breaking DB e2e tests by @mateo-berri in #32653
  • feat(mcp/ui): expose true_passthrough and oauth_delegate auth types with a no-auth warning by @tin-berri in #32414
  • refactor(ui): colocate 11 route segments' components into _components/ by @ryan-crabbe-berri in #32704
  • fix(mcp): invalidate a browser-authorized upstream token when a mint-relevant field changes by @tin-berri in #32652
  • feat(ui): shadcn charts foundation with tremor-compatible wrappers by @ryan-crabbe-berri in #32668
  • fix(proxy): resolve team org from team_id so org admins can update team budgets by @yuneng-berri in #32560
  • test(e2e): replace deprecated batch/realtime models (gpt-5.4-mini, grok-4-1-fast) by @mubashir1osmani in #32698
  • chore(ci): promote internal staging to main by @yuneng-berri in #32709
  • test(e2e): lower realtime server-VAD threshold to 0.5 by @mubashir1osmani in #32710
  • fix(guardrails): mask credentials embedded in guardrail_response before persist (LIT-4314) by @yucheng-berri in #32687
  • feat: add Meta Model API provider and muse-spark-1.1 (day-0) by @devin-ai-integration[bot] in #32701
  • feat(models): add Azure GPT-5.6 (sol/terra/luna) pricing and metadata by @devin-ai-integration[bot] in #32678
  • ci: skip backend unit tests on ui-only PRs without stranding required checks by @devin-ai-integration[bot] in #32532
  • refactor(ui): colocate cost-tracking and prompts components into _components/ by @ryan-crabbe-berri in #32716
  • refactor(ui): colocate tag-management and vector-stores views, keeping the shared selectors by @ryan-crabbe-berri in #32719
  • refactor(ui): colocate the policies view, keeping PolicySelector shared by @ryan-crabbe-berri in #32720
  • test: add /v1/messages to supported_endpoints schema enum by @tin-berri in #32739
  • fix(spend-logs): honor store_prompts_in_spend_logs for guardrail_information (LIT-4314) by @yucheng-berri in #32688
  • fix(spend): sum multi-round session cost in logs UI by @devin-ai-integration[bot] in #32796
  • refactor(ui): colocate agents and guardrails views, keeping shared selectors and types by @ryan-crabbe-berri in #32728
  • fix(mcp): stop persisting the DCR client onto true_passthrough and oauth_delegate server rows by @tin-berri in #32735
  • fix(e2e): batch credentials wiring and compose harness for live proxy suite by @mubashir1osmani in #32744
  • feat(mcp): add dcr_bridge column and plumbing for client-forwarded auth modes by @tin-berri in #32745
  • chore(ui): make knip trustworthy and enforce dead-code in CI by @ryan-crabbe-berri in #32727
  • build(pre-commit): regenerate eslint-metrics.json instead of failing on drift by @ryan-crabbe-berri in #32717
  • feat(mcp): relay upstream 401 on client-forwarded pass-through tool calls by @tin-berri in #32556
  • feat(ui): add shared composable DataTable component by @yuneng-berri in #32680
  • fix(mcp): fail closed and surface semantic filter context window errors by @tin-berri in #32715
  • refactor(ui): colocate the skills view, keeping the AIHub-shared skill components by @ryan-crabbe-berri in #32803
  • feat(mcp): dcr_bridge authorize and token relay redirect handling with mandatory S256 by @tin-berri in #32747
  • ci(ui): move frontend lint into its own "UI Lint" workflow by @ryan-crabbe-berri in #32810
  • feat(mcp): dcr_bridge discovery facade and register relay by @tin-berri in #32753
  • feat(mcp): add sealed envelope module for dcr_bridge client-held credentials by @tin-berri in #32748
  • fix(bedrock): keep mid-conversation system messages in place for Claude Invoke by @mateo-berri in #32578
  • fix(proxy): add coordination_redis routes to component allowlist by @yucheng-berri in #32823
  • docs: point OSS contributors at the daily OSS branch by @yuneng-berri in #32830
  • fix(proxy): build redis usage cache from REDIS_* env when cache backend is not Redis by @yassin-berriai in #32635
  • refactor(ui): full-height sidebar shell with content-scoped top bar by @yuneng-berri in #32793
  • feat(otel): emit the gen_ai.client.operation.exception event on failed LLM calls by @yassin-berriai in #32655
  • feat(proxy): configure the coordination redis independently of the response cache by @yassin-berriai in #32661
  • feat(deploy): make coordination redis a first-class chart and terraform surface by @yassin-berriai in #32662
  • feat(mcp): add dcr_bridge envelope consumer helpers by @tin-berri in #32794
  • fix(proxy): match multi-mode guardrail_mode without false-COMPLIANT by @yucheng-berri in #32832
  • fix(mcp): merge credentials within the client-forwarded class on an auth-type switch by @tin-berri in #32815
  • ci: authorize the expression package (MIT) in liccheck.ini by @tin-berri in #32847
  • fix(redis): only use SSLConnection when ssl is truthy in connection pool kwargs by @yucheng-berri in #32825
  • refactor(ui): convert caching page charts to shadcn/recharts by @ryan-crabbe-berri in #32721
  • fix: strip trailing slash from --base-url in lite CLI by @krrish-berri-2 in #32845
  • feat(router): add LLM-based classifier option to complexity router by @krrish-berri-2 in #32169
  • fix(bedrock): add jp.anthropic.claude-opus-4-8 to model cost map by @mateo-berri in #32840
  • fix(responses): preserve reasoning_tokens through chat->responses usage translation by @mateo-berri in #32837
  • fix(bedrock): gate in-place system role messages on model support for Claude Invoke by @mateo-berri in #32831
  • fix(responses-api): raise APIError on in-stream error events; widen ErrorEventError.param to accept dict by @mateo-berri in #32835
  • fix(prometheus): skip budget metric DB/cache lookups when gauges are NoOpMetric by @mateo-berri in #32834
  • fix(anthropic): strip @Version suffix in _model_map_lookup_candidates so @default Vertex AI models resolve to adaptive thinking by @mateo-berri in #32833
  • fix(datadog): split log batches proactively under intake payload limits by @yucheng-berri in #32860
  • fix(anthropic): translate adaptive thinking/effort to pre-4.6 model support by @mateo-berri in #32867
  • test(models): assert capability fields on regional Azure gpt-5.6 entries by @mateo-berri in #32875
  • fix(bedrock): flag mapped Claude 4.8+ entries with supports_mid_conversation_system by @mateo-berri in #32882
  • fix(mcp): rework the dashboard credential-field lifecycle so the OAuth app is upstream-scoped by @tin-berri in #32752
  • feat(ui): root the gateway breadcrumb in the AI Gateway selector by @yuneng-berri in #32886
  • feat(ui): dcr_bridge toggle for client-forwarded MCP auth modes by @tin-berri in #32804
  • feat(ui): add filter drawer, column visibility, and search to the shared DataTable by @yuneng-berri in #32856
  • feat(ui): typed openapi-fetch foundation (fetchClient) + first typed caller (useCustomers) by @ryan-crabbe-berri in #29884
  • test(e2e): cover Langfuse logging.yaml P0 logs_spend cells by @mubashir1osmani in #32857
  • refactor(ui): use TanStack Pacer debounce for the team keys search by @yuneng-berri in #32919
  • fix(mcp): strip scheme default port from get_request_base_url netloc by @tin-berri in #32921
  • fix(mcp): re-register DCR client when proxy origin no longer matches its registered redirect_uri by @tin-berri in #32527
  • refactor(fallback-generalizations): split rules into routing and provider-neutral capability kinds by @mateo-berri in #32873
  • test(e2e): drop vertex from pipecat tool smoke and remove key models dropdown suite by @mubashir1osmani in #32925
  • ci: gate tests/e2e on zero basedpyright errors in pre-commit and lint CI by @mateo-berri in #32918
  • fix(rate-limit-v3): populate x-ratelimit-* remaining/limit values in standard_logging_object for streaming by @yucheng-berri in #32711
  • test: remove live OpenAI fine-tuning job-creation test blocked by platform wind-down by @mateo-berri in #32933
  • feat(team): add RESTful PATCH /team/{team_id} with JSON merge patch semantics by @yuneng-berri in #32883
  • chore(ui): remove eslint-metrics.json lint-count snapshot by @yuneng-berri in #32930
  • feat: add lite auth print-token for Claude Code apiKeyHelper support by @krrish-berri-2 in #32846
  • refactor(ui): convert activity metrics charts to shadcn/recharts by @ryan-crabbe-berri in #32726
  • feat(ui): extend topnav border across the sidebar header by @yuneng-berri in #32920
  • fix(anthropic): thread real provider through capability probes instead of pinning anthropic by @mateo-berri in #32874
  • feat(auto_router): keyword tier overrides and semantic keyword matching for the complexity router by @mateo-berri in #32859
  • feat(auto_router): keyword tier overrides and semantic keyword matching for the complexity router by @akapur99 in #32829
  • feat(ui): add redesigned sidebar account menu by @yuneng-berri in #32931
  • fix(guardrails): filter Add-Guardrail mode dropdown per provider by @yucheng-berri in #32712
  • feat(complexity_router): log the cause of each routing decision by @akapur99 in #32943
  • feat(mcp): admit dcr_bridge oauth_delegate clients via a single envelope bearer by @tin-berri in #32824
  • refactor(ui): convert user agent and per-user usage charts to shadcn/recharts by @ryan-crabbe-berri in #32725
  • docs(anthropic): clarify the Opus 4.5 branch in adaptive-effort translation by @akapur99 in #32876
  • fix(proxy): enforce budget and cost tracking for Dashscope tiered pricing by @shivamrawat1 in #32942
  • refactor(ui): extract a shared CopyButton and fix the sidebar copy confirmation by @yuneng-berri in #32945
  • refactor(ui): convert entity usage and usage page charts to shadcn/recharts by @ryan-crabbe-berri in #32729
  • feat(guardrails): add pre_mcp_call support to Content Filter by @yucheng-berri in #32936
  • refactor(e2e): bucket rate limits, budgets, and spend tracking under quota_management by @mateo-berri in #32928
  • chore: bump litellm-proxy-extras 0.4.75 -> 0.4.76 by @yuneng-berri in #32957
  • feat(proxy): add expires filter to GET /key/list by @ryan-crabbe-berri in #32953
  • refactor(ui): colocate the usage view, keeping the shared usage components by @ryan-crabbe-berri in #32952
  • chore(ui): rebuild committed admin dashboard bundle for rc release by @yuneng-berri in #32960
  • refactor(ui): convert projects page chart to shadcn/recharts by @ryan-crabbe-berri in #32722
  • chore(ci): promote internal staging to main by @mateo-berri in #32884

Full Changelog: v1.92.0-rc.1...v1.93.0-rc.1

Don't miss a new litellm release

NewReleases is sending notifications on new releases.