merging v1.81.3-stable#7
Merged
Raman-12321 merged 5770 commits intoLamatic:lamatic-mainfrom Feb 9, 2026
Merged
Conversation
- Add promptFeedback.blockReason check in chunk_parser - Return content_filter finish_reason when blocked - Extract content filter logic into _check_prompt_level_content_filter() method - Update unit tests to reflect simplified implementation Signed-off-by: Kris Xia <xiajiayi0506@gmail.com>
[Fix] Unique Constraint on Daily Tables + Logging When Updates Fail
[Feature] UI - Search Tools: Show Config Defined Search Tools
Cast message to dict before calling pop() to satisfy mypy's type checker. The message is typed as a Union of TypedDicts which don't have the 'provider_specific_fields' key, but the runtime check already confirms it's a dict with this key.
…ed_support langfuse doc update
#20365) * fix(a2a): use text/event-stream SSE format for message/stream endpoint The A2A gateway's streaming response was using application/x-ndjson Content-Type and raw NDJSON body format. The A2A protocol spec requires text/event-stream with SSE framing (data: ...\n\n). The official a2a-sdk client validates the Content-Type header and raises SSEError when it doesn't contain text/event-stream. Changes: - Changed media_type from application/x-ndjson to text/event-stream - Updated response body to use SSE framing (data: prefix + \n\n suffix) - Added tests validating Content-Type and SSE body format Fixes #20278 * Potential fix for code scanning alert no. 4045: Information exposure through an exception Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> * test(a2a): add manual SSE format validation script Adds a manual test script that: 1. Starts a real A2A agent on port 10001 2. Starts LiteLLM proxy with the agent registered 3. Makes a streaming request to the proxy's A2A gateway 4. Validates Content-Type header is text/event-stream 5. Validates body uses SSE framing (data: ...\n\n) Run: python tests/a2a_manual/test_a2a_sse_manual.py --------- Co-authored-by: shin-bot-litellm <shin-bot-litellm@users.noreply.github.com> Co-authored-by: Ishaan Jaff <ishaanjaffer0324@gmail.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
…en using non anthropic providers (#20442) * _translate_openai_content_to_anthropic * test_response_format_consistency * test fixes unit tests * test fix * fix: use dict access for anthropic content blocks in tests (#20447) The translate_openai_response_to_anthropic method returns dicts, not objects. Changed .type/.text/.thinking attribute access to dict ['key'] access. --------- Co-authored-by: shin-bot-litellm <shin-bot-litellm@berri.ai>
* feat: remove_callbacks_by_type * feat: _init_semantic_filter_settings_in_db * add MCP semantic filtering settings endpoints * v0 - semantic filter UI * fix endpint _init_semantic_filter_settings_in_db * refactor ui * add LITELLM_UI_ALLOW_HEADERS * ui fix * ui fix
…0353) * docs: improve Okta SSO setup guide with step-by-step instructions - Add clear steps for creating OIDC app in Okta Admin Console - Document critical Authorization Server Access Policy configuration - Add troubleshooting table for common errors - Link to official Okta documentation for detailed UI instructions - Fix incorrect OAuth endpoint examples (was using Auth0 URLs) * docs: add Okta console screenshots for SSO setup guide - Add screenshot showing Sign-in redirect URI configuration - Add screenshot showing Client Credentials location - Add screenshot showing Authorization Server Access Policy setup * docs: replace Okta screenshots with annotated Scribe versions - Replace screenshots with Scribe-annotated versions highlighting key areas - Add step-by-step screenshots for Authorization Server Access Policy setup - Remove old unannotated screenshots
…ation (#20431) The cast(Any, message) pattern was used to suppress typed-dict mutation warnings, but the parameter has no type annotation so it's unnecessary. Direct assignment works and eliminates the F401 unused-import lint error. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Add OpenRouter Qwen3-235B-A22B models to the pricing configuration: - openrouter/qwen/qwen3-235b-a22b-2507 - openrouter/qwen/qwen3-235b-a22b-thinking-2507 Closes request from PR #13019 comments.
- Add allow_team_guardrail_config field to TeamTable and DeletedTeamTable - Add migration 20260205091235_allow_team_guardrail_config
…ion_5_feb bump: litellm-proxy-extras 0.4.29 → 0.4.30
Co-authored-by: Cursor <cursoragent@cursor.com>
…ion_5_feb chore: update poetry.lock for litellm-proxy-extras 0.4.30
Add a missing check symbol for /audio/transcriptions, which seems to be supported already, according to the docs at https://docs.litellm.ai/docs/providers/elevenlabs
* support policy mapping on team key level * update document * update document * address comments * update document * add unit test for new feature * add more test case
…19233) * feat: add support for anthropic_messages call type in prompt caching * test: move anthropic_messages prompt caching test to main router test file * add tutorial on using claude code with prompt cache routing
…ation (#20680) Adds documentation for the litellm.proxy_auth feature that automatically obtains and refreshes OAuth2/JWT tokens when connecting to a LiteLLM Proxy.
Remove incorrect `:0` suffix from regional Bedrock model identifiers: - us.anthropic.claude-opus-4-6-v1:0 → us.anthropic.claude-opus-4-6-v1 - au.anthropic.claude-opus-4-6-v1:0 (duplicate removed) The `:0` suffix is invalid for Bedrock inference profile ARNs and causes "The provided model identifier is invalid" errors when calling the model. Fixes #20562
The VirtualKeysTable crashed when rendering keys with null or undefined models field. The className expression tried to access .length on null, throwing a TypeError that broke the entire keys table. Added Array.isArray() guard before accessing .length on the models value. Fixes #20611
* docs: add callback registration optimization to v1.81.9 release notes (#20681) * docs: add callback registration optimization to v1.81.9 release notes * Update v1.81.9.md --------- Co-authored-by: Alexsander Hamir <alexsanderhamirgomesbaptista@gmail.com> * Fix spend logs pickle error with Pydantic models Replace copy.deepcopy() with Pydantic-safe serialization to avoid "cannot pickle '_thread.RLock' object" errors when request/response redaction is enabled. Changes: - Add _convert_to_json_serializable_dict() helper that uses model_dump() for Pydantic models instead of pickle - Replace copy.deepcopy() calls in request and response redaction paths with the new helper function - Recursively handles nested dicts, lists, and Pydantic models Root cause: Pydantic v2 BaseModel instances contain internal _thread.RLock objects for thread-safety. When copy.deepcopy() attempts to pickle these objects, it fails because threading primitives cannot be pickled. Fixes #20647 * chore: remove unused copy import Remove unused copy import that was causing lint failure. The copy.deepcopy() calls were replaced with _convert_to_json_serializable_dict() helper function in the previous commit, making the copy module no longer needed. --------- Co-authored-by: ryan-crabbe <128659760+ryan-crabbe@users.noreply.github.com> Co-authored-by: Alexsander Hamir <alexsanderhamirgomesbaptista@gmail.com>
#20666) Vertex AI requires Anthropic beta flags in the request body (anthropic_beta array), not as HTTP headers. The Bedrock handler already extracts user-specified beta headers from the headers dict, but the Vertex handler was missing this, causing extra_headers like interleaved-thinking-2025-05-14 to be silently dropped. This extracts anthropic-beta values from optional_params extra_headers and merges them into the anthropic_beta request body field, and also removes extra_headers from the request body since the parent's transform_request spreads optional_params into data.
first_id and last_id in the video list response were returned as raw provider IDs while data[].id was properly wrapped with encode_video_id_with_provider(). This caused pagination to break when clients passed unencoded cursors back as the `after` parameter. - Encode first_id/last_id in transform_video_list_response - Decode the `after` param in transform_video_list_request via extract_original_video_id() - Add 6 unit tests covering encoding, decoding, passthrough, and full round-trip pagination Fixes #20708 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…index-mapping fix(responses): preserve tool call argument deltas when streaming id is omitted
add missing indexes on VerificationToken table
…hinking-blocks fix(streaming): preserve interleaved thinking/redacted_thinking blocks
…ncoding Fix video list pagination cursors not encoded with provider metadata
Litellm oss staging 02 08 2026
Add output_config as supported param
Add new vercel ai anthropic models
damndaniel2000
approved these changes
Feb 9, 2026
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.
Title
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-unitType
🆕 New Feature
🐛 Bug Fix
🧹 Refactoring
📖 Documentation
🚄 Infrastructure
✅ Test
Changes