Skip to main content
LiteLLM is moving to Rust Read the latest updates.

LiteLLM v1.104.6 changes the image-signing key and fixes cost tracking

Deploy this version​

docker run \
-e LITELLM_MASTER_KEY=sk-<paste-a-long-random-key> \
-e DATABASE_URL=postgresql://<user>:<password>@<host>:5432/<dbname> \
-e STORE_MODEL_IN_DB=True \
-p 4000:4000 \
docker.litellm.ai/berriai/litellm:1.104.6

This release is published as ghcr.io/berriai/litellm:v1.104.6. See the GitHub release and the full releases page

v1.104.6 is a patch release on top of v1.104.5. It moves image signing to a new cosign key, removes the eMudhra root CA from every certificate bundle, and backports cost tracking, token counting and tool call fixes from main onto stable/1.104.x. There are no new database migrations. The v1.104.6 tag points at 4a8940a

The image-signing key has changed

Starting with this release, every Docker image and Helm chart is signed with the cosign key from commit e82a3c6. Verifying with the previous key from commit 0112e53 fails. Update anything that pins the old cosign.pub, such as cosign verify scripts, CI checks and admission policies.

cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/e82a3c646908ba0a6ee0beddc4310d7a6cac4065/cosign.pub \
ghcr.io/berriai/litellm:v1.104.6

Key Highlights​

  • New image-signing key: Docker images and Helm charts are signed with the cosign key from commit e82a3c6, and every certificate bundle drops the eMudhra root CA
  • Cost tracking: failed, timed-out, cancelled and spilled-over requests are priced correctly, and batch cost tracking is fixed
  • Tool calls: gpt-5.4+ models bridged to /responses return tool calls on choices[0] again

Image signing and certificates​

  • Every certificate bundle the SDK, proxy and Docker images trust no longer includes the eMudhra root CA - PR #47670, PR #47969
  • Docker images and Helm charts are signed with the cosign key from commit e82a3c6. The previous key from commit 0112e53 no longer verifies them - PR #48103

New Models / Updated Models​

Bug Fixes​

  • Azure
    • Azure AI Foundry no longer returns 400 when the client sends the dangerous-tool-use-2026-09-03 beta - PR #43934

LLM API Endpoints​

Bugs​

  • Chat completions
    • Tool calls from gpt-5.4+ models land on choices[0] again instead of choices[1]. This started in v1.97.0 - PR #46099
  • Messages API
    • /v1/messages streams no longer hold message_start for minutes during adaptive thinking on Bedrock and Vertex. This started in v1.100.0 - PR #43600
  • Token counting
    • DeepSeek and Qwen3.5 token counts on the count endpoints no longer run up to 30% low or twice too high - PR #47685
    • /v1/messages/count_tokens returns HTTP 400 instead of a known-wrong local estimate - PR #47705
  • Caching
    • Automatic prompt caching no longer adds extra cache marks on /v1/messages when extra_body overrides a client mark - PR #43341

Spend Tracking, Budgets and Rate Limiting​

  • The Usage API no longer times out while looking up names for busy hashed keys - PR #43656
  • Streamed requests through a model alias bill the deployment's price instead of $0. This started in v1.92.0 - PR #44341
  • Large non-streaming chat requests to openai/responses/* models log and charge spend once instead of twice. This started in v1.102.0 - PR #44508
  • Failed, timed-out, cancelled and spilled-over requests are priced correctly instead of wrong or not at all - PR #47718
  • Batch cost tracking, claude-haiku-5-5 and Bedrock profile pricing, and safeguards requests on /v1/messages are fixed - PR #47726

Management Endpoints / UI​

Bugs​

  • Usage reports show the owner of CLI session keys even when spend logs are off or purged - PR #43642, PR #47805

These fixes and the version bump are backported in PR #47802 and PR #48076

PR roll-up by ownership area​

  • Spend / Budgets / Rate Limits: 5
  • LLM API Endpoints: 5
  • Other: 3
  • UI: 2
  • Models & Providers: 1

Full Changelog​

https://github.com/BerriAI/litellm/compare/v1.104.5...v1.104.6