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.104.0Verify 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.104.0/cosign.pub \
ghcr.io/berriai/litellm:v1.104.0Expected 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
- build(deps): re-suppress GHSA-h7x2-h6g9-p789 in osv-scan, mlflow still has no fixed release by @devin-ai-integration[bot] in #41036
- feat(auth): add breached password detection to password policy by @ojensen-berri in #39321
- feat(auth): add self-service password change and plug plaintext password leaks by @ojensen-berri in #39562
- feat(auth): force password reset for breached or admin-set passwords by @ojensen-berri in #40107
- perf(proxy): serialize /model/info listing once with orjson by @devin-ai-integration[bot] in #41061
- fix(utils): stop wrapper_async submitting the sync success handler twice by @devin-ai-integration[bot] in #41058
- test(integration): native responses and messages cost cases by @devin-ai-integration[bot] in #42010
- fix(proxy): stop re-sending un-resendable spend batches from the Redis buffer by @devin-ai-integration[bot] in #41994
- fix(router): skip cooldown for background response cost poll 404s by @devin-ai-integration[bot] in #42046
- fix(router): stamp model_group when retrieving a batch, so batch tokens are attributable (internal copy of #38499) by @devin-ai-integration[bot] in #42062
- test(mcp): restore scoped execution and credential isolation regressions by @joshua-berri in #42050
- feat(proxy)!: refuse to start with an unset, empty, or publicly known master key by @ryan-crabbe-berri in #42019
- docs: stop advertising sk-1234 as the master key in shipped configs and examples by @ryan-crabbe-berri in #42011
- test(logging): add autorouter estimate keys to the GCS pub/sub spend-log golden by @devin-ai-integration[bot] in #42061
- fix(router): add NotFoundErrorRetries so a retry policy can pin 404 retries by @devin-ai-integration[bot] in #42045
- chore(prices): sync OpenRouter prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42077
- fix(google_genai): forward response schema and tool parameters through the generateContent adapter by @devin-ai-integration[bot] in #42067
- test(e2e): restore MCP OAuth happy-path coverage (LIT-3467) by @joshua-berri in #42051
- fix(mcp): tools/call no longer 404s on a worker that has not served tools/list by @devin-ai-integration[bot] in #42072
- chore(prices): sync OpenRouter prices: 7 models, 6 deprecated by @berriai-litellm-provider-info-sync[bot] in #42082
- fix(proxy): wait for the spend-log table before creating startup views by @devin-ai-integration[bot] in #41974
- fix(guardrails): scan each choice's tool-call arguments apart on n>1 streams and log why a rewrite was discarded by @devin-ai-integration[bot] in #40986
- chore(prices): sync OpenRouter prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42089
- chore(prices): sync OpenRouter prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42092
- chore: remove the dead telemetry flag from the SDK, proxy CLI and configs by @devin-ai-integration[bot] in #42071
- docs(tests): define the tier contract for unit, integration and e2e by @devin-ai-integration[bot] in #42099
- fix(proxy): coordinate v2 migration startup and qualify container recovery by @yuneng-berri in #40932
- ci(tests): wire tests/unit into CircleCI and keep draining GHA shards green by @devin-ai-integration[bot] in #42103
- test(unit): block external sockets at import time and add a socket policy regression test by @devin-ai-integration[bot] in #42113
- fix(ci): excuse retired test-quality rules in the budget ratchet by @devin-ai-integration[bot] in #42116
- test: migrate wave 1 phase 2 legacy unit tests to tests/unit by @devin-ai-integration[bot] in #42108
- test(llms): migrate bedrock, baseten and base_llm batch tests to tests/unit by @devin-ai-integration[bot] in #42110
- test(llms): migrate phase 6 provider unit tests to tests/unit by @devin-ai-integration[bot] in #42107
- test: migrate nvidia, oci, ocr, oobabooga and openai legacy tests to tests/unit by @devin-ai-integration[bot] in #42115
- test: migrate phase 9 legacy llm provider tests to tests/unit by @devin-ai-integration[bot] in #42117
- test(llms): migrate phase 7 provider unit tests to tests/unit by @devin-ai-integration[bot] in #42114
- test: migrate wave 1 phase 8 legacy llm tests to tests/unit by @devin-ai-integration[bot] in #42112
- test(llms): migrate phase 5 provider unit tests to tests/unit by @devin-ai-integration[bot] in #42109
- refactor(types): replace Any with proven types in 30 files by @devin-ai-integration[bot] in #42127
- test(unit): make every tests/unit directory a package so pytest collection is unique by @devin-ai-integration[bot] in #42135
- test(unit): migrate wave 1 phase 3 anthropic, apiserpent, azure and azure_ai legacy tests by @devin-ai-integration[bot] in #42118
- test: migrate openai, openai_like and openrouter legacy tests to tests/unit by @devin-ai-integration[bot] in #42128
- test: migrate phase 14 wave 2 provider tests to tests/unit by @devin-ai-integration[bot] in #42132
- test: migrate phase 16 legacy tests to tests/unit by @devin-ai-integration[bot] in #42131
- test: migrate wave 1 phase 1 legacy tests to tests/unit by @devin-ai-integration[bot] in #42123
- test: migrate phase 12 legacy llm provider tests to tests/unit by @devin-ai-integration[bot] in #42137
- test: migrate phase 15 legacy tests to tests/unit by @devin-ai-integration[bot] in #42136
- fix(proxy): enforce virtual key budgets for JEV test routing by @devin-ai-integration[bot] in #41879
- feat(fal_ai): add Seedance 2.5 / 2.0 video generation via fal queue API by @devin-ai-integration[bot] in #41980
- chore(prices): sync OpenRouter prices: 11 models by @berriai-litellm-provider-info-sync[bot] in #42096
- test: migrate legacy provider tests to tests/unit (wave 2, phase 13) by @devin-ai-integration[bot] in #42145
- chore(prices): sync OpenRouter prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42154
- chore(prices): sync OpenRouter prices: 5 models by @berriai-litellm-provider-info-sync[bot] in #42155
- chore(prices): sync OpenRouter prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42157
- fix(auth): reject deactivated JWT users and refresh cached status by @joshua-berri in #42064
- fix(mcp): explain missing public client dependencies by @joshua-berri in #42148
- chore(prices): sync OpenRouter prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42162
- chore(prices): sync OpenRouter prices: 3 models by @berriai-litellm-provider-info-sync[bot] in #42163
- chore(prices): sync OpenRouter prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42164
- chore(prices): sync OpenRouter prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42166
- chore(prices): sync OpenRouter prices: 3 models by @berriai-litellm-provider-info-sync[bot] in #42168
- refactor(rust): split token counter backends by @devin-ai-integration[bot] in #42165
- chore(prices): sync OpenRouter prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42169
- chore(prices): sync OpenRouter prices: 3 models by @berriai-litellm-provider-info-sync[bot] in #42175
- chore(prices): sync OpenRouter prices: 4 models by @berriai-litellm-provider-info-sync[bot] in #42178
- chore(prices): sync OpenRouter prices: 3 models by @berriai-litellm-provider-info-sync[bot] in #42179
- chore(prices): sync OpenRouter prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42182
- feat(rust): add typed secret managers and shared auth adapters by @devin-ai-integration[bot] in #42173
- chore(prices): sync OpenRouter prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42184
- chore(prices): sync OpenRouter prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42187
- chore(prices): sync OpenRouter prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42192
- fix(responses): forward safety_identifier through the chat completion bridge by @devin-ai-integration[bot] in #42193
- refactor(types): replace Any with proven types in 32 files by @devin-ai-integration[bot] in #42220
- chore(prices): sync OpenRouter prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42227
- fix(helm): render a fixed replicaCount on componentized deployments when HPA is disabled by @devin-ai-integration[bot] in #42207
- fix(proxy): return 422 instead of 429 for BudgetExceededError by @devin-ai-integration[bot] in #42097
- chore(prices): sync OpenRouter prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42234
- chore(prices): sync OpenRouter prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42240
- chore(prices): sync OpenRouter prices: 4 models by @berriai-litellm-provider-info-sync[bot] in #42243
- fix(a2a): send message/stream for Bedrock AgentCore streaming requests by @devin-ai-integration[bot] in #42239
- fix(registry): add MAI-Image-2.5-Pro pricing, fix Fireworks/Together entries, absorb verified open registry PRs, add Groq deprecation and Bedrock regional Qwen3 Next pricing by @devin-ai-integration[bot] in #34941
- fix(anthropic): forward safeguards and anthropic-beta unchanged on native /v1/messages by @devin-ai-integration[bot] in #42152
- chore(prices): sync OpenRouter prices: 4 models by @berriai-litellm-provider-info-sync[bot] in #42246
- chore(prices): sync OpenRouter prices: 3 models by @berriai-litellm-provider-info-sync[bot] in #42251
- chore(prices): sync Azure prices: 1 model, 1 deprecated by @berriai-litellm-provider-info-sync[bot] in #42249
- chore(prices): sync AWS Bedrock prices: 25 models [enrichment failed: AWS Bedrock, 66 held] by @berriai-litellm-provider-info-sync[bot] in #42250
- test(a2a): migrate a2a_protocol legacy tests to tests/unit (wave 3 phase 17) by @devin-ai-integration[bot] in #42160
- feat(proxy): default to the v2 migration resolver by @yuneng-berri in #42105
- feat(auto-router): configure heuristic v2 success threshold by @tin-berri in #42252
- chore(prices): sync Together AI prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42258
- chore(prices): sync OpenRouter prices: 6 models, 1 new by @berriai-litellm-provider-info-sync[bot] in #42253
- fix(key_generate): use the user's own budget as the ceiling for UI session personal keys by @devin-ai-integration[bot] in #41588
- feat(team): show whether a member follows the team default budget and allow resetting to it by @devin-ai-integration[bot] in #41906
- chore(prices): sync AWS Bedrock prices: 13 models, 1 new [1 with gaps, enrichment failed: AWS Bedrock, 38 held] by @berriai-litellm-provider-info-sync[bot] in #42254
- chore(prices): sync OpenRouter prices: 7 models by @berriai-litellm-provider-info-sync[bot] in #42261
- feat(proxy): add GET /utils/model_info to look up cost map info for unregistered models by @devin-ai-integration[bot] in #42121
- chore(prices): sync OpenRouter prices: 4 models by @berriai-litellm-provider-info-sync[bot] in #42265
- feat(xai): add grok-4.7 to the cost map by @devin-ai-integration[bot] in #42264
- ci(e2e): fix the stage-mirror batch reds and keep a redacted pytest log by @devin-ai-integration[bot] in #42143
- chore(prices): sync AWS Bedrock prices: 3 models [enrichment failed: AWS Bedrock, 32 held] by @berriai-litellm-provider-info-sync[bot] in #42269
- chore(prices): sync OpenRouter prices: 6 models by @berriai-litellm-provider-info-sync[bot] in #42270
- feat(fal_ai): add gpt-image-2.5 flare/sunburst, flux/dev and image edits by @devin-ai-integration[bot] in #42095
- feat(bedrock): add us.moonshotai.kimi-k3 pricing and fill the global Kimi K3 entry by @devin-ai-integration[bot] in #42271
- test(google): boot the unified Google proxy fixture with a real master key by @yuneng-berri in #42120
- feat(auto-router): add JEV classifier alongside LLM classifier by @devin-ai-integration[bot] in #41886
- fix(proxy): park requeued spend logs in Redis so they survive a pod restart during a DB outage by @devin-ai-integration[bot] in #42022
- fix(bedrock): forward anthropic-beta headers verbatim on the Claude platform messages path by @devin-ai-integration[bot] in #42275
- chore(prices): sync AWS Bedrock prices: 4 models [enrichment failed: AWS Bedrock, 26 held] by @berriai-litellm-provider-info-sync[bot] in #42279
- chore(prices): sync OpenRouter prices: 3 models by @berriai-litellm-provider-info-sync[bot] in #42280
- fix(azure_ai): bridge gpt-5.4+ function tools with reasoning to the Foundry Responses API by @devin-ai-integration[bot] in #42041
- fix: apply configured cache_control_injection_points beside client cache_control marks by @devin-ai-integration[bot] in #41956
- fix(token_counter): count replayed redacted_thinking blocks so prompt_caching keeps pinning by @devin-ai-integration[bot] in #42069
- fix(mcp): paginate prompt and resource discovery by @devin-ai-integration[bot] in #39189
- chore(prices): sync AWS Bedrock prices: 3 models [enrichment failed: AWS Bedrock, 18 held] by @berriai-litellm-provider-info-sync[bot] in #42290
- chore(prices): sync OpenRouter prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42289
- fix(router): keep prompt caching affinity when the breakpoint moves by @devin-ai-integration[bot] in #42080
- feat(ui): show prompt caching requests and net savings by @tin-berri in #42055
- feat(bedrock_mantle): serve /v1/messages for Claude models on Mantle's native Anthropic Messages API by @devin-ai-integration[bot] in #42049
- feat(policy_engine): add default fallback policy attachments by @devin-ai-integration[bot] in #42119
- fix(mcp): handle split UTF-8 routing previews by @devin-ai-integration[bot] in #34919
- fix(bedrock): send s3BucketOwner on batch input and output data config by @devin-ai-integration[bot] in #42262
- feat(rust): scaffold cache foundation for Python parity by @devin-ai-integration[bot] in #42196
- fix(fal_ai): price images from the dimensions fal returns by @devin-ai-integration[bot] in #42282
- chore(prices): sync AWS Bedrock prices: 1 model [enrichment failed: AWS Bedrock, 16 held] by @berriai-litellm-provider-info-sync[bot] in #42298
- chore(prices): sync OpenRouter prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42297
- feat(fal_ai): add MiniMax H3 text-to-video and reference-to-video by @devin-ai-integration[bot] in #42286
- fix(ci): let the install smoke test boot its key-less proxy config by @devin-ai-integration[bot] in #42296
- fix: rename the mainland China brand to Qianwen AI Platform by @devin-ai-integration[bot] in #42284
- test(integration): endpoint, breakdown component and failure support in the cost harness by @devin-ai-integration[bot] in #41999
- test(integration): embeddings, rerank, completions and moderations cost cases by @devin-ai-integration[bot] in #42020
- chore(prices): sync OpenRouter prices: 4 models, 3 new by @berriai-litellm-provider-info-sync[bot] in #42305
- test(integration): audio, image and per-unit cost cases by @devin-ai-integration[bot] in #42024
- feat(ui): add upgrade banner with latest release changelog stats by @kerry-berri in #40429
- fix(fal_ai): surface fal errors in video status and content instead of completed and generic 500 by @devin-ai-integration[bot] in #42306
- test(integration): passthrough route cost cases by @devin-ai-integration[bot] in #42028
- fix(proxy): detach stored credential when model editor selects None by @devin-ai-integration[bot] in #42291
- fix(proxy): renew budget reservation counter TTL while the request is in flight by @devin-ai-integration[bot] in #40322
- chore(prices): sync OpenRouter prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42320
- test(integration): pricing dimension and provider reported cost cases by @devin-ai-integration[bot] in #42035
- fix(anthropic): forward Claude Code safeguards and dangerous-tool-use beta to Bedrock Invoke and Vertex on /v1/messages by @devin-ai-integration[bot] in #42288
- feat(edenai): add Eden AI provider across chat, Responses, Messages, embeddings, audio, images and video by @hMED22 in #41101
- feat(rust-cache): serve RedisClusterCache natively as a Redis topology by @devin-ai-integration[bot] in #42317
- test(integration): provider wire cost cases by @devin-ai-integration[bot] in #42052
- test(e2e): replace custom endpoints_client with provider SDK clients by @mateo-berri in #34358
- fix(mcp): keep oauth scopes in admin api credential redaction by @devin-ai-integration[bot] in #39805
- fix(otel v2): map OCR page markdown onto the generation output by @devin-ai-integration[bot] in #42267
- test(integration): proxy behaviour cost cases by @devin-ai-integration[bot] in #42060
- chore(prices): sync OpenRouter prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42333
- test(integration): batch and realtime cost cases by @devin-ai-integration[bot] in #42066
- fix(proxy): keep config-defined deployments when a config read returns no model_list by @devin-ai-integration[bot] in #41505
- feat(rust): add CyberArk Conjur secret manager backend by @devin-ai-integration[bot] in #42303
- fix(rust): preserve Python settings semantics at the native boundary by @devin-ai-integration[bot] in #42300
- fix(alerting): deliver every distinct alert queued in one flush window by @devin-ai-integration[bot] in #42314
- fix(bedrock): keep batch S3 credentials out of chat requests and debug logs by @devin-ai-integration[bot] in #42312
- fix(proxy): evict the cached user row when SCIM or /user/delete removes a user by @devin-ai-integration[bot] in #42315
- fix(auth): fail closed when the team membership lookup hits a db outage by @devin-ai-integration[bot] in #42036
- test(migrations): cover the release-to-release upgrade path by @yuneng-berri in #42294
- feat(rust): add Azure Key Vault secret manager backend by @devin-ai-integration[bot] in #42309
- feat(rust): native Azure Blob response cache backend by @devin-ai-integration[bot] in #42321
- chore(prices): sync AWS Bedrock prices: 6 models [enrichment failed: AWS Bedrock, 4 held] by @berriai-litellm-provider-info-sync[bot] in #42338
- chore(prices): sync OpenRouter prices: 3 models by @berriai-litellm-provider-info-sync[bot] in #42337
- refactor(types): remove 1,173 Any errors across 169 backend files by @mateo-berri in #40251
- fix(responses): stream one lifecycle across MCP auto-execute rounds by @Atharva-Kanherkar in #40121
- fix(responses): stop agentic follow-up from passing request params twice by @chopratejas in #41560
- fix(streaming): keep an explicit provider prompt_tokens=0 or completion_tokens=0 in streamed usage by @devin-ai-integration[bot] in #42323
- fix(router): walk every entry of a fallback list after a mid-stream failure by @devin-ai-integration[bot] in #42283
- refactor(mcp): extract explicit operation context and dispatch by @joshua-berri in #42292
- test: fix stale budget-status and bad-database-url assertions by @yuneng-berri in #42339
- chore(prices): sync OpenRouter prices: 3 models by @berriai-litellm-provider-info-sync[bot] in #42349
- fix(responses): patch custom_tool_call_output in place on guardrail write-back by @chopratejas in #41561
- feat(rust): add native disk cache backend by @devin-ai-integration[bot] in #42311
- feat(auth): breached password detection, self-service change-password and forced password reset by @devin-ai-integration[bot] in #42278
- feat(docker): add a quickstart compose file served from the product repo by @yuneng-berri in #42326
- fix(xai): accept max_completion_tokens as a supported param by @devin-ai-integration[bot] in #42353
- feat(rust): add native GCS object-store cache backend by @devin-ai-integration[bot] in #42325
- feat(rust): add HashiCorp Vault secret manager crate by @devin-ai-integration[bot] in #42308
- fix(proxy): apply DB-stored callback redaction settings before logger init by @devin-ai-integration[bot] in #42122
- fix(mcp): keep server lists stable across refreshes by @devin-ai-integration[bot] in #41074
- chore(prices): sync OpenRouter prices: 4 models, 3 deprecated by @berriai-litellm-provider-info-sync[bot] in #42357
- feat(rust): add native S3 cache backend by @devin-ai-integration[bot] in #42313
- feat(xiaomi_mimo): add mimo-v2.6-pro and mimo-v2.6-flash cost map rows with live e2e coverage by @devin-ai-integration[bot] in #42362
- fix(bedrock): add bare moonshotai.kimi-k3 cost map entry by @devin-ai-integration[bot] in #42363
- feat(cache): add native Valkey semantic cache backend by @devin-ai-integration[bot] in #42316
- fix(logging_worker): make flush() survive an event loop change by @devin-ai-integration[bot] in #42355
- fix(auth): let jwt team_allowed_routes paths grant auth=true passthrough by @ryan-crabbe-berri in #42346
- fix(rust): declare _CacheTestHandle.valkey_semantic in native stub by @devin-ai-integration[bot] in #42364
- chore(prices): sync OpenRouter prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42365
- feat(ui): add internal-user savings and auto-router usage by @tin-berri in #42026
- test(model_management): cover actor edges and wildcard models by @yuneng-berri in #41769
- feat(ui): expose remaining complexity router advanced settings by @devin-ai-integration[bot] in #42293
- test(ui): cover dashboard form journeys by @yuneng-berri in #41773
- test(router): cover legacy lowest TPM selection by @yuneng-berri in #41795
- feat(proxy): report the source of alerting, UI and router settings on read by @yuneng-berri in #41788
- fix(proxy): record aborted outcome when spend-log cleanup is cancelled at shutdown by @yucheng-berri in #41213
- fix(router): make context-window escalation opt-in by @tin-berri in #41872
- feat(cache): serve Redis Semantic caches natively in Rust by @devin-ai-integration[bot] in #42319
- fix(cli): preserve newer installed status lines during setup by @tin-berri in #42356
- chore(prices): sync OpenRouter prices: 4 models by @berriai-litellm-provider-info-sync[bot] in #42371
- feat(agents): attach access groups to agents and enforce them for models, MCP servers and agent calls by @devin-ai-integration[bot] in #41634
- fix(guardrails): run key-attached guardrails on /v1/videos by @devin-ai-integration[bot] in #42354
- fix(azure): propagate asyncio.CancelledError instead of raising a 500 by @devin-ai-integration[bot] in #42295
- test(e2e): cover chat and responses registry gaps by @yuneng-berri in #41794
- feat(cache): serve QdrantSemanticCache natively from Rust by @devin-ai-integration[bot] in #42324
- chore(prices): sync OpenRouter prices: 4 models by @berriai-litellm-provider-info-sync[bot] in #42377
- feat(ui): show Capability and FUSE v2 routing forecasts by @tin-berri in #42057
- fix(cache): keep native Redis semantic binding and Qdrant batch writes after merge by @devin-ai-integration[bot] in #42379
- feat(ui): add per-user breakdown to team usage export by @devin-ai-integration[bot] in #42367
- feat(jwt-key-mapping): accept token_id as an alternative to the plaintext key by @Louis-Vauterin in #39578
- fix(openrouter): remove the retired stealth/union-alpha model from the cost map by @devin-ai-integration[bot] in #42386
- feat(pricing): add xai grok-4.20 aliases and image token prices from /v1/language-models by @devin-ai-integration[bot] in #42384
- test(proxy): isolate the agent read-through singleton between unknown-agent tests by @devin-ai-integration[bot] in #42389
- fix(mcp): return camelCase tool keys from /v1/mcp/tools after the SDK 2 upgrade by @devin-ai-integration[bot] in #42352
- fix(logging): price terminal Responses stream events from their inner response by @devin-ai-integration[bot] in #42385
- fix(bedrock): send every Mantle beta in the anthropic-beta header on the bedrock/mantle route by @devin-ai-integration[bot] in #42376
- fix(bedrock): sign batch S3 requests with s3_access_key_id and s3_secret_access_key by @devin-ai-integration[bot] in #42342
- feat(fal_ai): add flux-lora-depth image edits and moondream3 chat completions by @devin-ai-integration[bot] in #42334
- feat(proxy): opt-in litellm_call_id in JSON error bodies by @devin-ai-integration[bot] in #42391
- fix(fal_ai): price non-canonical image sizes from the nearest row and honour dump options by @devin-ai-integration[bot] in #42336
- fix(proxy): drop cost-map metadata echoed back on model save by @devin-ai-integration[bot] in #41944
- feat(openrouter): price typesafe/jev-1.13 and add an openrouter decisions pass-through by @devin-ai-integration[bot] in #42301
- feat(cost): warn and count $0 cost on billable requests by @devin-ai-integration[bot] in #42345
- fix(proxy): release unclaimed budget reservations at request end by @devin-ai-integration[bot] in #42304
- test(integration): move Xiaomi MiMo coverage from live e2e to the providers wire shard by @devin-ai-integration[bot] in #42395
- feat(fal_ai): add queue-only /fal_ai pass-through route with spend tracking by @devin-ai-integration[bot] in #42360
- fix(auth): fail closed when the JWT single-team fallback or compact editor membership read hits a DB outage by @devin-ai-integration[bot] in #42344
- refactor(agentic-loop): build follow-up kwargs in one place so no executor can repeat a request param by @ryan-crabbe-berri in #42307
- fix(responses): drop client_metadata and merge system messages for Databricks chat-only models by @devin-ai-integration[bot] in #42390
- test(e2e-ui): check the MCP Tools tab against the upstream's own tools/list by @devin-ai-integration[bot] in #42397
- test(integration): chain a proxy-issued previous_response_id in the cost suite by @devin-ai-integration[bot] in #42396
- feat(rust-bridge): add cache and secret migration foundations by @devin-ai-integration[bot] in #42328
- fix(proxy): surface a database outage from the user read as 503 no_db_connection by @devin-ai-integration[bot] in #42399
- test(pricing): assert cache-priced vertex grok rows advertise supports_prompt_caching by @kumarpriyanshu09 in #41526
- fix(bedrock): price bedrock/mantle/ deployments from the base model row by @devin-ai-integration[bot] in #42402
- fix(anthropic_adapter): keep reasoning_effort a string for targets that stay on chat completions by @devin-ai-integration[bot] in #42401
- chore(prices): sync OpenRouter prices: 2 models, 2 deprecated by @berriai-litellm-provider-info-sync[bot] in #42381
- feat(proxy): add TinyFish Agent API passthrough with per-step billing by @Zechereh in #41099
- chore(prices): sync OpenRouter prices: 2 models, 2 new by @berriai-litellm-provider-info-sync[bot] in #42407
- ci: skip cost map file checks on PRs that leave the cost map untouched by @devin-ai-integration[bot] in #42406
- feat(tokenizer): preserve Python defaults with opt-in Rust dispatch by @devin-ai-integration[bot] in #42174
- fix(presidio): mask PII in streaming /v1/messages output by @devin-ai-integration[bot] in #42351
- fix(otel v2): map completions, images, speech, transcription and moderation output onto the Langfuse generation output by @devin-ai-integration[bot] in #42394
- fix(cost): honor per-second custom pricing on chat completions for every provider by @devin-ai-integration[bot] in #42403
- chore(prices): sync OpenRouter prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42418
- feat(errors): prefilled GitHub issue link on unmapped internal errors by @devin-ai-integration[bot] in #42065
- test(e2e): add conversational matrix across chat, messages and responses by @devin-ai-integration[bot] in #42359
- fix(proxy): answer 503 no_db_connection on management routes when the caller's user read hits a database outage by @devin-ai-integration[bot] in #42410
- fix(e2e-stack): print add-mask lines only under GitHub Actions by @devin-ai-integration[bot] in #42423
- feat(errors): add stream and safe config flags to the bug report link by @ryan-crabbe-berri in #42428
- feat(router): native compact-to-fit across conversation APIs by @tin-berri in #42074
- fix(mcp): keep config-defined servers read-only by @joshua-berri in #42299
- ci(code-quality): allowlist _render_json in the recursive detector by @devin-ai-integration[bot] in #42442
- fix(guardrails): store the masked output in spend logs when Presidio masks the response by @devin-ai-integration[bot] in #42441
- fix(jwt): accept a team alias in x-litellm-team-id by @devin-ai-integration[bot] in #42445
- chore(prices): sync OpenRouter prices: 14 models, 1 deprecated [enrichment failed: OpenRouter, 5 held] by @berriai-litellm-provider-info-sync[bot] in #42438
- feat(rust): align secret manager operation contexts by @devin-ai-integration[bot] in #42480
- chore(prices): sync OpenRouter prices: 1 model [enrichment failed: OpenRouter, 5 held] by @berriai-litellm-provider-info-sync[bot] in #42485
- feat(arize): per-team success and error sampling rates for the Arize AX callback by @devin-ai-integration[bot] in #42383
- test(unit): make bedrock collector and secret scan timing tests deterministic by @devin-ai-integration[bot] in #42405
- feat(anthropic): add Claude Opus 5.5 by @devin-ai-integration[bot] in #42489
- fix(gemini): simplify model version check by @philschmid in #42465
- fix(bedrock/claude_platform): strip body params the AWS endpoint rejects by @mateo-berri in #31203
- fix(proxy): never render credential-bearing config keys in the bug report by @devin-ai-integration[bot] in #42493
- fix(cost): bill batch prompts above 272K at OpenAI's long-context batch tier by @mateo-berri in #39861
- fix(otel v2): map rerank and search output and the OCR, image edit and search input onto the Langfuse generation by @devin-ai-integration[bot] in #42444
- test(response_metadata): make the detailed-timing receive-anchor test timezone independent by @devin-ai-integration[bot] in #42429
- fix(utils): stop a nested additional_drop_params entry from crashing openai-compatible calls by @yuneng-berri in #42492
- fix(jwt): say x-litellm-team-id matched no team id or alias in the 403 by @devin-ai-integration[bot] in #42495
- fix(ui): surface the owner's user budget on keys without their own budget by @devin-ai-integration[bot] in #38220
- test(proxy): give every ui settings endpoint test a fresh settings store by @devin-ai-integration[bot] in #42430
- chore(prices): sync Azure prices: 34 models by @berriai-litellm-provider-info-sync[bot] in #42502
- chore(prices): sync OpenAI prices: 25 models [enrichment failed: OpenAI, 32 held] by @berriai-litellm-provider-info-sync[bot] in #42501
- feat(router): time-windowed team reservation of deployments via model_info.access_windows by @devin-ai-integration[bot] in #42398
- feat(terraform): expose server_metadata on litellm_key so undeclared metadata is visible by @devin-ai-integration[bot] in #42453
- fix(mcp): restore legacy SSE and bounded cancellation cleanup by @joshua-berri in #42382
- chore(prices): sync Google Gemini prices: 13 models by @berriai-litellm-provider-info-sync[bot] in #42500
- fix(realtime): surface an upstream handshake refusal as an error event and policy close by @devin-ai-integration[bot] in #42388
- feat(openai): add GPT-6 Sol and GPT-6 Luna by @devin-ai-integration[bot] in #42515
- fix(router): explain fallback outcome in plain words in the raised error by @devin-ai-integration[bot] in #42509
- fix(cost): honor deployment pricing for image generation by @patel-26meet in #39311
- fix(streaming): let a later usage event zero out stale cache counts (#40736) by @devin-ai-integration[bot] in #42330
- fix(fal_ai): handle seconds=auto and oversized sizes for minimax h3 videos by @devin-ai-integration[bot] in #42504
- fix(proxy): write key deleted audit logs for cascade and alias key deletions by @devin-ai-integration[bot] in #42446
- fix(rust_bridge): keep Messages, token counter and tokenizer routes on Python by @devin-ai-integration[bot] in #42517
- chore(pricing): remove retired models flagged by the provider sync by @devin-ai-integration[bot] in #42521
- feat(proxy): admin-only /debug/report sharing the bug report environment by @devin-ai-integration[bot] in #42440
- fix(aws_secret_manager_v2): restore secret scheduled for deletion instead of failing CreateSecret by @devin-ai-integration[bot] in #42454
- feat(rust): add python-compat crate for Python data formats by @devin-ai-integration[bot] in #42510
- fix(langsmith): json.dumps with default=str so non-serializable metadata does not crash batch flush by @devin-ai-integration[bot] in #42424
- fix(proxy): make the lazy OpenAPI snapshot byte-identical on every Python version by @devin-ai-integration[bot] in #42519
- test(rust_bridge): drop route dispatch assertions, test the bridge directly by @devin-ai-integration[bot] in #42536
- fix(websearch_interception): keep intercepted searches under the parent request's session and trace by @devin-ai-integration[bot] in #41711
- test(e2e): assert a cooldown reaches a sibling replica within the 1s Redis read interval by @devin-ai-integration[bot] in #42422
- feat(proxy): opt-in include_guardrail_response returns guardrail_information in the response by @devin-ai-integration[bot] in #42327
- feat(logs): add span type filter to request logs by @devin-ai-integration[bot] in #42491
- fix(e2e): route credential, cost map, and UI login calls to the control plane by @devin-ai-integration[bot] in #42506
- test(google_genai): move unified_google_tests to gemini-3.5-flash-lite by @devin-ai-integration[bot] in #42520
- feat(router): add group-scoped priority routing strategy by @tin-berri in #42378
- fix(fal_ai): align /fal_ai queue gate with the pricer and normalise resolution type by @devin-ai-integration[bot] in #42505
- fix(fal_ai): reuse the status client and headers on the video result probe by @devin-ai-integration[bot] in #42511
- refactor(rust): align the cache crates with Python and wire every native backend by @devin-ai-integration[bot] in #42530
- fix(fal_ai): honour global api_base for image generation and reject non-string reasoning_effort with 400 by @devin-ai-integration[bot] in #42512
- fix(ui): rename reminder markers to Ignore Custom Tags by @tin-berri in #42370
- chore(prices): sync Baseten prices: 12 models, 9 new [enrichment failed: Baseten, 15 held] by @berriai-litellm-provider-info-sync[bot] in #42558
- fix: enforce disable_custom_api_keys from general_settings by @yuneng-berri in #42437
- feat: add configurable provider affinity header mapping by @togear in #41033
- fix(proxy): share model rate-limit buckets between a model_group_alias and its target by @devin-ai-integration[bot] in #42516
- test(e2e): one request lands the same spend on every surface by @devin-ai-integration[bot] in #42540
- fix(mcp): apply post-call rewrites without stale structured output by @devin-ai-integration[bot] in #41530
- chore(prices): sync Baseten prices: 4 models, 4 new [enrichment failed: Baseten, 3 held] by @berriai-litellm-provider-info-sync[bot] in #42578
- fix(otel): honor SSL_CERT_FILE and ssl_verify in OTLP HTTP exporters by @devin-ai-integration[bot] in #42106
- chore(prices): sync OpenAI prices: 3 models by @berriai-litellm-provider-info-sync[bot] in #42557
- fix(ssrf): point the blocked-address remediation at litellm_settings by @devin-ai-integration[bot] in #42508
- fix(model_prices): registry audit 2026-09-22, absorb open pricing PRs by @devin-ai-integration[bot] in #42543
- fix(gateway): expose /api/event_logging/batch on the gateway allowlist by @devin-ai-integration[bot] in #42572
- fix(proxy): honor DATABASE_DISABLE_PREPARED_STATEMENTS in the litellm CLI by @devin-ai-integration[bot] in #42556
- chore(prices): sync Vertex AI prices: 20 models by @berriai-litellm-provider-info-sync[bot] in #42577
- fix(proxy): attribute provider and model_info on pre_call_hook rejections by @devin-ai-integration[bot] in #41077
- chore(cost-map): remove models past their deprecation date by @devin-ai-integration[bot] in #42435
- test(vcr): guard leaked cassette patches and make injected-transport embedding tests immune by @devin-ai-integration[bot] in #42542
- fix(otel): keep text completion choice fields beside the synthesized message by @devin-ai-integration[bot] in #42537
- fix(mcp): preserve discovery attribution and sanitize logging headers by @joshua-berri in #42541
- fix(proxy_cli): import proxy_server once on script-style boot by @devin-ai-integration[bot] in #42584
- feat(bedrock): add Claude Opus 5.5 pricing and capabilities by @devin-ai-integration[bot] in #42588
- test(e2e): hold every worker under an idle RSS budget before any traffic by @devin-ai-integration[bot] in #42552
- feat(cost-map): add Claude Opus 5.5 for Vertex AI and Azure AI by @devin-ai-integration[bot] in #42599
- feat(proxy): configurable key_alias_pattern for key generate, update, and regenerate by @devin-ai-integration[bot] in #42553
- test(proxy): make two proxy-infra tests independent of sibling-test state by @yuneng-berri in #42581
- test: count a zombie grandchild as gone in the migrate deploy timeout test by @devin-ai-integration[bot] in #42570
- test(e2e): run the memory cell alone on the shared stack by @devin-ai-integration[bot] in #42518
- fix(caching): keep embedding cache hits aligned with request inputs by @devin-ai-integration[bot] in #42571
- chore(prices): sync xAI prices: 3 models, 3 new [3 with gaps] by @berriai-litellm-provider-info-sync[bot] in #42591
- fix(otel): record the GenAI exception event through the Logs API on both OpenTelemetry lines by @devin-ai-integration[bot] in #42431
- fix(spend): return 400 from /spend/calculate for a model with no pricing row by @devin-ai-integration[bot] in #42497
- fix(anthropic): return 400 instead of 500 when a content list holds a bare string by @devin-ai-integration[bot] in #42420
- feat(rust): add standalone cost calculator by @devin-ai-integration[bot] in #42604
- feat(logging): add normalized_error cluster key to error_information by @devin-ai-integration[bot] in #41715
- test(bedrock): point unit tests at model ids still in the cost map by @devin-ai-integration[bot] in #42606
- feat(rust): add immutable model catalog crate by @devin-ai-integration[bot] in #42605
- fix(ui): let the Create Key user picker find users by user_id, not just email by @devin-ai-integration[bot] in #41687
- test(cost_calculator): point image-generation deployment price test at a live gemini row by @devin-ai-integration[bot] in #42615
- test(utils): accept the per-size image cost keys in the price-map schema check by @devin-ai-integration[bot] in #42612
- fix(ollama): send PNG and JPEG images without requiring Pillow. by @Pawan-Shahane in #41979
- fix: answer get_api_base for github_copilot and chatgpt without running the login flow by @devin-ai-integration[bot] in #42602
- test: point CircleCI-only suites at models still in the cost map by @yuneng-berri in #42617
- fix: drop duplicate cache_read_input_token_cost_batches keys from the price maps by @devin-ai-integration[bot] in #42623
- fix(s3): replace colons in generated log filenames by @mubashir1osmani in #40452
- test(realtime): drop legacy InvalidStatusCode tests and pin websockets imports by @devin-ai-integration[bot] in #42624
- fix(bedrock): treat blank AWS_S3_* env vars as unset for batch jobs by @devin-ai-integration[bot] in #42528
- ci(test-unit): drop dead misc shard paths and skip missing paths with a warning by @devin-ai-integration[bot] in #42603
- fix(proxy): keep the in-flight daily spend batch when shutdown cancels the flush by @devin-ai-integration[bot] in #42593
- fix(utils): isolate callback errors in async_post_call_success_deployment_hook by @devin-ai-integration[bot] in #42535
- test(e2e): add secret manager lanes for HashiCorp Vault and CyberArk Conjur by @yujonglee-berri in #42503
- feat(ui): simplify auto-router setup and clarify feature limits by @moe-berri in #42625
- feat(ui): add native LiteAdmin assistant by @tin-berri in #42443
- fix(mcp): preserve credential authority in DCR bridge authentication by @devin-ai-integration[bot] in #42563
- feat(ci): close open pull requests superseded by a merged fix on their linked issue by @devin-ai-integration[bot] in #42609
- test(cost): repoint the Azure image cost test at gpt-image-2 by @devin-ai-integration[bot] in #42631
- feat(logger): dispatch Python logging through the Rust diagnostics processor by @devin-ai-integration[bot] in #42616
- fix(bedrock): drop unsupported sampling params on converse reasoning models by @emerzon in #39834
- test(utils): raise the post-success hook error from a guardrail in the failure-hook regression by @devin-ai-integration[bot] in #42646
- chore(docker): bump wolfi-base digest to pick up glibc 2.44-r6 by @yuneng-berri in #42643
- chore: bump litellm-enterprise 0.1.69 -> 0.1.70, litellm-proxy-extras 0.4.100 -> 0.4.101, litellm 1.103.0 -> 1.104.0 by @yuneng-berri in #42633
- fix: repair seven regressions caught by CircleCI on main by @yuneng-berri in #42640
- chore(e2e): move the compat-matrix populator from a GCE VM to a Render cron job by @devin-ai-integration[bot] in #42608
- chore(prices): sync Google Gemini prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42642
- chore(prices): sync OpenAI prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42648
- fix(bedrock): stream /v1/messages Invoke bytes through instead of holding them in a 1024-byte chunker by @devin-ai-integration[bot] in #42607
- fix(bedrock): send json_schema as a forced tool on Claude Opus 4.7 and 4.8 Converse by @devin-ai-integration[bot] in #42644
- test(e2e): tolerate provider-side flakes on five full-suite cells by @devin-ai-integration[bot] in #42628
- chore(prices): sync AWS Bedrock prices and sources from the AWS price list by @berriai-litellm-provider-info-sync[bot] in #42632
- fix(pricing): drop the unpublished cached rate from the Gemini Live preview entries by @devin-ai-integration[bot] in #42651
- test(integration): regression tests for August provider translation and streaming bugs by @devin-ai-integration[bot] in #42621
- fix(vector_stores): keep config-defined vector stores listed and read-only by @devin-ai-integration[bot] in #42574
- test(integration): regression tests for August cost tracking and budgeting bugs by @devin-ai-integration[bot] in #42622
- chore(prices): sync Vertex AI prices: 2 models, 2 new [enrichment failed: Vertex AI, 224 held] by @berriai-litellm-provider-info-sync[bot] in #42589
- fix(pricing): align bedrock_mantle/openai.gpt-daybreak-blue-5.6-sol with its Bedrock model card by @devin-ai-integration[bot] in #42672
- chore(prices): sync AWS Bedrock prices: 2 models by @berriai-litellm-provider-info-sync[bot] in #42673
- chore(prices): sync AWS Bedrock prices: 11 models by @berriai-litellm-provider-info-sync[bot] in #42677
- fix(prices): align regional Bedrock Mistral Large 24.02 keys with the AWS pricing page by @devin-ai-integration[bot] in #42684
- chore(prices): sync AWS Bedrock prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42685
- test(integration): allow skipped nodes and drop the shard cap by @devin-ai-integration[bot] in #42687
- chore(prices): sync Vertex AI prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42680
- fix(policy_engine): keep inherited parent guardrails when a child policy condition misses by @devin-ai-integration[bot] in #42548
- fix(proxy): publish auth cache invalidations in the background so a wedged coordination Redis cannot stall user updates by @devin-ai-integration[bot] in #42534
- feat(otel): emit gen_ai.conversation.id from the caller's session id on v2 LLM spans by @devin-ai-integration[bot] in #42486
- ci: remove the unused create-release workflow by @devin-ai-integration[bot] in #42696
- fix(proxy): revoke UI session tokens on logout and password change by @ojensen-berri in #42463
- refactor(types): replace Any with proven types in 5 files by @devin-ai-integration[bot] in #42722
- chore(prices): sync OpenRouter prices: 19 models, 9 new [18 held] by @berriai-litellm-provider-info-sync[bot] in #42592
- fix(model_prices): add azure_ai gpt-image-2 and groq llama-guard-3-8b deprecation dates by @devin-ai-integration[bot] in #42738
- fix(proxy): validate model credential name only when it changes by @devin-ai-integration[bot] in #42701
- feat(models): add openrouter/aion-labs/aion-3.5-mini pricing by @devin-ai-integration[bot] in #42743
- test(integration): add MCP gateway coverage wave 1 with a dedicated mcp shard and proxy coverage artifact by @devin-ai-integration[bot] in #42711
- fix(ui): keep untouched stored auto-router booleans and reminder marker casing on save by @devin-ai-integration[bot] in #42703
- feat(bedrock): add gpt-6-sol and gpt-6-luna model pricing by @devin-ai-integration[bot] in #42746
- chore(ci): drop litellm_internal_staging and litellm_oss_staging references, main is the only trunk by @devin-ai-integration[bot] in #42745
- feat(cost-map): add Azure Foundry pricing for gpt-6-sol and gpt-6-luna by @devin-ai-integration[bot] in #42747
- feat(secrets): route secret resolution through native Rust backends by @devin-ai-integration[bot] in #42619
- test: deflake fuzzy picker, breached-password HIBP, and MCP stdio timeout tests (rolling deflake 2026-09-22) by @devin-ai-integration[bot] in #42125
- feat(gemini): add gemini-3.8-flash-tts and gemini-3.8-flash-lite-tts prices by @devin-ai-integration[bot] in #42752
- test(integration): regression tests for July provider translation, routing and streaming bugs by @devin-ai-integration[bot] in #42693
- test(integration): regression tests for July cost tracking, budgeting and spend bugs by @devin-ai-integration[bot] in #42694
- feat(models): add openrouter/stealth/space-bunny-alpha by @devin-ai-integration[bot] in #42759
- fix(params): stop stream_chunk_size reaching provider request bodies by @devin-ai-integration[bot] in #42664
- ci: add merge smoke checks workflow with loopback-only harness and 11 curated cases by @devin-ai-integration[bot] in #42709
- fix(completion_extras): forward non-enum reasoning_effort through the Responses bridge instead of dropping it by @devin-ai-integration[bot] in #42452
- fix(bedrock): honour stream_chunk_size in Invoke streaming by @devin-ai-integration[bot] in #42686
- fix(prices): add baseten/zai-org/GLM-5.3-Fast pricing by @devin-ai-integration[bot] in #42764
- fix(ui): keep per-user MCP credentials updatable and clearable after setup by @devin-ai-integration[bot] in #42652
- test(rust): model the blocking OCR hook as a guardrail so its raise propagates by @devin-ai-integration[bot] in #42775
- feat(guardrails): straiker guardrail speaks the v3 platform API (/api/v3/detect) by @PhimmStraiker in #41880
- fix(anthropic): preserve MCP tool results in the non-Anthropic Messages bridge by @devin-ai-integration[bot] in #42783
- test(integration): cover customer reported cache key, cache_control, bedrock request id, responses schema, scim and tag budget contracts by @devin-ai-integration[bot] in #42785
- chore(prices): sync OpenRouter prices: 2 models, 2 deprecated [20 held] by @berriai-litellm-provider-info-sync[bot] in #42756
- ci: add tests-only CircleCI pipeline with coverage and docs validation by @devin-ai-integration[bot] in #42773
- chore(prices): sync Baseten prices: 1 model by @berriai-litellm-provider-info-sync[bot] in #42771
- feat(bedrock): add bare openai.gpt-6-sol and openai.gpt-6-luna cost map rows by @devin-ai-integration[bot] in #42798
- feat(cache): add a guarded native response-cache resolver foundation by @devin-ai-integration[bot] in #42769
- feat(embeddings): add native dispatch foundation by @devin-ai-integration[bot] in #42799
- fix(mcp): return 401 challenge for REST token-exchange tool calls without a subject token by @devin-ai-integration[bot] in #42782
- fix(mcp): forward caller bearer on REST oauth_delegate tool calls by @devin-ai-integration[bot] in #42787
- feat(models): add together_ai/together/Tev1-4B-experimental by @devin-ai-integration[bot] in #42807
- chore(prices): sync Fireworks AI prices: 2 models, 2 new [2 with gaps] by @berriai-litellm-provider-info-sync[bot] in #42590
- feat(rust-bridge): extend native dispatch foundation to chat completions, responses, and messages by @devin-ai-integration[bot] in #42805
- feat(bedrock): serve the OpenAI models on bedrock-runtime's native Responses API (internal copy of #38489) by @devin-ai-integration[bot] in #42767
- fix(redis): authenticate sync clusters with IAM credential providers by @SiluPanda in #40204
- fix(proxy): apply user_api_key_cache_max_size to the key object partition by @devin-ai-integration[bot] in #42796
- fix(mcp): keep tool attribution on guardrail-blocked REST calls by @devin-ai-integration[bot] in #42790
- chore(prices): sync OpenRouter prices: 1 model [17 held] by @berriai-litellm-provider-info-sync[bot] in #42806
- fix(key_management): invalidate cached object permissions on key update by @devin-ai-integration[bot] in #36719
- docs: simplify pull request template into plain English questions by @devin-ai-integration[bot] in #42813
- test(straiker): deterministic integration audit of the v3 platform relay by @devin-ai-integration[bot] in #42781
- fix(otel): root post-response service spans in their own trace linked to the request by @devin-ai-integration[bot] in #42826
- revert: restore the full pull request template (reverts #42813) by @devin-ai-integration[bot] in #42828
- fix(ui): hide LiteAdmin in Playground and add admin preference by @tin-berri in #42755
- fix(ui): prefer native providers in auto-router presets by @tin-berri in #42639
- fix(shadow-eval): replay approved pre-call guardrail snapshots by @tin-berri in #42774
- fix(ui): show ten prompt caching requests per page by @tin-berri in #42638
- feat(lint): add LIT013 flagging *-ok suppressions that suppress nothing and remove the 240 stale ones by @devin-ai-integration[bot] in #42793
- fix(mcp): reject duplicate MCP server names and aliases by @devin-ai-integration[bot] in #42791
- feat(proxy): honor model_info.discoverable on the model listing endpoints by @devin-ai-integration[bot] in #42825
- feat(cost-map): add vertex ai llama 3.3 70b, veo 2/3, virtual try-on and 2.5 tts rows by @devin-ai-integration[bot] in #42837
- fix(proxy): gate disable_global_guardrails on keys and teams to proxy admins by @devin-ai-integration[bot] in #42699
- fix(models): sync openrouter prices from the models API by @devin-ai-integration[bot] in #42832
- feat(models): add gemini preview aliases and deep research 04-2026 rows by @devin-ai-integration[bot] in #42833
- docs(pr-template): drop empty sections from the PR body and tighten the User Flow by @devin-ai-integration[bot] in #42794
- feat(ui): configure prompt caching request rows per page by @tin-berri in #42842
- fix(ollama): read the JSON thinking field on non-streaming completions by @devin-ai-integration[bot] in #42838
- feat(models): add openai chat-latest, codex and deep-research rows from the model docs by @devin-ai-integration[bot] in #42834
- fix(proxy): document request body and response schemas for the Responses API in OpenAPI by @devin-ai-integration[bot] in #42802
- fix(models): add the June 1, 2026 retirement date to the vertex_ai gemini-2.0-flash rows by @devin-ai-integration[bot] in #42850
- fix(caching): stamp provider on sync cache-hit logs so responses spend logs record provider by @devin-ai-integration[bot] in #42830
- feat(models): add 39 together_ai chat rows priced by the Together models API by @devin-ai-integration[bot] in #42851
- chore(models): add deprecation_date to claude-mythos-preview from the Anthropic deprecations page by @devin-ai-integration[bot] in #42845
- test(integration): assert /v1/responses usage reports Anthropic system cache write then read by @devin-ai-integration[bot] in #42855
- fix(models): add the sora-2-pro shutdown date to the sora-2-pro-high-res rows by @devin-ai-integration[bot] in #42846
- feat(models): add openrouter/openai/gpt-oss-120b:batch from the OpenRouter models API by @devin-ai-integration[bot] in #42847
- feat(models): add gemini lyria-realtime-exp row inherited from lyria-3.5 by @devin-ai-integration[bot] in #42848
- feat(bedrock): add 17 aws-bedrock cost map rows from provider sync by @devin-ai-integration[bot] in #42852
- fix(models): add fireworks deprecation dates for kimi k2.6 fast, kimi k2.7 code fast and glm 5.2 fast us by @devin-ai-integration[bot] in #42849
- fix(model-catalog): declare above_32k cost fields on ModelInfo by @devin-ai-integration[bot] in #42856
- fix(model_prices): registry audit 2026-09-23, in-region Bedrock Claude prices by @devin-ai-integration[bot] in #42779
- test(integration): cover per key tag rpm limits and tag budget_duration resets by @devin-ai-integration[bot] in #42859
- fix(models): add fireworks deprecation date for glm 5.2 fast serverless rows by @devin-ai-integration[bot] in #42866
- chore(vertex_ai): add deprecation dates for retired claude 3 and jamba 1.5 partner models by @devin-ai-integration[bot] in #42867
- test(integration): assert /v1/models reports max_input_tokens and max_output_tokens by @devin-ai-integration[bot] in #42858
- fix(fireworks_ai): route firerouter short names and bill pass-through legs at the routed model's rates by @devin-ai-integration[bot] in #42814
- fix(models): add azure gpt-4o-mini-transcribe and gpt-4o-mini-tts deprecation dates by @devin-ai-integration[bot] in #42873
- fix(models): add openai deprecation date for gpt-5-chat-latest and gpt-5-chat by @devin-ai-integration[bot] in #42872
- fix(models): add fireworks 2026-09-25 deprecation dates for glm 5.2, kimi k2.6, kimi k2.7 code, deepseek v4 and muse glimmer rows by @devin-ai-integration[bot] in #42874
- fix(model_prices): bedrock bare Claude ids priced at the Global SKU (aws-bedrock sync) by @devin-ai-integration[bot] in #42875
- feat(cost-map): add retired azure gpt-5 chat and o1-preview data zone rows by @devin-ai-integration[bot] in #42878
- fix(models): correct gemini robotics er 2 preview audio input price by @devin-ai-integration[bot] in #42877
- feat(vertex_ai): add gemini-3.8-flash-cyber pricing by @devin-ai-integration[bot] in #42879
- fix(presidio): stream non-Anthropic raw SSE through the post_call hook unbuffered by @devin-ai-integration[bot] in #42777
- fix(cost-map): halve openrouter deepseek-v4-flash-0731 output price by @devin-ai-integration[bot] in #42881
- fix(cost-map): sync vertex-ai deprecation dates from Vertex model lifecycle pages by @devin-ai-integration[bot] in #42882
- fix(cost-map): add azure gpt-realtime-mini deprecation date by @devin-ai-integration[bot] in #42883
- fix(models): correct fireworks kimi k3 us pricing to the published rate by @devin-ai-integration[bot] in #42884
- fix(cost-map): add azure gpt-realtime-mini-2025-10-06 deprecation date by @devin-ai-integration[bot] in #42885
- fix(logging): scan the exceeded budget wording linearly so a crafted error message cannot stall the proxy by @devin-ai-integration[bot] in #42778
- fix(proxy): keep deployment labels on cache-hit post_call guardrail rejections by @devin-ai-integration[bot] in #42780
- fix(proxy): do not requeue a daily spend batch whose commit already left for postgres by @devin-ai-integration[bot] in #42786
- fix(cost-map): sync openrouter prices and add fireworks ember-1 by @devin-ai-integration[bot] in #42889
- fix(cost-map): source and chat completions endpoint for bedrock mantle gpt-5.4 and gpt-5.5 by @devin-ai-integration[bot] in #42890
- feat(cost-map): add vertex_ai/gemini-3.8-live by @devin-ai-integration[bot] in #42891
- fix(passthrough): log upstream 4xx/5xx error bodies and carry them into the failure hook by @devin-ai-integration[bot] in #42695
- test(integration): add read-replica routing harness to the CircleCI integration suite by @devin-ai-integration[bot] in #42692
- fix(s3_v2): bound concurrent S3 uploads per flush and add opt-in JSONL batch files by @devin-ai-integration[bot] in #41258
- fix(cost-map): source for bedrock mantle gpt-5.6 luna, sol, terra and grok-4.6 by @devin-ai-integration[bot] in #42898
- test(integration): edge-case matrices for malformed token limits and callback_settings shapes by @yuneng-berri in #42895
- fix(cost-map): add azure deprecation dates for gpt-6 and gpt-realtime-whisper by @devin-ai-integration[bot] in #42897
- feat(cost-map): add wandb DeepSeek-V4.1-Flash and gemma-4-26B-A4B-it by @devin-ai-integration[bot] in #42924
- fix(cost-map): update openrouter kimi-k2.7-code input price by @devin-ai-integration[bot] in #42932
- fix(cost-map): add azure deprecation dates for regional gpt-6 rows by @devin-ai-integration[bot] in #42933
- chore(techdebt): clear fresh tech debt from the last 24 hours (rolling, 2026-09-06 to 2026-09-24) by @devin-ai-integration[bot] in #42710
- fix(cost-map): sync vertex-ai rows (gemma 4 maas cache price, chirp_2) by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42942
- feat(bedrock): add gpt-5.4 and gpt-5.5 us and global inference profile pricing by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42941
- fix(cost-map): update azure gpt-4.1-nano and gpt-4o-2024-05-13 retirement dates by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42947
- fix(proxy): list key and team model aliases in GET /v1/models by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42908
- fix(cost-map): sync openrouter prices for deepseek v4 and glm-5.3 by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42952
- fix(cost-map): add batch prices for vertex gemini-3.8-flash-cyber by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42953
- fix(cost-map): add azure realtime, audio and partner model rows by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42954
- fix(cost-map): sync openrouter deepseek-v4-pro prices by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42956
- fix(cost-map): sync openrouter deepseek-v4-pro prices by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42964
- fix(proxy): fail parked DB lookups at a deadline and flip readiness while they stall by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42654
- fix(cost-map): sync openrouter deepseek-v4-pro prices by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42969
- feat(cost-map): sync azure models, add MAI-Image-2.6, deepseek-v4.1-flash, muse-spark-1.3 by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42970
- fix(bedrock): extrapolate global cris pricing for gpt-5.4 and gpt-5.5 by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42971
- fix(cost-map): sync openrouter deepseek v4 flash, v4 pro and v4.1 flash prices by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42974
- refactor(types): replace Any with proven types in 13 files by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42937
- fix(cost-map): sync openrouter deepseek-v4-pro prices by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42978
- fix(cost-map): add vertex ai priority audio input prices for gemini flash rows by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42980
- feat(rust_bridge): stamp x-litellm-rust on native sync and async streams at the bridge boundary by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42758
- feat(azure): add gpt-audio and gpt-realtime alias rows from the Azure model list by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42981
- fix(cost-map): align openrouter deepseek-v4-pro cache hit price with cache read by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42985
- fix(cost-map): take the later azure deprecation date for gpt-4.1-nano, gpt-4o-transcribe and gpt-realtime-2.1 by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42986
- fix(cost-map): add supports_reasoning to azure/eu/gpt-6-astra by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42989
- fix(mcp): reject origins outside the configured allowlist by @joshua-berri in https://github.com/BerriAI/litellm/pull/42649
- fix(cost-map): drop stale cache_hit field from openrouter deepseek-v4-pro by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42994
- fix(cost-map): add vertex cache read, batch and above 200k prices for gemini image preview rows by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42995
- test(ollama): assert the images sent to Ollama instead of echoing them through response by @yuneng-berri in https://github.com/BerriAI/litellm/pull/42905
- fix(ui): pass is_proxy_admin for proxy admins on the models page team drill-in by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43003
- test(e2e/ui): give the logout specs their own admin session by @yuneng-berri in https://github.com/BerriAI/litellm/pull/42930
- fix(azure): update gpt-audio-mini and gpt-5-chat deprecation dates from the retirement schedule by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43017
- test(vertex_ai): run the files peak-memory guards without coverage tracing by @yuneng-berri in https://github.com/BerriAI/litellm/pull/42914
- test(mcp): stop a comprehension variable from shadowing the body() helper by @yuneng-berri in https://github.com/BerriAI/litellm/pull/42906
- test(mcp): patch create_mcp_server_if_identifier_free in the store-model-in-db MCP tests by @yuneng-berri in https://github.com/BerriAI/litellm/pull/42916
- test(guardrails): run the cache-hit redis outage test on the shared owned_redis helper by @yuneng-berri in https://github.com/BerriAI/litellm/pull/42925
- feat(rust): shape Anthropic Messages requests natively by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42982
- fix(prometheus): add model_group label to deployment request and rate limit metrics by @ahamedshaik16 in https://github.com/BerriAI/litellm/pull/42966
- fix(cost-map): add the Vertex shutdown date to gemini-2.5-flash-native-audio by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43024
- feat(vertex): native batch JSONL passthrough with cost tracking by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42810
- fix(logging): pass provider response headers to callbacks on every endpoint by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42824
- feat(usage): search keys beyond the top-N usage subset by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42827
- feat(usage): search team keys beyond the top-N in the Team usage view by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42857
- fix(bedrock): route unmapped openai family model ids to converse by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42713
- refactor(rust): move tests.rs files inline or under tests/ and drop autotests = false by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43028
- fix(cost-map): add video and reasoning output prices to vertex gemini-omni-1.1-flash by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43036
- feat(proxy): server-side Team Usage export beyond the top-N key cap by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42996
- fix(proxy): stop leaking periodic tasks on every DB config reload by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42784
- chore(cost-map): add azure deprecation dates from the Models API for five realtime and transcribe rows by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43037
- fix(proxy): pass team member spend rows as jsonb so a $0 flush cannot poison the pool connection by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/43029
- fix(vertex_ai): keep batch output_file_id null until Vertex reports outputInfo by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43030
- fix(playground): stop following streamed tokens, add jump to bottom button by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42968
- fix(cost-map): drop the priority input price from vertex gemini-2.5-flash-image by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43050
- feat(compat-matrix): resolve and install the Claude Code CLI per run by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43038
- test(e2e/ui): hide the LiteAdmin button in the shared admin session by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43033
- ci: fix the litellm-tests unit job (sysmon, codecov on failure, env -i allowlist, selection errors, reruns param) by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42900
- test: take keys out of the legacy proxy, enterprise and mcp unit tests before moving them by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42901
- feat(terraform): add display_name to litellm_model resource and model data sources by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42987
- feat(proxy_cli): add --validate_config dry-run flag by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/41705
- fix(e2e): skip unpublished npm versions in the Claude Code PR-gate resolver by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43053
- chore(cost-map): move azure gpt-realtime-2.1-mini deprecation date to the later Models API date by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43058
- docs(github): require UI before/after screenshots and intentional UX change note in PR template by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43021
- ci: move caching, proxy-extras, gateway and enterprise tests into tests/unit and run them from litellm-tests by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42902
- feat(proxy): let callbacks filter the model listing routes per caller by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43027
- ci: move tests/proxy_unit_tests to tests/unit/proxy and run the proxy-db shards from litellm-tests by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42903
- ci: move provider-independent MCP tests into tests/unit and run mcp-integration from litellm-tests by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42904
- fix(vertex_ai): translate /v1/responses batch rows through the Responses-to-Chat bridge by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43042
- fix(cost-map): add vertex priority prices for gemini-3-pro-image-preview and batch price for gemini-embedding-001 by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43069
- feat(agents): add optional per-agent kill switch webhook by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42841
- fix(proxy): stop /utils/transform_request from calling the provider and blocking the event loop by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/33954
- fix(ui): explain unbackfilled key lifetime spend and ship a backfill script by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42967
- chore(cost-map): add video input price to gemini 3.8 live rows by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43073
- fix(cost-map): drop cache read price from vertex gemini-2.5-flash-image by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43078
- docs(e2e): carve harness tests out of the no-unit-tests hard rule by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43076
- fix(mcp): cap an agent key's tools at what the invoking user and team may call by @yassin-berriai in https://github.com/BerriAI/litellm/pull/42478
- feat(spend): capture-rate check of LiteLLM spend against the OpenAI bill by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43044
- ci: run the claude_code harness unit-test trees in the lint job by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43077
- fix(cost-map): sync openrouter deepseek v4 and glm-5.3-flash prices, add mistral-large-2512 by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43090
- feat(cost-map): add fireworks glm-5p3 US-only rows and kimi-k3-us priority prices by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43092
- feat(ui): offer reset of custom member budgets when team default changes by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42835
- fix(router): serve Responses turns from a sibling when the encrypted content origin has no boundary peer by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43015
- chore(cost-map): sync gemini priority, flex and video token prices from the Gemini API pricing page by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43091
- feat(cost-map): add fireworks deepseek-v4p1-flash US-only rows by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43097
- fix(router): match provider-prefixed fallback keys for bare model groups served by wildcard deployments by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43062
- fix(bedrock): map Anthropic batch row params the way real time does by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43087
- feat(ui): make the audit log detail drawer wider and resizable by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42808
- feat(proxy): enforce tpm_limit and rpm_limit set on tag objects by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/41807
- feat(rust_bridge): read secrets through Python from Rust routes and declare Rust-only routes with NO_PYTHON by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43057
- refactor(ocr): remove the Python OCR execution path and require the Rust route by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43081
- fix(spend): attribute CLI session spend to the per-user cli-session alias instead of the hashed session token by @mateo-berri in https://github.com/BerriAI/litellm/pull/40541
- test(e2e): pin end-user and tag attribution from Codex-style headers on /v1/responses by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43093
- fix(vertex_ai): return chunk content, extractive text, and structData from search_api vector store hits by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43100
- feat(lint): cap comprehensions at one for and one if clause (LIT014) by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42650
- chore(cost-map): add openai deprecation dates from the deprecations page by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43102
- chore(cost-map): add gemini tts batch output prices from the Gemini API pricing page by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43103
- feat(proxy): let team admins update member key budgets when enabled by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42555
- fix(vertex_ai): surface the Gemma container's own error inside a 200 :predict response by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43075
- chore(cost-map): add azure retirement dates from the retired Foundry models page by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43104
- fix(fal_ai): price nano-banana-2 and nano-banana-pro image generations by resolution by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43101
- chore(cost-map): add computer-use-preview deprecation date from the openai deprecations page by @berriai-litellm-provider-info-sync[bot] in https://github.com/BerriAI/litellm/pull/43116
- fix(proxy): authorize key model aliases the same way as team aliases by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43049
- chore(cost-map): add azure retirement dates for command-r-plus and gpt-4 by @berriai-litellm-provider-info-sync[bot] in https://github.com/BerriAI/litellm/pull/43117
- fix(vertex_ai): stop advertising OpenAI platform-only params on Gemma and Llama routes by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43079
- fix(router): honor disable_fallbacks on mid-stream fallback by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43111
- refactor(types): declare litellm-owned kwargs as typed objects and derive the lists from their fields by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42843
- chore: bump litellm-enterprise 0.1.70 -> 0.1.71, litellm-proxy-extras 0.4.101 -> 0.4.102 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43120
- fix(cost): apply a deployment's pricing override to realtime sessions by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43114
- refactor(rust): extract the host coroutine into its own crate by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43129
- chore(cost-map): add together-ai deprecation dates for gpt-oss-20b and gemma-4-31B-it by @berriai-litellm-provider-info-sync[bot] in https://github.com/BerriAI/litellm/pull/43127
- feat(mcp): allow ["*"] wildcard in mcp_tool_permissions to grant all current and future tools by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43108
- ci: cut rc/<X.Y.0> off main every Friday at 3am Pacific by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43121
- fix(anthropic): keep the replayed prefix byte-stable for preserved thinking on chat completions by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/42630
- feat(providers): add Nadir intelligent-router provider (nadir/auto) by @doramirdor in https://github.com/BerriAI/litellm/pull/33227
- fix(together_ai): backfill deprecation_date from Together deprecation history by @berriai-litellm-provider-info-sync[bot] in https://github.com/BerriAI/litellm/pull/43135
- test(e2e): cover Azure code_interpreter container files by native id with a service-account key by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43122
- fix(router): await budget redis pipeline before sync reads (internal copy of #32618) by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43125
- chore(cost-map): add openai cached image input prices from the pricing page by @berriai-litellm-provider-info-sync[bot] in https://github.com/BerriAI/litellm/pull/43143
- feat(langfuse)!: migrate the sdk callback to langfuse v4 by @yucheng-berri in https://github.com/BerriAI/litellm/pull/36741
- fix(key_management): count team unified access group MCP servers when validating key MCP grants by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/41231
- fix(ui): group cost optimization cache leakage by model group by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43008
- fix(presidio): mask streamed /v1/messages output when the first upstream read is a keepalive, a data-less ping, or a split utf8 character by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/43023
- test: backport stale and state-leaking test fixes to rc/1.104.0 (#43266) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43267
- chore: backport CI fixes, #43206 and Rust changes to rc/1.104.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43338
- fix(s3_v2): backport #43022 to rc/1.104.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43354
- chore: rebuild Admin UI bundle for rc/1.104.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43372
- chore: backport CircleCI speedups (#43347) and cost-map fixes (#42951) to rc/1.104.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43366
- revert(usage): remove the top-N key cap, its follow-ups and the daily global spend rollup code from rc/1.104.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43385
- fix(streaming): backport text-completion usage chunk fix (#43047) to rc/1.104.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43402
- test(e2e): report batch cleanup leftovers as a plain UserWarning on rc/1.104.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43406
- test(e2e): skip the LangSmith batch serialization e2e on rc/1.104.0 until CI has a LangSmith key by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43418
- test(unit): stop test modules from putting their own directory on sys.path on rc/1.104.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43420
- fix(proxy): unregister logging callbacks removed from the stored config on rc/1.104.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43432
- chore(release): sync rc/1.104.0 to v1.104.0-rc.2 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/43825
- fix(proxy): backport #43962 to rc/1.104.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/44054
- chore(release): backport #43948, #44109, #44124 to rc/1.104.0 by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/44156
- revert: backport of #43948, #44109, #44124 to rc/1.104.0 (#44156) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/44212
- chore(release): backport #44066 to rc/1.104.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/44216
- fix(proxy): enforce the migration check by default and stop building SpendLogs indexes in migrations (rc/1.104.0) by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/44206
- chore: bump litellm-proxy-extras to 0.4.102.post1 by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/44224
- test(integration): opt the config pass-through spend-log case into auth (rc/1.104.0 backport of #44265) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/44267
- test: fix three order-dependent and timing-flaky tests (rc/1.104.0 backport of #44271) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/44280
- chore(release): backport #44277 to rc/1.104.0 and bump oauthlib by @yuneng-berri in https://github.com/BerriAI/litellm/pull/44304
- chore(release): backport #44283 and part of #44229 to rc/1.104.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/44312
- chore(release): backport part of #43902 and #43983 to rc/1.104.0 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/44332
- fix(proxy-extras): keep the post-migration sanity check from building the hand-built SpendLogs indexes by @yuneng-berri in https://github.com/BerriAI/litellm/pull/44397
New Contributors
- @chopratejas made their first contribution in #41560
- @Zechereh made their first contribution in #41099
- @philschmid made their first contribution in #42465
- @patel-26meet made their first contribution in #39311
- @togear made their first contribution in #41033
- @Pawan-Shahane made their first contribution in #41979
- @SiluPanda made their first contribution in #40204
- @ahamedshaik16 made their first contribution in https://github.com/BerriAI/litellm/pull/42966
- @doramirdor made their first contribution in https://github.com/BerriAI/litellm/pull/33227
Full Changelog: v1.103.0...v1.104.0