[litellm-agent] Staging → litellm_internal_staging (5/9/2026) - #27549
Conversation
Squash-merged by litellm-agent from Michael-RZ-Berri's PR.
|
@greptile please review |
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
Greptile SummaryThis staging PR aggregates several independently reviewed changes: Azure AD authentication for Redis, a new
Confidence Score: 5/5Safe to merge — changes are well-scoped, each path has direct test coverage, and no auth or data-integrity regressions were found. The new /team/key/bulk_update endpoint correctly gates access behind role checks and team-membership validation before per-key updates, the Azure AD Redis path mirrors the existing GCP IAM pattern, and the Bedrock context_management filter is additive with a safety-net allowlist as backstop. No files require special attention beyond the minor style nits flagged in the inline comments.
|
| Filename | Overview |
|---|---|
| litellm/_redis.py | Adds Azure AD Redis authentication alongside the existing GCP IAM path; sync path uses a closure-captured credential, async path wraps it in AzureADCredentialProvider for token refresh. Minor: AZURE_REDIS_SCOPE is duplicated from _redis_credential_provider.py. |
| litellm/_redis_credential_provider.py | Adds AzureADCredentialProvider mirroring the existing GCPIAMCredentialProvider; delegates to the Azure SDK's internal token cache for refresh. Clean implementation. |
| litellm/proxy/management_endpoints/key_management_endpoints.py | Adds /team/key/bulk_update endpoint; refactors _process_single_key_update to accept UpdateKeyRequest directly; includes team-scoped auth, batch limits, blocked/expired key filtering, and per-key failure handling. |
| litellm/types/proxy/management_endpoints/key_management_endpoints.py | Adds KeyUpdateFields (extra=forbid allowlist) and BulkUpdateTeamKeysRequest with validators for temp_budget pairing and selection exclusivity. |
| litellm/router.py | Registers a stripped alias (without responses/ prefix) in litellm.model_cost for both _create_deployment and add_deployment; str.replace is a global replace rather than a segment-aware strip. |
| litellm/proxy/common_utils/reset_budget_job.py | Adds user_api_key_cache invalidation after tag spend resets so stale cached spend does not keep tags budget-blocked across reset cycles. Opt-in via cache_key_fn. |
| litellm/proxy/health_check_utils/shared_health_check_manager.py | Replaces fixed 2-second sleep with a polling loop bounded by lock_ttl; adds early exit on orphaned lock detection and immediate fallback when Redis is unconfigured. |
| litellm/proxy/litellm_pre_call_utils.py | Fixes httpx header type error by serializing dict/list values as JSON and coercing numbers to str; adds provider resolution from router deployment when model name has no prefix. |
| litellm/llms/bedrock/messages/invoke_transformations/anthropic_claude3_transformation.py | Adds _filter_context_management_for_bedrock_invoke to strip unsupported edit types from context_management before Bedrock InvokeModel, fixing the 400 error from Claude Code clear_thinking edits. |
| ui/litellm-dashboard/src/components/ModelSelect/ModelSelect.tsx | Fixes empty optgroup rendering when includeSpecialOptions is falsy by spreading the conditional array instead of passing an object directly to the options array. |
| litellm/proxy/auth/route_checks.py | Adds TEAM_KEY_BULK_UPDATE to _PROXY_ADMIN_VIEW_ONLY_BLOCKED_ROUTES (using enum value) and _SELF_SERVICE_ALLOWED_ROUTES. |
Reviews (6): Last reviewed commit: "Merge branch 'litellm_internal_staging' ..." | Re-trigger Greptile
| "/key/service-account/generate", | ||
| "/key/block", | ||
| "/key/unblock", | ||
| "/team/key/bulk_update", | ||
| ] | ||
| ) |
There was a problem hiding this comment.
The new route is added as a raw string literal
"/team/key/bulk_update" here, while the _PROXY_ADMIN_VIEW_ONLY_BLOCKED_ROUTES frozenset just above uses KeyManagementRoutes.TEAM_KEY_BULK_UPDATE.value from the enum. If the enum value is ever changed, _SELF_SERVICE_ALLOWED_ROUTES would silently fall out of sync and the route would slip through the admin-view-only guard.
| "/key/service-account/generate", | |
| "/key/block", | |
| "/key/unblock", | |
| "/team/key/bulk_update", | |
| ] | |
| ) | |
| "/key/service-account/generate", | |
| "/key/block", | |
| "/key/unblock", | |
| KeyManagementRoutes.TEAM_KEY_BULK_UPDATE.value, | |
| ] | |
| ) |
Squash-merged by litellm-agent from noahnistler's PR.
|
@greptile please review |
|
@greptile please review |
…n /v1/messages (#27534) Squash-merged by litellm-agent from Anai-Guo's PR.
|
@greptile please review |
…27531) Squash-merged by litellm-agent from krisxia0506's PR.
|
@greptile please review |
…27521) Squash-merged by litellm-agent from Bytechoreographer's PR.
|
@greptile please review |
|
@greptile please review |
Squash-merged by litellm-agent from shivamrawat1's PR.
|
@greptile please review |
Squash-merged by litellm-agent from oss-agent-shin's PR.
|
@greptile please review |
|
|
|
@greptile please review |
…05_09_2026 [litellm-agent] Staging → litellm_internal_staging (5/9/2026)
Automated staging PR created by litellm-agent.
This branch collects PRs approved by the agent on 5/9/2026.