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 #22680
- fix(proxy): encode batch IDs when x-litellm-model header is used by @Chesars in #22653
- chore: update python-multipart constraint to >=0.0.18 by @Chesars in #17308
- chore: code duplication in files/main.py using credential helpers by @Chesars in #20920
- fix(vertex): preserve type schema semantics for JsonValuefields by @Chesars in #22589
- fix(helicone): correct provider URL for Vertex AI Gemini models by @Chesars in #22603
- fix(gemini): correct streaming finish_reason for tool calls by @Chesars in #21577
- fix(anthropic): remove hardcoded reasoning summary in adapter by @Chesars in #21491
- feat: support per-request enable_json_schema_validation for thread safety by @Chesars in #21233
- feat(openrouter): add image edit support for OpenRouter models by @shivaaang in #22403
- [Fix] Spend Log Cleanup: lock tracking, integer retention, skip log level by @yuneng-jiang in #22687
- feat: guardrail-mode-default-list by @Harshit28j in #22676
- Fix mypy override errors in count_tokens signatures by @jquinter in #22699
- [Test] UI - Projects: Add unit tests for project hooks by @yuneng-jiang in #22698
- Litellm feat batch expiry setting teams by @ryan-crabbe in #22705
- Fix Anthropic streaming sync and Azure GPT-5.1 logprobs tests by @jquinter in #22701
- fix: update vertex AI tests for function_response role=user by @jquinter in #22716
- fix: add video_tokens to completion_tokens_details test by @jquinter in #22717
- fix: use direct AsyncMock in JWT OIDC discovery tests by @jquinter in #22718
- fix: account for vertex_ai schema diff in response_format test by @jquinter in #22719
- fix: use real State in mock_request for proxy_utils tests by @jquinter in #22720
- [Feature] UI - Virtual Keys: Manual Spend Reset by @yuneng-jiang in #22715
- fix: resolve base_model in /cost/estimate for Azure custom deployments by @milan-berri in #22724
- [Fix] Team Admin Reset Key Spend by @yuneng-jiang in #22725
- [Fix] UI - Audit Logs: Server-side pagination, filtering, and drawer view by @yuneng-jiang in #22476
- fix: pass all custom pricing fields to register_model in completion() and embedding() by @shanemort1982 in #22552
- Agent Tracing - support context_id based trace id propogation + nested llm calls by @krrishdholakia in #22626
- feat(togetherai): add support for TogetherAI Qwen3.5-397B-A17B model by @Varad2001 in #22685
- fix: add missing supports_function_calling for deepinfra models by @OiPunk in #22620
- Managed batches - Address PR bot comments from #22464 by @ephrimstanley in #22666
- [Feat] UI - Add Open in New Tab on leftnav Bar by @ishaan-jaff in #22731
- [Feat] Add Tool Policies for AI Gateway by @ishaan-jaff in #22732
- feat(proxy): add key_alias, key_hash, requested_model DD APM span tags by @ishaan-jaff in #22710
- Add Support for OpenAI's Chat-GPT 5.3 Chat model by @PeterDaveHello in #22693
- [Fix] UI - Tool Policies: Add missing ToolRow properties by @yuneng-jiang in #22739
- reusable-credentials by @atapia27 in #22316
- virtual-keys-team-table by @atapia27 in #21958
- fix(proxy): make common_checks opt-in for custom auth by @Harshit28j in #22678
- merge main for 030326 by @Sameerlite in #22765
- Revert "fix(anthropic): remove hardcoded reasoning summary in adapter" by @Sameerlite in #22768
- Litellm oss staging 03 03 2026 by @Chesars in #22689
- chore: regenerate poetry.lock to match pyproject.toml by @github-actions[bot] in #22769
- [Feat] Add support for Responses Websocket by @Sameerlite in #22559
- feat(tests): add proxy e2e azure batches test by @Sameerlite in #22763
- [Feat] Add Google Search API Integration by @Sameerlite in #22752
- Add mcp streaming events Fix and consistent response ID by @Sameerlite in #22744
- Add support for wildcards models for files api by @Sameerlite in #22740
- Fix MCP server URL and tools management by @Sameerlite in #22751
- Fix flaky MCP streaming test and iterator silent failure by @jquinter in #22777
- Exclude aresponses_websocket from Azure SDK client init test by @jquinter in #22778
- Fix A2A message context_id access when message is a dict by @jquinter in #22780
- Fix tool management tests using wrong field name call_policy by @jquinter in #22781
- Add missing migration for LiteLLM_ToolTable policy changes by @jquinter in #22783
- Fix responses ID security test for new request_cache parameter by @jquinter in #22784
- Guard tenacity import in e2e Azure batch tests by @jquinter in #22785
- Remove incompatible openai==1.100.1 pin from linting CI by @jquinter in #22789
- Add tenacity to e2e Azure batch CI and revert importorskip by @jquinter in #22788
- fix: remove unused EncryptedContentAffinityCheck import in router.py by @jquinter in #22776
- fix: add new model_prices properties to validation schema by @jquinter in #22775
- Add support for responses websocket for all providers by @Sameerlite in #22771
- fix(proxy): improve team expiry enforcement validation by @ryan-crabbe in #22728
- azure content enhancement... by @ma-armenta in #22581
- fix(responses): preserve query params when building /responses/compact URL by @SebLz in #22668
New Contributors
- @noahnistler made their first contribution in #22133
- @dylan-duan-aai made their first contribution in #21130
- @rasmi made their first contribution in #22322
- @RussellLuo made their first contribution in #22363
- @kenany made their first contribution in #17876
- @Varad2001 made their first contribution in #22654
- @shanemort1982 made their first contribution in #22552
- @SebLz made their first contribution in #22668
Full Changelog: litellm_presidio-dev-v1.81.16...1.82.1