What's Changed
- fix(gemini): preserve $ref in JSON Schema for Gemini 2.0+ by @Chesars in #21597
- fix(transcription): move duration to _hidden_params to match OpenAI response spec by @Chesars in #22208
- fix(anthropic): map reasoning_effort to output_config for Claude 4.6 models by @Chesars in #22220
- feat(vertex): add gemini-3.1-flash-image-preview to model DB by @emerzon in #22223
- perf(spendlogs): optimize old spendlog deletion cron job by @Harshit28j in #21930
- Fix converse handling for parallel_tool_calls by @Sameerlite in #22267
- [Fix]Preserve forwarding server side called tools by @Sameerlite in #22260
- Fix free models working from UI by @Sameerlite in #22258
- Add v1 for anthropic responses transformation by @Sameerlite in #22087
- [Bug]Add ChatCompletionImageObject in OpenAIChatCompletionAssistantMessage by @Sameerlite in #22155
- Fix: poetry lock by @Sameerlite in #22293
- Enable local file support for OCR by @noahnistler in #22133
- fix(mcp): Strip stale mcp-session-id to prevent 400 errors across proxy workers by @gavksingh in #21417
- [Feature] Access group CRUD: Bidirectional team/key sync by @yuneng-jiang in #22253
- Add LLMClientCache regression tests for httpx client eviction safety by @ryan-crabbe in #22306
- fix(images): forward extra_headers on OpenAI code path in image_generation() by @Chesars in #22300
- feat(models): add gpt-audio-1.5 to model cost map by @Chesars in #22303
- feat(models): add gpt-realtime-1.5 to model cost map by @Chesars in #22304
- fix(images): pass model_info/metadata in image_edit for custom pricing by @Chesars in #22307
- fix(chatgpt): fix tool_calls streaming indexes by @Chesars in #21498
- fix(openai): correct supported_openai_params for GPT-5 model family by @Chesars in #21576
- fix(openai): correct supported params for gpt-5-search models by @Chesars in #21574
- fix(azure_ai): resolve api_base from env var in Document Intelligence OCR by @Chesars in #21581
- fix(models): function calling for PublicAI Apertus models by @Chesars in #21582
- fix(vertex_ai): pass through native Gemini imageConfig params for image generation by @Chesars in #21585
- fix(openrouter): use provider-reported usage in streaming without stream_options by @Chesars in #21592
- fix(moonshot): preserve image_url blocks in multimodal messages by @Chesars in #21595
- fix(types): remove StreamingChoices from ModelResponse, use ModelResponseStream by @Chesars in #21629
- fix(responses): use output_index for parallel tool call streaming indices by @Chesars in #21337
- Tests: add llmclientcache regression tests by @ryan-crabbe in #22313
- Add deprecation dates for xAI grok-2-vision-1212 and grok-3-mini models by @Chesars in #20102
- fix(containers): Fix Python 3.10 compatibility for OpenAIContainerConfig by @Chesars in #19786
- fix(count_tokens): include system and tools in token counting API requests by @Chesars in #22301
- fix(helicone): add Gemini and Vertex AI support to HeliconeLogger by @Chesars in #19288
- fix(register_model): handle openrouter models without '/' in name by @Chesars in #19792
- feat(model_prices): add OpenRouter native models to model cost map by @Chesars in #20520
- fix(adapter): double-stripping of model names with provider-matching prefixes by @Chesars in #20516
- docs: add OpenRouter Opus 4.6 to model map and update Claude Opus 4.6 docs by @Chesars in #20525
- [Fix] Include timestamps in /project/list response by @yuneng-jiang in #22323
- [Feature] UI - Projects: Add Projects page with list and create flows by @yuneng-jiang in #22315
- Fix/claude code plugin schema by @rahulrd25 in #22271
- Add Prometheus child_exit cleanup for gunicorn workers by @ryan-crabbe in #22324
- docs: update AssemblyAI docs with Universal-3 Pro, Speech Understanding, and LLM Gateway by @dylan-duan-aai in #21130
- feat: add in_flight_requests metric to /health/backlog + prometheus by @ishaan-jaff in #22319
- fix(test): update realtime guardrail test assertions for voice violation behavior by @jquinter in #22332
- fix(test): update Azure pass-through test after Responses API routing change by @jquinter in #22334
- fix(db): add missing migration for LiteLLM_ClaudeCodePluginTable by @jquinter in #22335
- fix(bedrock): restore parallel_tool_calls mapping in map_openai_params by @jquinter in #22333
- [Feat] Agent RBAC Permission Fix - Ensure Internal Users cannot create agents by @ishaan-jaff in #22329
- fix(mcp): update test mocks for renamed filter_server_ids_by_ip_with_info by @jquinter in #22327
- fix: Add PROXY_ADMIN role to system user for key rotation by @milan-berri in #21896
- fix: populate user_id and user_info for admin users in /user/info by @milan-berri in #22239
- fix(caching): store task references in LLMClientCache._remove_key by @shivaaang in #22143
- fix(image_generation): propagate extra_headers to Upstream by @ZeroClover in #22026
- [Fix] Pass MCP auth headers from request into tool fetch for /v1/responses and chat completions by @shivamrawat1 in #22291
- fix: shorten guardrail benchmark result filenames for Windows long path support by @demoray in #22039
- Remove Apache 2 license from SKILL.md by @rasmi in #22322
- fix(mcp): default available_on_public_internet to true by @ishaan-jaff in #22331
- fix(bedrock): filter internal json_tool_call when mixed with real tools by @jquinter in #21107
- fix(jwt): OIDC discovery URLs, roles array handling, dot-notation error hints by @ishaan-jaff in #22336
- perf: streaming latency improvements — 4 targeted hot-path fixes by @ishaan-jaff in #22346
- [Test] UI - CostTrackingSettings: Add comprehensive Vitest coverage by @yuneng-jiang in #22354
- [Feature] Key list endpoint: Add project_id and access_group_id filters by @yuneng-jiang in #22356
- [Feature] UI - Projects: Add Project Details Page by @yuneng-jiang in #22360
- [Feature] UI - Projects: Add project keys table and project dropdown to key create/edit by @yuneng-jiang in #22373
- Litellm health check tokens by @Harshit28j in #22299
- Doc: security vulnerability scan report to v1.81.14 release notes by @Harshit28j in #22385
- feat: ability to trace metrics datadog by @Harshit28j in #22103
- feat(ci): add duplicate issue detection and auto-close bot by @jquinter in #22034
- Litellm aws edge case by @Harshit28j in #22384
- Litellm presidio stream v3 by @Harshit28j in #22283
- fix: update_price_and_context_window workflow from running in forks by @Chesars in #18478
- fix(ci): remove duplicate env key in scan_duplicate_issues workflow by @Chesars in #22405
- fix(lint): suppress PLR0915 in complex transform methods by @jquinter in #22328
- fix: atomic RPM rate limiting in model rate limit check by @jquinter in #22002
- test(ci): add secret scan test and CI job by @jquinter in #22193
- fix(proxy): isolate get_config failures from model sync loop by @jquinter in #22224
- fix tts metrics issues by @Harshit28j in #20632
- [Release Fix] by @ishaan-jaff in #22411
- fix(ci): handle inline table in pyproject.toml for proxy-extras version check by @ishaan-jaff in #22414
- [Feature] UI - Projects: Add delete project action by @yuneng-jiang in #22412
- fix: bump litellm-proxy-extras to 0.4.50 and fix 3 failing tests by @ishaan-jaff in #22417
- [Fix] UI - resolve flaky tests from leaked @tremor/react Tooltip timer by @yuneng-jiang in #22420
- [Feature] UI - Admin Settings: Projects Opt-In Toggle by @yuneng-jiang in #22416
- [Infra] Building UI for Release by @yuneng-jiang in #22423
- fix(mypy): fix 3 mypy/pyright errors in presidio.py and _health_endpoints.py by @ishaan-jaff in #22422
- bump: litellm-enterprise 0.1.32 → 0.1.33 + manual publish workflow by @ishaan-jaff in #22421
- fix(mcp): set LITELLM_MASTER_KEY env var in e2e tests by @jquinter in #22413
- fix(ci): replace default CodeQL with custom workflow to unblock CI by @jquinter in #22397
- Development environment setup by @ishaan-jaff in #22432
- fix(test): add spend data polling + graceful skip to Gemini e2e spend… by @ishaan-jaff in #22446
- [Fix] UI - Virtual Keys: Fix beforeunload listener memory leak by @yuneng-jiang in #22430
- Litellm stability fix v2 by @ishaan-jaff in #22452
- fix: resolve ruff PLR0915 and mypy type checking lint errors by @anencore94 in #22359
- Fix plaintext JWTs leaking in debug logs by @ryan-crabbe in #22424
- fix(anthropic): populate output_config when reasoning_effort is used on Claude 4.6 by @giulio-leone in #22410
- fix: add sync streaming fallback + fix 429 for all streaming paths by @CSteigstra in #22375
- fix(vertex_ai): Set anthropic-beta as HTTP header for Vertex AI rawPredict by @castrapel in #22321
- fix(types): normalize null top_logprobs to [] in ChatCompletionTokenLogprob by @shivaaang in #22245
- fix (model-map): gemini litellm_provider for gemini/gemini-2.5-flash-image by @Dima-Mediator in #22156
- fix(ui): Display newlines correctly in tool descriptions by @RussellLuo in #22363
- [UI QA] - Add all provider models + providers on ui by @ishaan-jaff in #22461
- Budget reset times and timezones by @krrishdholakia in #22428
- Add OCR guardrail_translation handler support by @krrishdholakia in #22145
- [Fix] Invite link allows multiple password resets by @yuneng-jiang in #22462
- [Docs] Project Management UI by @yuneng-jiang in #22472
- [Fix] UI - QueryClient: move to single root-level provider by @yuneng-jiang in #22463
- [Feat] Make UI login session duration configurable via LITELLM_UI_SESSION_DURATION by @shivamrawat1 in #22182
- Add observatory test workflow for RC/stable releases by @jquinter in #22508
- Fix invalid secrets context in test-linting workflow by @jquinter in #22517
- Fix observatory workflow checkout failing on commit hash by @jquinter in #22518
- Fix undefined kwargs in InFlightRequestsMiddleware by @jquinter in #22523
- Fix observatory tunnel DNS flakiness and PLR0915 lint by @jquinter in #22525
- Fix PLR0915 lint error in _completion_streaming_iterator by @jquinter in #22526
- fix(featherless_ai): use correct FEATHERLESS_AI_API_KEY env var name by @giulio-leone in #22497
- fix(bedrock): extract region and model ID from bedrock/{region}/{model} path format by @Sameerlite in #22546
- feat(vertex-ai): add VIDEO modality support in token usage tracking by @Sameerlite in #22550
- Litellm oss staging 02 28 2026 by @krrishdholakia in #22340
- fix(openrouter): pattern-based fix for native model double-stripping by @tombii in #22320
- Revert "fix(adapter): double-stripping of model names with provider-matching prefixes" by @Chesars in #22593
- docs: add fallback setup for virtual key with Loom video by @mubashir1osmani in #22600
- [Feat] Make MCP timeouts configurable via environment variables by @shivamrawat1 in #22287
- feat: add missing Mistral models and update pricing by @Chesars in #22601
- fix: add missing pricing for dashscope/qwen3.5-plus and dashscope/qwen3-vl-plus by @Chesars in #22596
- fix: update Gemini model deprecation dates by @Chesars in #22586
- fix(pricing): add missing cache token pricing for 24 Bedrock Claude models by @Chesars in #22583
- Litellm oss staging 02 26 2026 by @Chesars in #22582
- Litellm oss staging 02 27 2026 by @Chesars in #22584
- Add CrowdStrike AIDR guardrail hook by @kenany in #17876
- feat(perplexity): add embedding support for pplx-embed-v1 models by @ishaan-jaff in #22610
- Pr template test path by @krrishdholakia in #22612
- [Feat] Add pricing for Nebius models by @ishaan-jaff in #22614
- Add incident report: cache eviction closes in-use httpx clients by @ryan-crabbe in #22309
- fix: set mock status_code in JWT OIDC discovery tests by @anencore94 in #22361
- fix(openrouter): register OpenRouter as native Responses API provider by @shivaaang in #22355
- feat(guardrails): team-based guardrail registration and approval workflow by @krrishdholakia in #22459
- Managed batches fixes for vertex by @ephrimstanley in #22464
- feat(togetherai): add support for togetherai/Qwen3.5-397B-A17B model by @Varad2001 in #22654
- Revert "feat(togetherai): add support for togetherai/Qwen3.5-397B-A17B model" by @Sameerlite in #22657
- bump: version 1.82.0 → 1.82.1 by @Harshit28j in #22631
- Fix: Azure ai finetuning api by @Sameerlite in #22625
- [Chore]Remove defualt hardcoded thinking levels for gemini 3 family by @Sameerlite in #22641
- Add support for encrypted content affinity by @Sameerlite in #22651
- fix(pricing): add 5 missing OpenRouter model pricing entries by @Chesars in #22649
- fix(pricing): add 7 missing DashScope model pricing entries by @Chesars in #22650
- fix(proxy): allow custom auth routes to bypass route authorization ch… by @Harshit28j in #22662
- feat(models): add zai/glm-5 and zai/glm-5-code to model cost map by @Chesars in #22665
- Day 0 gemini 3.1 flash lite preview support by @Sameerlite in #22674
- Add support for Attaching knowledge base to model via UI by @Sameerlite in #22656
- [Fix] MCP server: preserve created_at and updated_at timestamps by @yuneng-jiang in



