github BerriAI/litellm v1.107.0-dev.1

pre-releaseone hour 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.107.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.107.0-dev.1/cosign.pub \
  ghcr.io/berriai/litellm:v1.107.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(mcp): never forward the caller's LiteLLM key to MCP servers by @joshua-berri in #45401
  • refactor(types): replace Any with proven types in 3 files by @devin-ai-integration[bot] in #45565
  • test: wait on conditions instead of wall-clock in guardrail parallelism and scope-option tests by @devin-ai-integration[bot] in #45571
  • fix(responses): keep a flagged hosted deployment's prompt cache breakpoint on the chat bridge by @devin-ai-integration[bot] in #45500
  • fix(gemini): sync gemini deprecation dates with the changelog and deprecations page by @berriai-litellm-provider-info-sync[bot] in #45491
  • fix(model_prices): registry audit 2026-10-09, together qwen3.7-max price, azure kimi-k2.7-code retirement by @devin-ai-integration[bot] in #45595
  • test: move offline router, retry and latency tests from local_testing to tests/unit by @yuneng-berri in #45551
  • test: move offline logging, secret manager and provider tests from legacy dirs to tests/unit by @yuneng-berri in #45554
  • test: move offline proxy auth, hook, spend and pass-through tests to tests/unit by @yuneng-berri in #45568
  • fix(ui): title usage overview chart "Daily usage" and label the model table "Top models" by @krrish-berri-2 in #45604
  • feat(decisions): add hosted_vllm provider by @devin-ai-integration[bot] in #45501
  • test: move offline anthropic prompt caching tests to tests/unit by @yuneng-berri in #45616
  • fix(bedrock): add the bare Pegasus 1.5 row and take GPT-5.x context windows from the model cards by @berriai-litellm-provider-info-sync[bot] in #45621
  • fix(liteadmin): detach keys from teams and default to Sonnet 5.5 by @tin-berri in #45625
  • chore: ignore .mypy_cache by @nate-berri in #45628
  • test: fix stale and flaky tests across CircleCI, GHA and Buildkite by @yuneng-berri in #45530
  • feat(ui): show the public JWKS for LiteLLM-signed Anthropic credentials by @devin-ai-integration[bot] in #45527
  • fix(proxy): classify /v1/messages pass-through streams as Anthropic on any host by @devin-ai-integration[bot] in #45602
  • feat(azure): add azure_ai/Microsoft-Decision-1 by @berriai-litellm-provider-info-sync[bot] in #45639
  • ci: run every build_and_test job in every CircleCI pipeline by @devin-ai-integration[bot] in #43152
  • fix(ui): show team alias in key edit Team dropdown and allow clearing it by @devin-ai-integration[bot] in #45629
  • chore(cost-map): add openai gpt-rosalind-discovery from the pricing page by @berriai-litellm-provider-info-sync[bot] in #45653
  • chore(greptile): load nested AGENTS.md files as review context scoped to their directories by @mateo-berri in #45636
  • feat(pricing): add github_copilot/claude-haiku-5.5 by @berriai-litellm-provider-info-sync[bot] in #45656
  • fix(cost-map): add 2026-10-22 deprecation_date to two together_ai rows by @berriai-litellm-provider-info-sync[bot] in #45657
  • fix(openrouter): bill Responses, Decisions and pass-through from OpenRouter usage.cost, always allow reasoning params by @devin-ai-integration[bot] in #45640
  • fix(rust): update serde_with for serialization advisory by @moe-berri in #45498
  • feat(teams): let proxy admins grant team admins the right to raise their team budget by @ryan-crabbe-berri in #45404
  • test(decisions): add hosted_vllm /v1/decisions and provider-400 translation cases by @devin-ai-integration[bot] in #45661
  • feat(bedrock): default Grok on Bedrock to native Chat Completions, mint unique tool call ids and drop stop by @devin-ai-integration[bot] in #45473
  • fix(bedrock): list the account's invocable models behind bedrock/* when check_provider_endpoint is on by @devin-ai-integration[bot] in #43981
  • feat(proxy): track failed requests by HTTP status and caller by @yassin-berriai in #45244
  • feat(ui): add Errors tab to Usage with failure rate, status and identity breakdowns by @yassin-berriai in #45396
  • refactor(cost-map): remove openrouter rows, part 1 of 5 by @devin-ai-integration[bot] in #45665
  • test(mcp): make scope-discovery server aliases digits-only by @devin-ai-integration[bot] in #45675
  • perf(proxy): keep stream end output and Redis cache debug strings off the event loop by @devin-ai-integration[bot] in #45252
  • fix(bedrock): drop stop sequences for GPT 5.6 and newer instead of forwarding them to a 400 by @devin-ai-integration[bot] in #45664
  • refactor(cost-map): remove openrouter rows, part 2 of 5 by @devin-ai-integration[bot] in #45666
  • feat(microsoft_365_copilot): add Microsoft 365 Copilot chat provider with OAuth token exchange by @yassin-berriai in #45158
  • feat(github_copilot): per-user GitHub OAuth connections for Copilot credentials by @yassin-berriai in #45241
  • chore(github_copilot): sync model catalog with Copilot's served models by @yassin-berriai in #45386
  • fix(cost): preserve zero hourly cache write rates in pricing tiers by @tin-berri in #45545
  • refactor(cost-map): remove openrouter rows, part 3 of 5 by @devin-ai-integration[bot] in #45667
  • refactor(cost-map): remove openrouter rows, part 4 of 5 by @devin-ai-integration[bot] in #45668
  • fix(proxy): sign RDS IAM tokens for the database's own region by @devin-ai-integration[bot] in #44782
  • fix(ui): show the Microsoft 365 Copilot logo instead of the Azure one by @yassin-berriai in #45687
  • feat(policy-engine): stream detect-only post_call pipeline steps live when buffering is off by @devin-ai-integration[bot] in #45516
  • refactor(cost-map): remove openrouter rows, part 5 of 5 by @devin-ai-integration[bot] in #45669
  • fix(model_prices): registry audit, perplexity agent api models and claude-sonnet-4-5 200k context by @devin-ai-integration[bot] in #45647
  • refactor(lens): connect LiteLLM to the independent Lens service by @moe-berri in #45529
  • feat(decisions): add Databricks ai_decide as a /v1/decisions provider and auto-router decider by @mateo-berri in #45200
  • refactor(rust): type the AWS connection params in auth-aws by @yujonglee-berri in #45610
  • refactor(rust): type the Vertex AI connection params in auth-gcp by @yujonglee-berri in #45641
  • refactor(rust): one LitellmParams type for a config and a caller by @yujonglee-berri in #45642
  • refactor(rust): give Messages configs typed litellm params by @yujonglee-berri in #45611
  • feat(rust): add the Vertex AI Anthropic Messages config by @yujonglee-berri in #45626
  • feat(rust): add the DeepSeek Anthropic Messages config by @yujonglee-berri in #45614
  • docs(agents): ban semicolons and colons in human-facing text by @mateo-berri in #45684
  • feat(azure_ai): support Microsoft-Decision-1 on the decisions API by @devin-ai-integration[bot] in #45673
  • fix(proxy): keep the mapped status on assistants and threads route errors by @devin-ai-integration[bot] in #44994
  • fix(ui): accept guest email addresses in member forms by @moyai-devin-berriai[bot] in #45688
  • fix(bedrock): keep tool_reference results as text on converse by @devin-ai-integration[bot] in #44590
  • fix(bedrock): keep GPT tool-result images beside the tool result by @shubhamjain0594 in #45579
  • fix(ui): resolve the provider dropdown key to the slug the backend declares by @Bytechoreographer in #43707
  • feat(ui): let admins find, call, and test decision models from the Admin UI by @moyai-devin-berriai[bot] in #45654
  • ci: finish the lint, unit and smoke check layout by @devin-ai-integration[bot] in #45706
  • fix(databricks): keep #/$defs refs in json_schema response_format by @mrinal-berri in #45659
  • fix(gemini): map OpenAI voice names to Gemini prebuilt TTS voices by @devin-ai-integration[bot] in #45303
  • fix(decisions)!: refuse safety_identifier on providers that cannot take it unless drop_params drops it by @devin-ai-integration[bot] in #44955
  • fix(python-bridge): preserve callback keyword deletions in native requests by @yujonglee-berri in #45692
  • fix(model_prices): drop unverified output price on Microsoft-Decision-1 and guard evaluation rows by @devin-ai-integration[bot] in #45717
  • fix: support OpenAI SDK 3 while retaining SDK 2 compatibility by @devin-ai-integration[bot] in #44927
  • feat(ui): build System One playground requests with a form by @devin-ai-integration[bot] in #45721
  • fix(realtime): only inject response.create when a transcript guardrail suppressed VAD auto-response by @RonP3 in #43791
  • fix(websearch_interception): drop stream_options when forcing stream=False and replay it on the final stream by @devin-ai-integration[bot] in #45433
  • fix(guardrails): avoid blocking the event loop during HiddenLayer JWT refresh by @Arjun-Aravind in #45437
  • feat(strands_decider): call a Strands Decider on an AgentCore runtime ARN by @devin-ai-integration[bot] in #45678
  • fix(proxy): let admins make per-model key/team rate limits a hard 429 instead of falling back by @shivamrawat1 in #45459
  • feat(ui): rename the Playground System One tab to Decisions and give the JSON editor VS Code light and dark themes by @devin-ai-integration[bot] in #45729
  • feat(ui): link the decision models banner to the supported providers docs and rename the System One playground to Decisions by @devin-ai-integration[bot] in #45732
  • fix(mcp): preserve caller bearer for guardrail evaluation by @joshua-berri in #45746
  • feat(azure): add azure_ai/Cohere-Embed-V5-Fast and azure_ai/Cohere-Embed-V5-Pro by @berriai-litellm-provider-info-sync[bot] in #45764
  • fix(proxy): let MCP server management bodies carry their OAuth token exchange settings by @devin-ai-integration[bot] in #45723
  • fix(spend): run /global/spend/refresh on the writer instead of the read replica by @yucheng-berri in #45699
  • fix(proxy): keep keys and projects on the same team by @devin-ai-integration[bot] in #44165
  • feat(guardrails): split logging_only_scope direction from input-failure policy by @yucheng-berri in #45709
  • test: move routing, caching and callback tests out of local_testing by @devin-ai-integration[bot] in #45761
  • test: move packaging and install checks off CircleCI build_and_test by @devin-ai-integration[bot] in #45757
  • fix(model-prices): correct Bedrock Titan and Nova 2 Lite prices, add Nova Premier, clear rescinded Together dates by @devin-ai-integration[bot] in #45793
  • chore: remove committed PR screenshots by @moe-berri in #45816
  • fix(ui): drop the decision models sublabel from the Add Model provider dropdown by @devin-ai-integration[bot] in #45755
  • perf(ci): isolate and shard integration suites by @yuneng-berri in #44146
  • fix(ui): load embedded Lens styles in the gateway by @moe-berri in #45829
  • fix(ui): expose both decisions playground endpoints by @devin-ai-integration[bot] in #45817
  • fix(proxy): bound spend-log cleanup delete transactions to the statement timeout by @devin-ai-integration[bot] in #43279
  • fix(proxy): exempt zero-spend MCP discovery routes from budget checks by @devin-ai-integration[bot] in #41276
  • fix: route OpenAI cyber policy errors to content policy fallbacks by @tin-berri in #45828
  • fix(proxy): keep the parsed key when the custom key header is absent by @devin-ai-integration[bot] in #44469
  • feat(proxy): require trace IDs per team on LLM, MCP and agent requests by @devin-ai-integration[bot] in #44933
  • fix(bedrock): price the regionless Kimi K2.5 and K2 Thinking rows from the us-east-1 Bedrock price map by @berriai-litellm-provider-info-sync[bot] in #45836
  • refactor(skills): import LiteLLM_SkillsTable from litellm.models by @nate-berri in #45737
  • refactor(types): move LitellmUserRoles and KeyManagementRoutes into litellm.types.proxy.auth.user_roles by @nate-berri in #45741
  • refactor(anthropic): move passthrough SSE stream assembly into litellm/llms by @nate-berri in #45744
  • refactor(types): import team and user table models from litellm.models by @nate-berri in #45740
  • refactor(llms): move typesafe passthrough logging handler out of proxy by @nate-berri in #45742
  • refactor(types): move CommonProxyErrors into litellm/types/proxy by @nate-berri in #45745
  • refactor(anthropic): move prompt cache observation lookup out of the proxy hook by @nate-berri in #45748
  • refactor(types): move slack alerting leaf types out of proxy/_types.py by @nate-berri in #45752
  • refactor(types): move PassThroughGuardrailSettings into the pass-through types module by @nate-berri in #45763
  • refactor: move stream_chunk_builder into streaming_chunk_builder_utils by @nate-berri in #45766
  • refactor(cost-calc): move cache token extractors out of proxy savings by @nate-berri in #45771
  • refactor(responses): move responses_api_bridge_check out of litellm.main by @nate-berri in #45772
  • refactor(types): import CustomLogger and CustomLLM under TYPE_CHECKING in adapter TypedDicts by @nate-berri in #45774
  • refactor(core): move path_utils from proxy common_utils to litellm_core_utils by @nate-berri in #45775
  • refactor(types): import litellm lazily in prometheus types helpers by @nate-berri in #45776
  • refactor(types): move complexity router request models next to their base config by @nate-berri in #45780
  • refactor(repositories): import proxy helpers inside the methods that use them by @nate-berri in #45781
  • refactor(responses): move ColdStorageHandler out of proxy into litellm_core_utils by @nate-berri in #45783
  • refactor(types): type UserAPIKeyAuth, its token view and hash_token in place by @nate-berri in #45799
  • refactor(types): annotate GenerateRequestBase containers and check_max_budget by @nate-berri in #45801
  • refactor(types): annotate user request metadata and check_user_info validators by @nate-berri in #45808
  • refactor(types): move is_jwt into litellm.types.proxy.auth.user_api_key_auth by @nate-berri in #45747
  • feat(usage): add top users by spend and user activity views by @yassin-berriai in #45310
  • fix(caching): give RedisClusterCache one async client per event loop by @yassin-berriai in #45784
  • fix(proxy): let configured pass-through endpoints outrank built-in provider prefix routes by @devin-ai-integration[bot] in #44133
  • fix(ui): show the team member budget on keys without their own budget by @devin-ai-integration[bot] in #43927
  • fix(proxy-extras): bound migration DDL lock waits with lock_timeout and retry by @yassin-berriai in #45389
  • fix(sdk): resolve litellm.proxy lazily on attribute access by @nate-berri in #45845
  • refactor(anthropic): move prompt cache pricing helper out of the proxy package by @nate-berri in #45753
  • fix(terraform): stop sending blocked on litellm_user updates by @marcusgreer in #45410
  • fix(ui): store SSO exchange token via storeLoginToken to keep Secure flag by @yassin-berriai in #45840
  • refactor(skills): move NewSkillRequest to litellm.models.skills by @nate-berri in #45768
  • feat(proxy): per-model team member budgets with router fallback by @devin-ai-integration[bot] in #43887
  • refactor(constants): move AUTH_OBJECTS_TARGET into litellm.constants by @nate-berri in #45779
  • refactor(types): annotate key request containers and drop_blank_team_id by @nate-berri in #45809
  • refactor(types): move GenerateRequestBase and LiteLLM_ObjectPermissionBase into litellm.types.proxy.management_endpoints.request_base by @nate-berri in #45802
  • perf(ci): use native timing splits with bounded integration concurrency by @yuneng-berri in #45837
  • refactor(anthropic): move raw SSE stream assembly helpers out of proxy guardrails by @nate-berri in #45749
  • feat(otel)!: let a team capture_message_content override the global setting for its OTel v2 destination by @devin-ai-integration[bot] in #44264
  • refactor(types): move key request models into litellm.types.proxy.management_endpoints.key_requests by @nate-berri in #45810
  • refactor(types): move user request models into litellm.types.proxy.management_endpoints.user_requests by @nate-berri in #45813
  • refactor(types): move MemberDeleteRequest into litellm.types.proxy.management_endpoints.team_endpoints by @nate-berri in #45814
  • feat(scaledown): add native text provider support by @soham96 in #44168
  • feat(models): register ScaleDown text pricing by @soham96 in #44167
  • refactor(types): move UserAPIKeyAuth, its token view and hash_token into litellm.types.proxy.auth.user_api_key_auth by @nate-berri in #45800
  • refactor(core_utils): move resource_ownership out of the proxy by @nate-berri in #45805
  • fix(proxy): describe rejected characters in key_alias validation error by @devin-ai-integration[bot] in #41412
  • docs(proxy): describe /v1/decisions and /v1/systemone in Swagger UI by @devin-ai-integration[bot] in #45838
  • feat(ui): replace Reset example with an Example preset dropdown and a Clear button on the Decisions tab by @devin-ai-integration[bot] in #45848
  • refactor(sdk): import UserAPIKeyAuth from litellm.types.proxy.auth by @nate-berri in #45806
  • feat(ui): label the System One yes / no question type noul and explain it on hover by @devin-ai-integration[bot] in #45841
  • test(decisions): bill the OpenAI-format openrouter case from provider-reported cost by @devin-ai-integration[bot] in #45853
  • fix(proxy): only pass the JSON-RPC method to MCP admission auth by @devin-ai-integration[bot] in #45844
  • feat(azure_storage): upload audit logs to Azure Storage via audit_log_callbacks by @devin-ai-integration[bot] in #43838
  • fix(mcp): keep one upstream MCP session per gateway session across tool calls by @devin-ai-integration[bot] in #42741
  • ci: gate undocumented POST routes in the proxy OpenAPI document by @devin-ai-integration[bot] in #45843
  • fix(azure): move gpt-realtime-translate deprecation_date to the Models API date by @berriai-litellm-provider-info-sync[bot] in #45849
  • fix(guardrails): guardrail Bedrock Converse stream text per content block by @dean-zavad in #45822
  • feat(sdk): add litellm.systemone and trim litellm.decisions to the OpenAI shape by @devin-ai-integration[bot] in #45846
  • fix(vertex_ai): parse Vertex timestamps as UTC so created_at is not shifted by the host timezone by @yucheng-berri in #45550
  • fix(ui): restore dashboard modal backdrops by @yuneng-berri in #45866
  • test(integration): streamed request bills the same SpendLogs row as the non-streamed request by @devin-ai-integration[bot] in #45730
  • fix(sagemaker): keep AWS credentials out of the sagemaker_chat request body by @devin-ai-integration[bot] in #45724
  • fix(proxy/auth): expand all-team-models sentinel for project model access checks by @devin-ai-integration[bot] in #43734
  • feat(guardrails): add decision model guardrail with Admin UI flow by @yucheng-berri in #45663
  • test(e2e): cover persisted pricing spend by @yuneng-berri in #41566
  • test: migrate local_testing SDK and provider tests out of build_and_test by @devin-ai-integration[bot] in #45760
  • fix(credentials): keep credential labels and edits consistent across UI, API, and replicas by @yuneng-berri in #45835
  • test(integration): move the openai cost tracking cases from cost_tracking_cases.json to CostTrackingTestCase literals by @devin-ai-integration[bot] in #45879
  • fix(langfuse): log Responses API token usage instead of zeros by @devin-ai-integration[bot] in #42212
  • fix(guardrails)!: scan or refuse attachments in the bedrock guardrail by @yucheng-berri in #43383
  • feat: forward-port dd user_email span tag and model hub description from internal staging by @devin-ai-integration[bot] in #42749
  • refactor(rust): share provider constants via llms-types and restructure AGENTS.md by @yujonglee-berri in #45850
  • feat(ui): add a Home page as the dashboard root with usage summary, recent launches, blog updates and a model leaderboard by @devin-ai-integration[bot] in #45858
  • test(headroom): pin that SDK-echoed null tool_calls never reach /v1/compress by @devin-ai-integration[bot] in #39667
  • fix(mcp): exclude gateway credentials from guardrail bearers by @joshua-berri in #45897
  • feat(decisions): accept decisions as a model mode alongside evaluation by @devin-ai-integration[bot] in #45474
  • feat(ui): load Home page What's new launches from /public/whats_new at runtime by @devin-ai-integration[bot] in #45912
  • feat(ui): streamline auto-router setup with deployed decision models by @joshua-berri in #45913
  • test: model the team membership lookup in MCP DCR admission fixtures and assert decisions call types per route by @devin-ai-integration[bot] in #45917
  • feat(ui): restyle the Decisions playground, form first with a read-only cURL tab by @devin-ai-integration[bot] in #45903
  • fix(databricks): call the ai_decide AI Function route for decisions and the auto-router by @devin-ai-integration[bot] in #45722
  • fix(ui): label the Decisions yes / no answer type instead of noul by @devin-ai-integration[bot] in #45931
  • test: migrate SDK and proxy-booting legacy CircleCI tests to their tiers by @devin-ai-integration[bot] in #45758
  • test(security): pin the What's new catalog local in the canary egress rig by @devin-ai-integration[bot] in #45925
  • test: migrate tests/llm_translation into unit, integration and e2e tiers by @devin-ai-integration[bot] in #45759
  • fix(ci): isolate integration workers and repair test fixtures by @devin-ai-integration[bot] in #45863
  • fix(home): serve the bundled whats_new.json by default so a build shows only its own launches by @devin-ai-integration[bot] in #45934
  • fix(azure): move azure_ai/kimi-k2.7-code deprecation_date to the Models API date by @berriai-litellm-provider-info-sync[bot] in #45945
  • test: migrate legacy unit dirs and unrun folders into tests/unit, tests/integration and tests/e2e by @devin-ai-integration[bot] in #45940
  • refactor(types): replace Any with proven types in 12 files by @devin-ai-integration[bot] in #45943
  • ci: run every CircleCI check from the integration workflow by @devin-ai-integration[bot] in #45938
  • test: migrate tests/proxy_behavior into integration and unit tiers by @devin-ai-integration[bot] in #45939
  • ci: trigger the gateway-dev deploy on every main push by @devin-ai-integration[bot] in #45958
  • test(migrations): assert lock-timeout retry and exhaustion instead of an unbounded wait by @devin-ai-integration[bot] in #45955
  • fix(bedrock_mantle): send max_completion_tokens for gpt-5.6 and gpt-6 chat completions by @devin-ai-integration[bot] in #43982
  • refactor(rust_bridge): route Python state reads through host modules by @yujonglee-berri in #45689
  • fix(bedrock): take the GLM 4.7 max output tokens from the Bedrock model cards by @berriai-litellm-provider-info-sync[bot] in #45976
  • test: remove pass-through and user_api_key_auth coverage scripts that no CI job runs by @devin-ai-integration[bot] in #45969
  • feat(rust): support MiniMax Messages API by @yujonglee-berri in #45896
  • fix(bedrock): take context, output limits and EOL dates from the Bedrock model cards by @berriai-litellm-provider-info-sync[bot] in #45980
  • feat(rust): support Tencent Messages API by @yujonglee-berri in #45899
  • feat(rust): add native OpenRouter Messages by @yujonglee-berri in #45910
  • feat(rust): add native Bedrock Claude Platform and Mantle Messages by @yujonglee-berri in #45908
  • test: migrate proxy security, schema migration and MCP legacy tests by @devin-ai-integration[bot] in #45937
  • test(mcp): attribute passthrough probe traffic to the caller instead of the whole peer log by @devin-ai-integration[bot] in #46020
  • fix(tests): retry owned_redis on a port already served in the target namespace by @devin-ai-integration[bot] in #46019
  • test(integration): give the ownership proxy its own DB pool headroom by @devin-ai-integration[bot] in #46025
  • test(integration): migrate before timed owned proxy launch and gate credential probe on every worker by @devin-ai-integration[bot] in #46030
  • ci: move redis-compat and MCP unit suites from CircleCI to GitHub Actions by @devin-ai-integration[bot] in #46026
  • test(integration): isolate every multi-worker integration suite by default by @devin-ai-integration[bot] in #46027
  • ci(integration): run integration shards on large machines and size workers per suite by @devin-ai-integration[bot] in #46034
  • test(integration): give chaos and timing tests a harness API and gate raw signals by @devin-ai-integration[bot] in #46031
  • test(integration): cut CircleCI proxy boot time with concurrent worker stacks and single-worker test proxies by @devin-ai-integration[bot] in #46037
  • test(integration): bill Decisions spend from captured provider responses on /v1/decisions and /v1/systemone by @devin-ai-integration[bot] in #45902
  • fix(managed_files): enforce input file ownership on batch and fine-tuning create by @mrinal-berri in #45855
  • feat(fireworks_ai): add Decisions support for accounts/fireworks/routers/rune on /v1/systemone and /v1/decisions by @devin-ai-integration[bot] in #46057
  • chore: drop Greptile from the PR template, AGENTS.md and CI by @devin-ai-integration[bot] in #46013
  • refactor(bedrock): rename is_claude_4_5_on_bedrock to supports_bedrock_prompt_cache_ttl by @devin-ai-integration[bot] in #46058
  • fix(model-prices): add OpenAI dated snapshots, fix Perplexity decider pricing, absorb Together Tev1 cache price removal by @devin-ai-integration[bot] in #45842
  • feat(model_prices): add meta/muse-wonder-1.0 by @devin-ai-integration[bot] in #46072
  • feat(vertex_ai): add semantic-ranker rerank pricing to the cost map by @devin-ai-integration[bot] in #46061
  • fix(gemini): do not inject temperature for Gemini 3+ models when omitted by @sukhdeepjohar in #45107
  • feat(decisions): support Clef-omni audio and video by @moyai-devin-berriai[bot] in #45811
  • test(e2e): rename load to perf and consolidate the opt-in into E2E_PERF_TESTS by @devin-ai-integration[bot] in #46077
  • fix(proxy): skip failure rows for expired Admin UI session keys on dashboard info routes by @jesus-berri in #45881
  • fix(mcp)!: preserve scopes during managed OAuth reauthorization by @joshua-berri in #45886
  • feat(decisions): bill decisions and systemone from _decisions cost map fields by @devin-ai-integration[bot] in #45904
  • fix(bedrock_mantle): map the OpenAI-shaped context overflow envelope too by @mayank-affirm in #41747
  • fix(ci): wait for SIGSTOP to take effect before handing back a suspended proxy process by @devin-ai-integration[bot] in #46088
  • feat(providers): add CoralBricks as a native provider by @devin-ai-integration[bot] in #44700
  • fix(anthropic): carry cache_control to prompt_cache_breakpoint on the /v1/messages to Responses bridge by @ryan-crabbe-berri in #46082
  • feat(cost): support provider/model-pattern keys in cost_discount_config by @devin-ai-integration[bot] in #43335
  • fix(proxy): refuse /fallback writes to a fallbacks list set in config.yaml by @yassin-berriai in #45860
  • docs: point the GCP one-click deploy at the terraform-google-litellm mirror by @nate-berri in #46089
  • fix(ui): gray out router settings and fallbacks that config.yaml owns by @yassin-berriai in #45861
  • fix(ui): lock config-owned model group aliases on the alias tab by @yassin-berriai in #45857
  • fix(ui): show the legacy evaluation mode as decisions in the Model Hub and guardrail picker by @devin-ai-integration[bot] in #46098
  • feat(sagemaker)!: inference components and OpenAI-compatible embeddings by @devin-ai-integration[bot] in #44985
  • fix(proxy): enforce the personal max_budget on proxy-admin JWTs by @devin-ai-integration[bot] in #43070
  • feat(zscaler_ai_guard): send the request user to AI Guard by @yucheng-berri in #46094
  • feat(otel): let a team or key excluded_services override the global setting for its OTel v2 destination by @mrinal-berri in #45880
  • fix(guardrails): honor decision model streaming buffering by @moyai-devin-berriai[bot] in #46086
  • fix(responses): fold bridged Responses output into one chat choice by @devin-ai-integration[bot] in #46099
  • fix(gemini): price tool-use prompt tokens as input by @jsvisa in #46021
  • feat(proxy): let personal keys inherit model access from the owner's current teams by @devin-ai-integration[bot] in #43692
  • fix(responses): number bridged chat tool calls 0, 1 and pin the remaining bridge shapes by @devin-ai-integration[bot] in #46109
  • fix(cost_calculator): apply the anthropic fast multiplier to cache cost breakdown by @devin-ai-integration[bot] in #46112
  • test(rust): add Messages live provider harness by @yujonglee-berri in #45823
  • feat(rust): settle EdenAI Messages reported cost by @yujonglee-berri in #45698
  • fix(cost): bill azure_ai claude web searches per server_tool_use request by @devin-ai-integration[bot] in #46114
  • fix(cost): bill custom priced deployments at their own rates over the upstream x-litellm-response-cost header by @devin-ai-integration[bot] in #46120
  • test(cost): add tier 1 Claude 5 and gpt-6 native cost cases by @devin-ai-integration[bot] in #46124
  • fix(databricks): accept service_tier on requests and carry the served tier on responses by @devin-ai-integration[bot] in #46111
  • feat(vertex-ai): add gemini-robotics-er-2-preview by @berriai-litellm-provider-info-sync[bot] in #46126
  • feat(ui): add Home entry and independent LiteAdmin chat tabs by @tin-berri in #46068
  • fix(bedrock): bill the regional row for inference-profile ARNs that embed a cross-region prefix by @devin-ai-integration[bot] in #46128
  • feat(ui): give the Decisions playground a clearer request hierarchy by @devin-ai-integration[bot] in #45981
  • fix(cost): bill azure_ai claude web searches under deployment-owned pricing ids by @kerry-berri in #46135
  • test(cost): add BridgeCostParityTestCase with a gpt-6-sol /v1/messages to Responses pair by @devin-ai-integration[bot] in #46130
  • test(cost): add Bedrock Converse Claude 5 /v1/responses bridge cost parity pairs by @kerry-berri in #46141
  • fix(gemini): bill context cache creation tokens from cachedContents responses by @kerry-berri in #46144
  • test(cost): add azure gpt-6 /v1/messages bridge cost parity pairs by @kerry-berri in #46139
  • test(cost): add Claude 5 /v1/responses bridge cost parity pairs by @kerry-berri in #46140
  • test(cost): add gpt-6 chat to Responses bridge cost parity pairs by @kerry-berri in #46143
  • fix(vertex_ai): keep Gemini cache creation token count out of request kwargs by @devin-ai-integration[bot] in #46152
  • test(cost): add long context tier cost cases for gpt-6 (272k) and claude-haiku-5-5 (100k) by @kerry-berri in #46147
  • feat(guardrails): add Wingback guardrail integration by @yucheng-berri in #46136
  • feat(focus): add ternary destination for FOCUS export by @yucheng-berri in #46106
  • refactor(types): replace Any with proven types in 6 files by @devin-ai-integration[bot] in #46042
  • fix(azure): sync embedding, tts-hd and legacy gpt prices with the azure-openai pricing page by @berriai-litellm-provider-info-sync[bot] in #46200
  • feat(azure): add azure_ai/claude-fable-5-5 by @berriai-litellm-provider-info-sync[bot] in #46201
  • fix(a2a): add per-agent a2a_protocol_version override for langgraph-api 0.15 cards by @devin-ai-integration[bot] in #44463
  • fix(proxy)!: enforce fallback model access by default by @moyai-devin-berriai[bot] in #46127
  • fix(db): partition runbook moves the call-id index off the legacy spend logs table by @devin-ai-integration[bot] in #46131
  • test(translation): add StreamingTranslationTestCase with a Claude Sonnet 5.5 chat completions case by @kerry-berri in #46151
  • test(cost): add xai grok-4.7, Bedrock runtime chat completions and Bedrock Mantle cost cases by @kerry-berri in #46154
  • fix(cost-map): restore together_ai Kimi-K3 standard price after promo ended by @berriai-litellm-provider-info-sync[bot] in #46226
  • chore(prices): add gemini/gemini-4-argon from the Gemini pricing page by @berriai-litellm-provider-info-sync[bot] in #46227
  • feat(vertex-ai): add gemini-4-argon by @berriai-litellm-provider-info-sync[bot] in #46228
  • fix(gemini): take gemini-4-argon max output tokens from the model docs by @berriai-litellm-provider-info-sync[bot] in #46236
  • feat(pricing): add vertex gemini-4-argon by @kerry-berri in #46237
  • test(integration): isolate shared proxy state behind six order-dependent flakes by @yuneng-berri in #46172
  • fix(mcp): let tool-argument validation calls set their own timeout budget by @VimarshDwivedi in #46184
  • fix(pricing)!: drop duplicate and bare gemini-4-argon rows by @kerry-berri in #46246
  • feat(vertex-ai): add gemini-4-argon-cyber-permissive by @berriai-litellm-provider-info-sync[bot] in #46249
  • chore: bump litellm-enterprise 0.1.76 -> 0.1.77, litellm-proxy-extras 0.4.108 -> 0.4.109, litellm 1.106.0 -> 1.107.0 by @mateo-berri in #46239
  • fix(proxy)!: return provider-matching 4xx for the LIT-8062 status code follow-ups by @yucheng-berri in #45537
  • fix(proxy): raise on provider count_tokens errors instead of falling back to tiktoken by @krrish-berri-2 in #46121
  • fix(logging): redact nested callback input and provider response fields by @moyai-devin-berriai[bot] in #45923
  • test(unit): wait on the work itself instead of fixed sleeps by @yuneng-berri in #46261
  • fix(model-prices): add TokenHub rows, fix TokenHub DeepSeek-V4-Pro price, Bedrock Claude 3.5 Sonnet and Fireworks context windows, Together dates by @devin-ai-integration[bot] in #46206
  • feat(ui): source Home What's new from day 0 support blog posts by @kerry-berri in #46260
  • fix(proxy): keep provider refusal, logprobs and system_fingerprint in chat completions by @devin-ai-integration[bot] in #44788
  • fix(proxy): broadcast team cache invalidation on team writes by @mrinal-berri in #46113
  • feat(pricing): add github_copilot/gemini-4-argon by @berriai-litellm-provider-info-sync[bot] in #46280
  • fix(proxy): warn when --max_requests_before_restart runs with a single worker by @yassin-berriai in #46185
  • fix(cost-map): set together_ai Qwen3.7-Max to published price and restore 2026-09-15 removal dates by @berriai-litellm-provider-info-sync[bot] in #46281
  • feat(realtime): proxy OpenAI Live sessions on /v1/live/sessions by @devin-ai-integration[bot] in #43621
  • fix(mcp): resolve a bare tool name on a single-server scope against that server by @yassin-berriai in #46225
  • fix(proxy): bound SIGTERM connection wait by GRACEFUL_SHUTDOWN_TIMEOUT by @yassin-berriai in #46186
  • fix(openai): carry cache_control to prompt_cache_breakpoint on /v1/responses to gpt-5.6 by @ryan-crabbe-berri in #46105
  • refactor(rust): one stream codec shape per API format by @yujonglee-berri in #45996
  • chore(typing): clear 670 basedpyright Any errors by validating provider payloads at the boundary by @mateo-berri in #45388
  • feat(ui): simplify LiteAdmin on the homepage by @moe-berri in #46301
  • fix(openai): carry cache_control to prompt_cache_breakpoint on chat completions to gpt-5.6 by @ryan-crabbe-berri in #46101
  • fix(ui): drop the beta marker from the dark mode toggle by @yuneng-berri in #46305
  • docs(agents): steer tests away from implementation details and deliberate reverts by @yuneng-berri in #46317
  • fix(ui): drop deprecation banners from kept features and make the rest permanent by @yuneng-berri in #46314
  • fix(cost_calculator): honour base_model when the deployment provider row has no rates, with a live-proxy integration test by @kerry-berri in #46318
  • fix(vertex_ai): unwrap tool-emulated json_schema envelopes and send output_config.format for Claude by @devin-ai-integration[bot] in #45871
  • feat(telemetry): add litellm.telemetry records, semantic group consent and sink protocol by @devin-ai-integration[bot] in #45484
  • fix(prometheus): skip custom metadata labels a metric already carries by @yucheng-berri in #46267
  • feat(telemetry): add AggregatingSink, fixed-bucket histograms, Report and HttpExporter by @devin-ai-integration[bot] in #45487
  • fix(sso): fall back to id_token claims when the generic userinfo response is not JSON by @yassin-berriai in #46187
  • feat(telemetry): record proxy requests and provider attempts into the telemetry sink by @devin-ai-integration[bot] in #45489
  • feat(telemetry): keep reports in a local table with a persistent instance id and an admin export route by @devin-ai-integration[bot] in #45490
  • feat(telemetry): add the Admin UI telemetry settings page and gated page navigation events by @devin-ai-integration[bot] in #45494
  • test(integration): cover model_management endpoint contracts by @devin-ai-integration[bot] in #44684
  • test(integration): cover embeddings endpoint contracts by @devin-ai-integration[bot] in #44660
  • test(integration): cover agents_a2a endpoint contracts by @devin-ai-integration[bot] in #44650
  • test(integration): cover images endpoint contracts by @devin-ai-integration[bot] in #44653
  • test(integration): cover audio endpoint contracts by @devin-ai-integration[bot] in #44699
  • test(integration): cover scim endpoint contracts by @devin-ai-integration[bot] in #44656
  • test(integration): cover chat_completions endpoint contracts by @devin-ai-integration[bot] in #44688
  • test(integration): cover videos_containers endpoint contracts by @devin-ai-integration[bot] in #44691
  • test(integration): cover realtime endpoint contracts by @devin-ai-integration[bot] in #44689
  • fix(proxy-extras): bound migration lock waits with SET LOCAL lock_timeout in the migration SQL by @yassin-berriai in #46329
  • test(integration): cover mcp_management endpoint contracts by @devin-ai-integration[bot] in #44687
  • test(integration): cover vector_stores endpoint contracts by @devin-ai-integration[bot] in #44739
  • test(integration): cover google_genai endpoint contracts by @devin-ai-integration[bot] in #44680
  • test(integration): cover small_inference endpoint contracts by @devin-ai-integration[bot] in #44654
  • test(integration): cover guardrails_policies endpoint contracts by @devin-ai-integration[bot] in #44722
  • test(integration): cover prompts_tags_caching endpoint contracts by @devin-ai-integration[bot] in #44686
  • build(deps): bump mlflow to 3.17.0 and drop GHSA-h7x2-h6g9-p789 suppression by @devin-ai-integration[bot] in #45777
  • fix(proxy-extras): bound telemetry_reports migration lock waits with SET LOCAL lock_timeout by @yujonglee-berri in #46386
  • feat(ui): move the upgrade notice into the notifications bell by @yuneng-berri in #46334
  • feat(proxy): let team admins create keys for team members behind an opt-in setting by @ryan-crabbe-berri in #45870
  • test(integration): cover teams endpoint contracts by @devin-ai-integration[bot] in #44705
  • test(integration): cover health_routing endpoint contracts by @devin-ai-integration[bot] in #44744
  • test(integration): cover files_batches endpoint contracts by @devin-ai-integration[bot] in #44703
  • test(integration): cover anthropic_messages endpoint contracts by @devin-ai-integration[bot] in #44704
  • test(integration): cover budgets_spend endpoint contracts by @devin-ai-integration[bot] in #44736
  • test(integration): cover responses endpoint contracts by @devin-ai-integration[bot] in #44733
  • test(integration): cover config_utils endpoint contracts by @devin-ai-integration[bot] in #44737
  • test(integration): cover mcp_runtime endpoint contracts by @devin-ai-integration[bot] in #44671
  • test(integration): pin assistants and evals endpoint contracts by @devin-ai-integration[bot] in #44734
  • test(integration): cover keys_auth endpoint contracts by @devin-ai-integration[bot] in #44674
  • test(integration): cover orgs_users_customers endpoint contracts by @devin-ai-integration[bot] in #44725
  • test(integration): cover pass_through endpoint contracts by @devin-ai-integration[bot] in #44690

New Contributors

Full Changelog: v1.106.0-dev.3...v1.107.0-dev.1

Don't miss a new litellm release

NewReleases is sending notifications on new releases.