merge main - #19203
Merged
Merged
Conversation
Root cause fix: - Set user_email=None instead of user_id when creating users without email (scim_v2.py line 313) - Prevents UUIDs from being stored in user_email field in the first place Defensive fix: - Add validation in scim_transformations.py to check if user_email contains '@' before creating SCIMUserEmail - Handles existing users in database that may have UUIDs in user_email field - Prevents validation error when transforming users to SCIM format Fixes issue where GET /Users returns 500 error with message: 'value is not a valid email address: An email address must have an @-sign'
- Test user with UUID in user_email (defensive fix scenario) - Test user with None email (root cause fix scenario) - Verifies transformation doesn't fail and emails array is empty for invalid emails
- Reject group operations when users don't exist (security fix) - Prevents unauthorized user provisioning via group membership - Aligns with SCIM 2.0 protocol: users must exist before group membership - Add validation for empty user IDs - Update tests to verify rejection behavior This is a breaking change but necessary for security and SCIM compliance. Users must be created via POST /Users before being added to groups.
…o litellm_hakhundov_contribution
- Add `should_wrap_with_default_message` parameter to GuardrailRaisedException - Update Generic Guardrail API to use clean error messages without wrapper - When should_wrap_with_default_message=False, exception shows the original blocked_reason directly (e.g., "pii detected") instead of verbose format - Update test to verify GuardrailRaisedException is raised with clean message
…_id, conversation_id) (#18982)
#19025) * Add end to end integration tests for batches * Add end to end integration tests for batches * Add end to end integration tests for batches * Fix linter errors: remove unused imports and variables * Add end to end integration tests for batches * Add end to end integration tests for batches * Add end to end integration tests for batches * Add end to end integration tests for batches * chore: document temporary grype ignore for CVE-2019-1010022 * chore: add config option * chore: add ALLOWED_CVES * refetch after key create * test: remove flaky azure oidc embedding test * fixing build * bump: version 1.80.15 → 1.80.16 * [Fix] MSFT SSO - allow setting custom MSFT Base URLs (#18977) * fix TestCustomMicrosoftSSO * init CustomMicrosoftSSO * use CustomMicrosoftSSO * docs fix * docs fix * [Feat] UI Feedback Form - why LiteLLM (#18999) * init survey prompt * init survey modal * init Survey Modal * POST feedback hook * survey Modal * add other * in product survey fixes * fix survey prompt * fix survey * fix build * ui new build * [Feat] MSFT SSO - allow overriding env var attribute names (#18998) * add MSFT SSO constants * fix MSFT SSO env vars * test_microsoft_sso_handler_openid_from_response_with_custom_attributes * Add pricing of azure_ai/claude-opus-4-5 * test: temporarily disable flaky responses_id_security tests * fix(ui): use non-streaming method for endpoint v1/a2a/message/send in A2A playground ' --------- Co-authored-by: Ephrim Stanley <ephrim.stanley@point72.com> Co-authored-by: Yuta Saito <uc4w6c@bma.biglobe.ne.jp> Co-authored-by: yuneng-jiang <yuneng.jiang@gmail.com> Co-authored-by: YutaSaito <36355491+uc4w6c@users.noreply.github.com> Co-authored-by: Ishaan Jaff <ishaanjaffer0324@gmail.com> Co-authored-by: Sameer Kankute <sameer@berri.ai>
…ializer warnings (#18972) * Normalize BaseModel choices + suppress serializer warnings * Fix ModelResponse normalization and test deps
…on-unique prompt_id (#18966) Co-authored-by: Berke Yalcin <berke.yalcin@beko.com>
* chore: allow inference with space * make lint and make format
Adds 'servers' field to OpenAPI schema when server_root_path is set, ensuring correct Swagger UI execute path for reverse proxies and subpath deployments. Includes tests to verify correct server URL handling for various root path formats.
…lity check (#18924) * Update CLAUDE.md with qwen3 tool_calls bug fix instructions (#18922) * fix(ollama): set finish_reason to "tool_calls" when tool_calls present When qwen3 models return tool_calls through Ollama, the finish_reason was incorrectly left as "stop" instead of being set to "tool_calls". This caused clients to miss the tool_calls in the response. Added _get_finish_reason helper method following OpenAI provider's pattern, and fixed both streaming and non-streaming response paths. Fixes: #18922 * fix(ollama): pass tools directly without model capability check The previous code tried to check model capability via get_model_info() which made network calls to localhost:11434. When Ollama is remote, this fails and falls back to JSON format, breaking tool calling. Ollama 0.4+ supports native tool calling - let Ollama handle model capability detection instead of LiteLLM. Fixes #18922 * fix(ollama): transform tool_calls response to OpenAI format Ollama returns tool_calls with arguments as dict, but OpenAI format requires arguments to be a JSON string. Also ensures 'type': 'function' field is present. Completes the fix for #18922 * fix(ollama): set finish_reason to "tool_calls" when tool_calls present Fixes #18922 Two issues addressed: 1. Remove broken model capability check - get_model_info() fails when Ollama runs on remote server - Broken fallback triggered JSON prompt injection - Now passes tools directly - Ollama 0.4+ handles detection 2. Set finish_reason correctly - Was hardcoded to "stop" even with tool_calls present - Clients use this to know how to process the response - Now returns "tool_calls" when tool_calls are in response Both streaming and non-streaming responses are fixed. Tests: - All 14 existing Ollama tests pass - Added 3 focused tests for the fixes
…18919) When extract_and_raise_litellm_exception tries to raise a LiteLLM exception from an error string, it was always passing the response parameter. However, some exceptions like APIConnectionError don't accept this parameter, causing a TypeError. This fix tries to raise the exception with the response parameter first, and falls back to raising without it if a TypeError occurs. This fixes the error: TypeError: APIConnectionError.__init__() got an unexpected keyword argument 'response' Which was occurring when Gemini returned UNEXPECTED_TOOL_CALL finish reason and LiteLLM tried to convert the error to an APIConnectionError. Fixes: cascading error when Gemini uses thinking feature (__thought__ tool calls)
* feat(gemini): add opt-in support for responseJsonSchema
Add support for Gemini's native responseJsonSchema parameter which uses
standard JSON Schema format instead of OpenAPI-style responseSchema.
Benefits of responseJsonSchema (Gemini 2.0+ only):
- Standard JSON Schema format (lowercase types)
- Supports additionalProperties for stricter validation
- Better compatibility with Pydantic's model_json_schema()
- No propertyOrdering required
Usage:
```python
response_format={
"type": "json_schema",
"json_schema": {"schema": {...}},
"use_json_schema": True # opt-in
}
```
This is backwards compatible - existing code continues to use
responseSchema by default.
Closes #16340
* docs: add documentation for use_json_schema parameter
Document the new use_json_schema option for Gemini 2.0+ models
in the JSON Mode documentation.
* refactor(gemini): use responseJsonSchema by default for Gemini 2.0+
Remove opt-in flag `use_json_schema` and automatically detect model version:
- Gemini 2.0+: uses responseJsonSchema (standard JSON Schema, supports additionalProperties)
- Gemini 1.5: uses responseSchema (OpenAPI format, legacy)
This follows LiteLLM's philosophy of abstracting provider differences -
users write the same code regardless of model version.
Co-authored-by: Greek, John <jgreek@users.noreply.github.com>
…er_usage Revert "[Fix] /team/daily/activity Show Internal Users Their Spend Only"
…erhead_work_006 Revert "[Perf] Remove premature model.dump call on the hot path"
…tests_llms [tests] skip Azure SDK init check for acreate_skill
[test] handle wildcard routes in route validation test
Fix : test_stream_chunk_builder_litellm_mixed_calls
[chore] document temporary grype ignore for CVE-2026-22184
[chore] add jaraco liccheck
bump: version 1.80.16 → 1.80.17
[chore]: add ALLOWED_CVES
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Sameerlite
marked this pull request as ready for review
January 16, 2026 09:46
Sameerlite
merged commit Jan 16, 2026
b0c6a1b
into
litellm_staging_01_14_2026
56 of 67 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Relevant issues
Pre-Submission checklist
Please complete all items before asking a LiteLLM maintainer to review your PR
tests/litellm/directory, Adding at least 1 test is a hard requirement - see detailsmake test-unitCI (LiteLLM team)
Branch creation CI run
Link:
CI run for the last commit
Link:
Merge / cherry-pick CI run
Links:
Type
🆕 New Feature
🐛 Bug Fix
🧹 Refactoring
📖 Documentation
🚄 Infrastructure
✅ Test
Changes