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.83.3-stable
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.83.3-stable/cosign.pub \ ghcr.io/berriai/litellm:v1.83.3-stable
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(anthropic): preserve thinking.summary when routing to OpenAI Responses API by @Chesars in #21441
- docs: add thinking.summary field to /v1/messages and reasoning docs by @Chesars in #22823
- fix(gemini): resolve image token undercounting in usage metadata by @gustipardo in #22608
- feat(anthropic): add opt-out flag for default reasoning summary by @Chesars in #22904
- fix(anthropic): align translate_thinking_for_model with default summary injection + docs by @Chesars in #22909
- Fix: Vertex ai Batch Output File Download Fails with 500 by @Sameerlite in #23718
- docs(blog): add WebRTC blog post link by @Sameerlite in #23547
- Refactor: Filtering beta header after transformation by @Sameerlite in #23715
- fix(streaming): preserve custom attributes on final stream chunk by @Sameerlite in #23530
- [Feat] Add create character endpoints and other new videos Endpoints by @Sameerlite in #23737
- Litellm oss staging 03 14 2026 by @RheagalFire in #23686
- fix: align DefaultInternalUserParams Pydantic default with runtime fallback by @ryan-crabbe in #23666
- [Test] UI Dashboard - Add unit tests for 5 untested files by @yuneng-jiang in #23773
- [Infra] Merging RC Branch with Main by @yuneng-jiang in #23786
- [Fix] Privilege Escalation on /key/block, /key/unblock, and /key/update max_budget by @yuneng-jiang in #23781
- chore(ui): migrate DefaultUserSettings buttons from Tremor to antd by @ryan-crabbe in #23787
- fix: set oauth2_flow when building MCPServer in _execute_with_mcp_client by @joereyna in #23468
- [Fix] UI - Logs: Empty Filter Results Show Stale Data by @yuneng-jiang in #23792
- Litellm update blog posts rss by @ryan-crabbe in #23791
- [Fix] Prevent Internal Users from Creating Invalid Keys by @yuneng-jiang in #23795
- [Fix] Key Alias Re-validation on Update Blocks Legacy Aliases by @yuneng-jiang in #23798
- fix: Register DynamoAI guardrail initializer and enum entry by @Harshit28j in #23752
- docs: add v1.82.3 release notes by @joereyna in #23816
- Revert "docs: add v1.82.3 release notes" in #23817
- fix(fireworks): skip #transform=inline for base64 data URLs by @awais786 in #23729
- fix(langsmith): avoid no running event loop during sync init by @pandego in #23727
- [Feature] Disable Custom Virtual Key Values via UI Setting by @yuneng-jiang in #23812
- fix(gemini): support images in tool_results for /v1/messages routing by @awais786 in #23724
- fix(ui): CSV export empty on Global Usage page by @ryan-crabbe in #23819
- fix: langfuse trace leak key on model params by @Harshit28j in #22188
- [Infra] Merge personal dev branch with daily dev branch by @yuneng-jiang in #23826
- fix(model-prices): correct supported_regions for Vertex AI DeepSeek models by @Chesars in #23864
- fix(model-prices): restore gpt-4-0314 by @Chesars in #23753
- fix(cache): Fix Redis cluster caching by @cohml in #23480
- Revert "fix: langfuse trace leak key on model params" by @yuneng-jiang in #23868
- [Infra] Merge daily dev branch with main by @yuneng-jiang in #23827
- Litellm ryan march 16 by @ryan-crabbe in #23822
- fix(proxy): convert max_budget to float when set via environment variable by @rstar327 in #23855
- [Test] UI: Add unit tests for 10 untested components by @yuneng-jiang in #23891
- Add Akto Guardrails to LiteLLM by @rzeta-10 in #23250
- fix(core): map Anthropic 'refusal' finish reason to 'content_filter' by @Chesars in #23899
- fix(vertex): streaming finish_reason='stop' instead of 'tool_calls' for gemini-3.1-flash-lite-preview by @Chesars in #23895
- [Fix] Add contents:write permission to ghcr_deploy release job by @yuneng-jiang in #23917
- [Infra] bump: version 1.82.3 → 1.82.4 by @yuneng-jiang in #23919
- docs(mcp_zero_trust): add MCP zero trust auth guide by @ishaan-jaff in #23918
- Capture incomplete terminal error in background streaming by @xianzongxie-stripe in #23881
- fix: cache_control directive dropped anthropic document/file blocks by @kelvin-tran in #23911
- [Infra] Security and Proxy Extras for Nightly by @yuneng-jiang in #23921
- fix: map Chat Completion file type to Responses API input_file by @gambletan in #23618
- fix(vertex): respect vertex_count_tokens_location for Claude count_tokens by @Chesars in #23907
- fix(anthropic): preserve cache directive on file-type content blocks by @Chesars in #23906
- fix(mistral): preserve diarization segments in transcription response by @Chesars in #23925
- fix(gemini): pass model to context caching URL builder for custom api_base by @Chesars in #23928
- fix(azure): auto-route gpt-5.4+ tools+reasoning to Responses API by @Chesars in #23926
- fix: auto-recover shared aiohttp session when closed by @voidborne-d in #23808
- [Feature] /v2/team/list: Add org admin access control, members_count, and indexes by @yuneng-jiang in #23938
- [Refactor] UI - Playground: Extract FilePreviewCard from ChatUI by @yuneng-jiang in #23973
- docs: add v1.82.3 release notes by @joereyna in #23820
- fix(proxy): model-level guardrails not executing for non-streaming post_call by @michelligabriele in #23774
- fix(proxy): prevent duplicate callback logs for pass-through endpoint failures by @michelligabriele in #23509
- docs: Revamp documentation site with new navigation, landing pages, and styling by @Arindam200 in #24023
- Fix langfuse otel traceparent propagation by @jyeros in #24048
- [Test] UI: Add unit tests for 10 untested components by @yuneng-jiang in #24036
- [Fix] UI - Logs: Guardrail Mode Type Crash on Non-String Values by @yuneng-jiang in #24035
- [Staging] - Ishaan March 17th by @ishaan-jaff in #23903
- [Infra] Merge daily branch with main by @yuneng-jiang in #24055
- [Fix] UI - Default Team Settings: Add Missing Permission Options by @yuneng-jiang in #24039
- fix: /key/block and /key/unblock return 404 (not 401) for non-existent keys by @yuneng-jiang in #23977
- [Refactor] UI - Playground: Extract ChatMessageBubble from ChatUI by @yuneng-jiang in #24062
- [Fix] Key Update Endpoint Returns 401 Instead of 404 for Nonexistent Keys by @yuneng-jiang in #24063
- fix: surface Anthropic code execution results as code_interpreter_call in Responses API by @andrzej-pomirski-yohana in #23784
- [Feature] UI - Leftnav: Add external link icon to Learning Resources by @yuneng-jiang in #24069
- Fix thinking blocks dropped when thinking field is null by @xr843 in #24070
- Preserve router model_group in generic API logs by @emerzon in #24044
- Fix/proxy only failure call type by @alilxxey in #24050
- fix(langsmith): populate usage_metadata in outputs for Cost column by @themavik in #24043
- Fix model repetition detection performance by @hytromo in #18120
- fix: fix logging for response incomplete streaming + custom pricing on /v1/messages and /v1/responses in #24080
- docs: add Contributing to Guardrails section to Guardrail Providers sidebar in #24083
- chore: regenerate poetry.lock to unblock CI (pyproject.toml content hash drift) by @joereyna in #24082
- fix(openai): handle missing 'id' field in streaming chunks for MiniMax by @chengyongru in #23931
- merge main by @Sameerlite in #24119
- Ishaan - March 18th changes by @ishaan-jaff in #24056
- [Test] UI: Add vitest coverage for 10 untested components by @yuneng-jiang in #24144
- chore: apply black formatting to fix lint CI by @joereyna in #24092
- feat(proxy): use AZURE_DEFAULT_API_VERSION for proxy --api_version default by @Sameerlite in #24120
- chore: apply black formatting to fix lint CI (batch 2) by @joereyna in #24153
- [Refactor] UI - API Reference: Migrate to Path-Based Routing by @yuneng-jiang in #24155
- chore: add poetry check --lock to lint CI to prevent stale lockfile merges by @joereyna in #24159
- [Infra] Merge daily internal branch with main by @yuneng-jiang in #24150
- chore: apply black formatting to proxy/_types.py to fix lint CI by @joereyna in #24167
- docs: add LiteLLM license key environment variable instructions in #24168
- fix(proxy): defer logging until post-call guardrails complete by @michelligabriele in #24135
- Litellm oss staging 03 18 2026 in #24081
- Add IF NOT EXISTS to index creation in migration by @superpoussin22 in #24105
- fix(proxy): kill orphaned prisma engine subprocess on failed disconnect by @michelligabriele in #24149
- chore: apply black formatting to fix lint CI (batch 3) by @joereyna in #24173
- docs(release-notes): complete v1.82.3 changelog with full PR audit by @joereyna in #24090
- fix: short-circuit websearch for github_copilot provider by @johnib in #24143
- feat(anthropic): support ANTHROPIC_AUTH_TOKEN and ANTHROPIC_BASE_URL env vars by @devin-petersohn in #24140
- chore: apply black formatting and enable black pre-commit hook by @joereyna in #24187
- merge main 0319 by @Sameerlite in #24188
- fix: upgrade mcp to 1.26.0 and bump version to 1.82.5 by @joereyna in #24179
- fix: resolve recursion in OVHCloud get_supported_openai_params by @themavik in #24118
- [Fix] UI: AntD Messages Not Rendering by @yuneng-jiang in #24192
- [Feature] UI - Teams: Modernize Teams Table by @yuneng-jiang in #24189
- [Refactor] Extract useChatHistory hook from ChatUI.tsx by @yuneng-jiang in #24172
- feat: add proxy-wide default api key tpm/rpm limits by @ephrimstanley in #24088
- Day 0: gpt 5.4 mini and nano support by @Sameerlite in #23958
- [feat]Add prompt management support for responses api by @Sameerlite in #23999
- docs(vertex): add PayGo/Priority tutorial and cost tracking flow diagramLitellm vertex paygo tutorial by @Sameerlite in #24009
- feat(file_search): align emulated Responses behavior with native output by @Sameerlite in #23969
- fix(proxy): pass-through subpath auth for non-admin users by @Sameerlite in #24079
- fix(polling): check rate limits before creating polling ID by @Sameerlite in #24106
- docs: note min version for encrypted_content_affinity by @milan-berri in #23854
- feat(router): add per-model-group deployment affinity by @Sameerlite in #24110
- Litellm fix ensure alternating roles by @Sameerlite in #24015
- fix(bedrock): respect api_base and aws_bedrock_runtime_endpoint in count_tokens endpoint by @stias in #24199
- fix(gemini-embeddings): convert task_type to camelCase taskType for Gemini API by @christopherbaer in #24191
- fix(vertex-ai): support batch cancel via Vertex API by @Sameerlite in #23957
- fix(azure-ai-agents): preserve annotations in Bing Search grounding responses by @Sameerlite in #23939
- fix(logging): merge hidden_params into metadata for streaming requests by @milan-berri in #24220
- docs(pricing): add official source links for Azure DeepSeek & Cohere … by @Jayachander123 in #20181
- fix(transcription): fix cost_per_second calculation for audio transcription models by @gvioss in #23842
- fix(moonshot): preserve reasoning_content on Pydantic Message objects in multi-turn tool calls by @BillionClaw in #23828
- fix(proxy): add team_member_budget_duration to NewTeamRequest by @michelligabriele in #23484
- [Feature] Team MCP Server Manager Role by @yuneng-jiang in #24171
- [Docs] Add missing team_member_budget_duration param to new_team docstring by @yuneng-jiang in #24243
- feat: add control plane for multi-proxy worker management by @ryan-crabbe in #24217
- Revert "[Feature] Team MCP Server Manager Role" by @yuneng-jiang in #24255
- fix(test): mock get_auth_header instead of get_api_key in anthropic file content test by @joereyna in #24258
- [Infra] Merge internal dev branch with main by @yuneng-jiang in #24260
- [Feature] Add Audit Log Export to External Callbacks by @yuneng-jiang in #23167
- fix(adapter): add additionalProperties: false for OpenAI strict mode in Anthropic adapter by @Chesars in #24072
- feat(gemini): support context circulation for server-side tool combination by @Chesars in #24073
- feat(bedrock): support cache_control_injection_points for tool_config location by @Chesars in #24076
- Revert "fix(transcription): fix cost_per_second calculation for audio transcription models" by @Sameerlite in #24297
- Litellm fix create key tags dropdown by @ryan-crabbe in #24273
- Litellm oss staging 03 19 2026 in #24174
- docs: add Gemini/Vertex AI prompt caching support to docs in #24222
- fix: global secret redaction via root logger + key-name-based pattern matching by @ryan-crabbe in #24305
- polish: add click-to-copy icon on User ID in internal users table by @ryan-crabbe in #24315
- polish: remove required asterisks from v3 login form fields by @ryan-crabbe in #24318
- Litellm ishaan march 20 by @ishaan-jaff in #24303
- fix(fireworks): skip #transform=inline for base64 data URLs (#23729) in #23818
- fix(proxy): restore per-entity breakdown in aggregated daily activity endpoint by @michelligabriele in #23471
- Litellm oss staging 03 05 2026 in #22844
- Litellm dev sameer 16 march week by @Sameerlite in #24211
- litellm ryan march 20 by @ryan-crabbe in



![[Patterns] AI Agent Error Handling That Actually Works](/_next/image?url=https%3A%2F%2Fmedia2.dev.to%2Fdynamic%2Fimage%2Fwidth%3D1200%2Cheight%3D627%2Cfit%3Dcover%2Cgravity%3Dauto%2Cformat%3Dauto%2Fhttps%253A%252F%252Fdev-to-uploads.s3.amazonaws.com%252Fuploads%252Farticles%252Frn5czaopq2vzo7cglady.png&w=3840&q=75)