What's Changed
- security: fix critical/high CVEs in OS-level libs and NPM transitive by @Harshit28j in #22008
- feat(proxy): limit concurrent health checks with health_check_concurrency by @MarshHawk in #20584
- fix(bedrock): pass timeout param to bedrock rerank http client by @ishaan-jaff in #22021
- [Fix] UI - Virtual Keys: restrict Edit Settings to key owners by @yuneng-jiang in #21985
- feat(prometheus): opt-in stream label on litellm_proxy_total_requests_metric by @ishaan-jaff in #22023
- fix(router): emit x-litellm-overhead-duration-ms header for streaming requests by @ishaan-jaff in #22027
- [Feat] OpenAI codex 5.3 day 0 support by @Sameerlite in #22035
- docs: update v1.81.12-stable release notes to point to stable.1 by @ishaan-jaff in #22036
- [Infra] Add Spend Tracking Lifecycle Logging by @yuneng-jiang in #22029
- perf: skip throwaway Usage() construction in ModelResponse.init by @ryan-crabbe in #21611
- perf: optimize is_model_o_series_model with startswith by @ryan-crabbe in #21690
- fix: dead code cleanup in MCP server error handler by @ryan-crabbe in #20032
- perf: use cached _safe_get_request_headers instead by @ryan-crabbe in #21430
- [Test] UI - Unit Testing Coverage: Router Settings by @yuneng-jiang in #22043
- feat(proxy): tool policies - auto-discover tools + policy enforcement guardrail by @ishaan-jaff in #22041
- fix: add cache invalidation for _cached_get_model_group_info by @ryan-crabbe in #20376
- docs: add trailing slash to /mcp endpoint URLs by @ryan-crabbe in #20509
- [Feat] UI - Allow using AI to understand Usage patterns by @ishaan-jaff in #22042
- fix: add prompt_cache_key and prompt_cache_retention support for OpenAI by @ryan-crabbe in #20397
- [Feature] UI - Virtual Keys: Add KeyInfoHeader component by @yuneng-jiang in #22047
- healthcheck-model_id-fix by @atapia27 in #21071
- fix(ui): show real tool names in logs for Anthropic-format tools by @ishaan-jaff in #22048
- feat(agents): assign virtual keys to agents by @ishaan-jaff in #22045
- removed extra comma typo by @atapia27 in #22053
- fix(test): Update status enum values to match Google Interactions OpenAPI spec by @shin-bot-litellm in #22061
- [Fix] Enrich Failure Spend Logs With Key/Team Metadata by @yuneng-jiang in #22049
- feat: add new code execution dataset by @krrishdholakia in #22065
- Litellm gemini trace id missingv2 by @Harshit28j in #22077
- fix(guardrails): prevent presidio crash on non-json responses by @Harshit28j in #22084
- fix Unauthenticated RCE and Sandbox Escape in Custom Code Guardrail by @Harshit28j in #22095
- [Feat]Add forward auth headers of provider by @Sameerlite in #22070
- Fix None (TypeError: 'NoneType' object is not a mapping) by @Sameerlite in #22080
- Fix: Test connect failing for bedrock batches mode by @Sameerlite in #22081
- [chore] bump OpenAI package version by @Sameerlite in #22094
- fix(ui): remove duplicate antd import in ToolPolicies by @shin-bot-litellm in #22107
- feat(ui): add user filtering to usage page by @krrishdholakia in #22059
- [Test] UI - Pricing Calculator: Add comprehensive unit tests by @yuneng-jiang in #22108
- [Docs] Credential Usage Tracking by @yuneng-jiang in #22112
- [Infra] Ui Build and Test Fixes by @yuneng-jiang in #22116
- Agents - assign tools by @krrishdholakia in #22064
- [Feature] Add request_duration_ms to SpendLogs by @yuneng-jiang in #22066
- chore: regenerate poetry.lock to match pyproject.toml by @github-actions[bot] in #22120
- Litellm redis pipeline spend updates by @ryan-crabbe in #22044
- perf(proxy): batch 11 create_task() calls into 1 in update_database() by @ryan-crabbe in #22028
- fix(auth): remove hardcoded base64 string flagged by secret scanner by @jquinter in #22125
- Proxy request tags docs by @ishaan-jaff in #22129
- [Feat] Realtime API - Add logging, spend tracking support + Tool Tracing by @ishaan-jaff in #22105
- feat: add UI banner warning for detailed debug mode by @krrishdholakia in #21527
- [Feature] UI - Logs: Use backend request_duration_ms and make Duration sortable by @yuneng-jiang in #22122
- [Fix] UI - MCP Servers: Make auth value optional for create flow by @yuneng-jiang in #22119
- Add Lakera v2 post-call hook and tests (fixed PII masking) by @eurogig in #21783
- Add claims agent guardrails (5 categories + policy template) by @krrishdholakia in #22113
- New Azure OpenAI Models 2026-02-25 by @marty-sullivan in #22114
- [Chore] Update aiml model pricing by @Sameerlite in #22139
- feat(realtime): guardrails support for /v1/realtime WebSocket endpoint by @ishaan-jaff in #22152
- feat(add-new-block_code_execution-guardrail): prevent agent from executing code by @krrishdholakia in #22154
- feat(vertex_ai): Vertex AI Gemini Live via unified /realtime endpoint by @ishaan-jaff in #22153
- [Infra] Fixing UI Build by @yuneng-jiang in #22158
- Development environment setup by @ishaan-jaff in #22160
- fix(realtime): guardrails with pre_call/post_call mode now work on realtime WebSocket by @ishaan-jaff in #22161
- feat(realtime guardrails): end_session_after_n_fails + Endpoint Settings wizard step by @ishaan-jaff in #22165
- [Fix] CICD 26/02/26 by @Sameerlite in #22151
- fix(proxy): honor MAX_STRING_LENGTH_PROMPT_IN_DB from config env vars by @gavksingh in #22106
- fix(proxy): improve auth exception logging levels and add structured context by @bensi94 in #22099
- Adjust input and output cost per token for mistral-small-2503 by @jinskjoy in #22097
- fix(adapter): populate cache_read_input_tokens from prompt_tokens_details for OpenAI/Azure by @roni-frantchi in #22090
- fix: arize phoenix nested traces by @mubashir1osmani in #22169
- fix(test): update Phoenix OTEL test by @mubashir1osmani in #22181
- Bump litellm version to 1.81.16 by @Sameerlite in #22184
- merge main by @Sameerlite in #22186
- Revert "fix(proxy): improve auth exception logging levels and add structured context" by @Sameerlite in #22187
- Litellm oss staging 02 26 2026 by @krrishdholakia in #22166
- Return Clear error message why no tools are available / IP Filtering occured by @Sameerlite in #22142
- fix(embeddings): allow dimensions param passthrough via allowed_openai_params for non-text-embedding-3 OpenAI models by @Sameerlite in #22144
- Add JSON exact match test for vLLM embeddings by @Sameerlite in #22180
- Add audio as supported openai param by @Sameerlite in #22092
- Fix: Passing of image and parameters in videos api by @Sameerlite in #22170
- fix(tests): update MCP server test mocks to match production API by @jquinter in #22198
- fix(websearch_interception): preserve thinking blocks in agentic loop follow-up messages by @michelligabriele in #21604
- test(mcp): add e2e test for stateless StreamableHTTP behavior by @michelligabriele in #22033
- fix: custom auth budget issue by @Harshit28j in #22164
New Contributors
- @MarshHawk made their first contribution in #20584
- @gavksingh made their first contribution in #22106
- @roni-frantchi made their first contribution in #22090
Full Changelog: CVEv1.81.5...v1.81.16.custm-auth.dev