v1.92.0
kubernetes-sigs/agent-sandboxv1.92.0Jul 12, 2026by github-actions[bot]
AI Summary
This release introduces Docker image signature verification using Cosign, adds Day 0 support for Gemini 3.5 Flash and managed agents, and updates the Interactions API. It also includes various bug fixes for Bedrock, Vertex AI, and Proxy functionality.
Key Highlights
- Docker image signature verification using Cosign
- Day 0 support for Gemini 3.5 Flash
- Gemini managed agents support
- Interactions API endpoint added to playground with SSE streaming
- Prometheus metrics now include user_email and user_alias
New Features
- Gemini 3.5 Flash model support
- Gemini managed agents
- Interactions API endpoint in playground
- Prometheus metrics for user budget
- Native MCP OAuth support for cursor
- Granian ASGI web server support
Full Release Notes
## Verify Docker Image Signature
All LiteLLM Docker images are signed with [cosign](https://docs.sigstore.dev/cosign/overview/). Every release is signed with the same key introduced in [commit `0112e53`](https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0).
**Verify using the pinned commit hash (recommended):**
A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:
```bash
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
ghcr.io/berriai/litellm:v1.92.0
```
**Verify using the release tag (convenience):**
Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:
```bash
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/v1.92.0/cosign.pub \
ghcr.io/berriai/litellm:v1.92.0
```
Expected output:
```
The following checks were performed on each of these signatures:
- The cosign claims were validated
- The signatures were verified against the specified public key
```
---
## What's Changed
* fix(proxy): gate team allowed_passthrough_routes to proxy admins by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28097
* fix(tests): stabilize image-edit VCR cassettes to stop live gpt-image-1 spend by @mateo-berri in https://github.com/BerriAI/litellm/pull/28110
* fix(bedrock/cohere): send embedding_types as JSON array, not string by @ishaan-berri in https://github.com/BerriAI/litellm/pull/28172
* fix(tests): migrate realtime + rerank tests off shut-down upstream models by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28191
* fix(caching): replay openai/responses bridge cache hits as chat streams by @Sameerlite in https://github.com/BerriAI/litellm/pull/28158
* Litellm oss staging by @Sameerlite in https://github.com/BerriAI/litellm/pull/28161
* feat(prometheus): add user_email and user_alias to user budget metrics by @Sameerlite in https://github.com/BerriAI/litellm/pull/28155
* test(callbacks): harden flaky proxy callback-leak detector by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28195
* fix(bedrock): sanitize batch metadata to prevent Pydantic ValidationError by @mateo-berri in https://github.com/BerriAI/litellm/pull/28202
* fix(deepseek): use native /anthropic/v1/messages endpoint and sanitize tools by @mateo-berri in https://github.com/BerriAI/litellm/pull/28200
* feat(ui): add Interactions API endpoint to playground with SSE streaming by @Sameerlite in https://github.com/BerriAI/litellm/pull/28156
* fix(proxy): decode bytes and pass-through SSE for Google-native streamGenerateContent (#27444) by @Sameerlite in https://github.com/BerriAI/litellm/pull/28213
* refactor(bedrock/sagemaker): switch to lazy loading for response stre… by @harish-berri in https://github.com/BerriAI/litellm/pull/28189
* [Refactor] UI - Spend Logs: consolidate filter state and extract components by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/25847
* fix(tests): replace shut-down gpt-4o-audio-preview with gpt-audio-1.5 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28281
* chore(ci): bump versions by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28287
* feat: propagate team_id and team_alias to all child OTEL spans by @yassin-berriai in https://github.com/BerriAI/litellm/pull/28273
* Day 0 support : Gemini 3.5 Flash by @Sameerlite in https://github.com/BerriAI/litellm/pull/28268
* Gemini managed agents support by @Sameerlite in https://github.com/BerriAI/litellm/pull/28270
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28292
* feat(gemini): add gemini-3.1-flash-lite model cost map by @Sameerlite in https://github.com/BerriAI/litellm/pull/28320
* fix(spend_counter): seed Redis counter via SET NX to prevent cross-pod double-seed by @milan-berri in https://github.com/BerriAI/litellm/pull/27854
* fix(proxy): normalize batch file IDs before ManagedObjectTable write by @Sameerlite in https://github.com/BerriAI/litellm/pull/28339
* fix(router): use forwarded model_id for native Azure container IDs by @Sameerlite in https://github.com/BerriAI/litellm/pull/27921
* fix(ui): restore log filter loading indicator by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28282
* test(e2e): migrate runner to uv, add All Proxy Models key test by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28313
* feat(ui): team passthrough routes create parity + edit load fix by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28098
* fix(mcp): JWT on tools/list and REST tools/call server resolution by @Sameerlite in https://github.com/BerriAI/litellm/pull/28227
* feat(interactions): migrate to Google Interactions API steps schema (May 2026) by @Sameerlite in https://github.com/BerriAI/litellm/pull/28153
* test(ui-e2e): admin key creation with a specific proxy model by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28365
* fix(vertex_ai): omit function_call id on Vertex Gemini 3.5+ tool turns by @Sameerlite in https://github.com/BerriAI/litellm/pull/28324
* feat(mcp): allow native MCP OAuth support for cursor by @Sameerlite in https://github.com/BerriAI/litellm/pull/28327
* fix(interactions): never drop streamed text deltas; always emit terminal completion by @mateo-berri in https://github.com/BerriAI/litellm/pull/28394
* fix(proxy): expose Prisma idle/connect timeout + extra DB URL params by @yassin-berriai in https://github.com/BerriAI/litellm/pull/28395
* Litellm oss staging 1 by @Sameerlite in https://github.com/BerriAI/litellm/pull/28337
* fix: serialize guardrail_response to JSON in OTEL traces by @yassin-berriai in https://github.com/BerriAI/litellm/pull/28362
* chore(ci): merge dev branch by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28314
* test(realtime): expect session.created as xAI realtime initial event by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28424
* feat(tests): behavior-pinning harness + Key Tier-1 matrix by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28321
* fix(proxy): hydrate wildcard discovery credentials (#28284) - CCI Run by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28419
* Litellm oss staging 04 21 2026 2 by @Sameerlite in https://github.com/BerriAI/litellm/pull/26569
* chore(ci): merge dev branch by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28290
* fix(vertex_gemma): strip `context_management` from request body by @mateo-berri in https://github.com/BerriAI/litellm/pull/28438
* fix(logging): recalculate cost after router retry failures by @milan-berri in https://github.com/BerriAI/litellm/pull/28476
* fix(otel): emit guardrail span on violation, surface status + categories by @yassin-berriai in https://github.com/BerriAI/litellm/pull/28364
* test(proxy): behavior-pinning matrix for team management endpoints by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28441
* test(vertex_ai): tolerate transient 500 in google maps grounding test by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28503
* fix(docker): restore npm to non_root builder image by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28519
* chore(ci): bump deps by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28524
* build(deps-dev): bump black to 26.3.1 and apply formatting by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28525
* chore(deps): bump deps by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28528
* test(e2e): forward LITELLM_LICENSE to UI e2e proxy by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28398
* Add granian as a ASGI compliant web server. Provider better throughput stability, by @harish-berri in https://github.com/BerriAI/litellm/pull/26027
* Fix conflicts and UI by @Sameerlite in https://github.com/BerriAI/litellm/pull/28477
* Add error_description and hint for oauth flows by @Sameerlite in https://github.com/BerriAI/litellm/pull/28471
* feat(mcp): Add tool call and tool list support via UI for Oauth mcps by @Sameerlite in https://github.com/BerriAI/litellm/pull/28454
* feat(proxy): persist allowlisted OIDC claims in CLI SSO poll by @Sameerlite in https://github.com/BerriAI/litellm/pull/28463
* fix(responses): use OpenAI SSEDecoder for Responses API streaming by @Sameerlite in https://github.com/BerriAI/litellm/pull/28566
* Litellm oss staging 2 by @Sameerlite in https://github.com/BerriAI/litellm/pull/28582
* [internal copy of #28269] Codex cli jwt team alias by @mateo-berri in https://github.com/BerriAI/litellm/pull/28621
* fix(check_licenses): read PEP 639 license-expression metadata by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28529
* test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28620
* chore(test): remove dead old Playwright e2e suite by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28632
* fix(sagemaker): send native Cohere embed payload to Cohere SageMaker endpoints by @milan-berri in https://github.com/BerriAI/litellm/pull/28613
* style: apply black formatting to fix lint CI (LIT-3274) (#28639) by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/28641
* fix(bedrock): decouple STS region from Bedrock aws_region_name by @milan-berri in https://github.com/BerriAI/litellm/pull/28245
* test(streaming): tolerate Vertex 429 wrapped in MidStreamFallbackError by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28669
* feat(guardrails): add Microsoft Purview DLP guardrail by @Sameerlite in https://github.com/BerriAI/litellm/pull/24966
* fix(mcp): forward upstream initialize instructions on cold gateway init by @milan-berri in https://github.com/BerriAI/litellm/pull/28231
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28680
* CI: copy of #25177 (OCI GenAI: embeddings, streaming/reasoning fixes, model catalog) by @mateo-berri in https://github.com/BerriAI/litellm/pull/28223
* Encrypt callback_vars in key/team metadata in DB by @Michael-RZ-Berri in https://github.com/BerriAI/litellm/pull/27141
* perf: reduce per-request and per-chunk overhead across Anthropic streaming hot paths by @yassin-berriai in https://github.com/BerriAI/litellm/pull/28289
* feat(azure): add Speech STT config support by @ishaan-berri in https://github.com/BerriAI/litellm/pull/27482
* test(proxy): phase-4 payload behavior pinning for tier-2/3 key + team management endpoints by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28681
* feat(prometheus): emit per-token-type detail metrics (LIT-3220) (#28372) by @ishaan-berri in https://github.com/BerriAI/litellm/pull/28378
* fix(otel): stamp http.response.status_code on all error responses by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28405
* chore(ui): build ui by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28707
* fix(helm): drop main- prefix from default image tag by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28710
* test(model_prices): allow audio_transcription_config in schema by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28708
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28709
* fix(team): refresh team cache on team_model_add/delete (LIT-3244) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28683
* fix(ui/add-model): stop vertex_ai-anthropic_models from leaking into Anthropic dropdown by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28723
* Fix spend logs v2 route permissions by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28705
* fix(proxy): Bedrock Knowledge Base pass-through: preserve SigV4 headers and signed request body by @milan-berri in https://github.com/BerriAI/litellm/pull/27526
* chore(tests): migrate Bedrock CI to AWS account 941277531214 by @mateo-berri in https://github.com/BerriAI/litellm/pull/28728
* fix(otel): export SERVER span on management-endpoint success without http_request by @yassin-berriai in https://github.com/BerriAI/litellm/pull/28794
* chore(ci): merge dev branch by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28801
* chore(ci): merge dev branch by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28657
* fix(ui): show 2-decimal precision for max_budget on key overview by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28809
* feat(proxy): allow `llm_api_routes` virtual keys to list MCP servers by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28442
* chore(ci): merge dev branch by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28807
* fix(team): keep team_alias cache in sync on _cache_team_object writes by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28737
* chore(ci): merge dev branch by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28822
* ci: daily oss-agent-shin canonical branch by @ishaan-berri in https://github.com/BerriAI/litellm/pull/28829
* test(proxy): add harness for proxy_server.py behavior-pinning by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28827
* feat(openai): apply regional-processing cost uplift for EU/US data residency by @mateo-berri in https://github.com/BerriAI/litellm/pull/28626
* chore(admin-ui): regenerate static export with trailingSlash: true by @mateo-berri in https://github.com/BerriAI/litellm/pull/28112
* fix(azure): preserve AD token refresh in v1 OpenAI client path by @mateo-berri in https://github.com/BerriAI/litellm/pull/28627
* fix(ui): route API Reference back to query-param page by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28726
* fix(model-edit): allow clearing custom pricing on wildcard models by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28719
* fix(tests/vcr): make Redis cassette cache replay deterministically (zero VCR misses on consecutive runs) by @mateo-berri in https://github.com/BerriAI/litellm/pull/28826
* fix(proxy): strip LiteLLM policy tracking from OpenAI batch metadata by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/28425
* Litellm OpenAI double prefix bug by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/28661
* Litellm oss staging 250526 by @Sameerlite in https://github.com/BerriAI/litellm/pull/28770
* fix(bedrock): align toolUse/toolSpec names and allow hyphens by @Sameerlite in https://github.com/BerriAI/litellm/pull/28874
* fix(realtime): send TEXT frames and valid guardrail session.update by @Sameerlite in https://github.com/BerriAI/litellm/pull/28848
* fix(mcp): extend key access-group union to MCP servers by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28890
* fix(galileo): support hosted v2 spans API and string output extraction by @Sameerlite in https://github.com/BerriAI/litellm/pull/28771
* fix(proxy): exclude proxy_server_request from its own body snapshot by @michelligabriele in https://github.com/BerriAI/litellm/pull/28618
* [Feat] Add tool calling support for gemini and vertex ai live api by @Sameerlite in https://github.com/BerriAI/litellm/pull/26590
* refactor(ui): remove dead App Router scaffolding in (dashboard)/* by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28891
* fix(docker): use system Node in componentized builders + retry apk add by @yassin-berriai in https://github.com/BerriAI/litellm/pull/28888
* docs(agents): require consent before writing new third-party names by @yuneng-berri in https://github.com/BerriAI/litellm/pull/28908
* refactor(ui): extract auth state into AuthContext by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28910
* fix(mcp): resolve team.access_group_ids → MCP servers by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28997
* test(ui): e2e cover team model edit + admin identity in navbar by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28652
* test(e2e): cover add-fallback flow in Router Settings by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29069
* test(e2e): cover Team-BYOK add-model flow as proxy admin by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29068
* fix(containers): record ownership for service-account keys + fix Prisma Json serialization by @Sameerlite in https://github.com/BerriAI/litellm/pull/28990
* test(e2e): cover add-MCP-server flow via discovery → custom form by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29070
* test(e2e): cover AI Hub make-public flow and public model_hub_table by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29071
* [internal copy of #28877] feat: add support for claude code goal mode for bedrock opus output config by @mateo-berri in https://github.com/BerriAI/litellm/pull/28898
* feat(guardrails): wire apply_guardrail into proxy logging callbacks by @Sameerlite in https://github.com/BerriAI/litellm/pull/28970
* chore(ci): merge dev brach by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29192
* perf(streaming): cut per-chunk overhead ~30% on Anthropic + Bedrock hot path by @yassin-berriai in https://github.com/BerriAI/litellm/pull/28720
* fix(proxy): enforce tag budgets for key-level tags by @Sameerlite in https://github.com/BerriAI/litellm/pull/29108
* fix(vertex-ai): use DB credentials in video handlers + implement Veo video edit by @Sameerlite in https://github.com/BerriAI/litellm/pull/29098
* fix(datadog): drain cost-management queue + opt-in FinOps tag allowlist by @michelligabriele in https://github.com/BerriAI/litellm/pull/28487
* feat(helm): split per-component ServiceAccounts for gateway, backend, and UI by @yassin-berriai in https://github.com/BerriAI/litellm/pull/28712
* chore(ci): bump deps (#29208) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29226
* fix(tests/vcr): mint Google OAuth tokens live to prevent stale-token replay by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29229
* chore(cookbook): bump Go directive to 1.26.3 in gollem example by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29234
* chore(ci): bump version by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29242
* feat(anthropic): add Claude Opus 4.8 and prune reasoning-effort flags by @mateo-berri in https://github.com/BerriAI/litellm/pull/29238
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29243
* fix(ci): restore real Bedrock batch S3 bucket/role in oai_misc_config by @mateo-berri in https://github.com/BerriAI/litellm/pull/29245
* fix(guardrails): persist disable_global_guardrails on keys by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29233
* test(e2e): cover Team Admin view + member + key flows by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29072
* docs: hand-written CLAUDE.md; remove AGENTS.md, point GEMINI.md at it by @mateo-berri in https://github.com/BerriAI/litellm/pull/29252
* fix(teams): expose keys_count on /v2/team/list and wire UI Resources badge by @michelligabriele in https://github.com/BerriAI/litellm/pull/28502
* fix(anthropic): stop injecting unsupported output_config.effort=xhigh for Claude Code on Sonnet/Opus 4.6 by @mateo-berri in https://github.com/BerriAI/litellm/pull/29304
* test(e2e): cover Internal Viewer nav, key, and team-info gating by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29075
* test(e2e): cover Internal User key modal, team info, key page by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29074
* test(e2e): cover navbar Logout flow as proxy admin by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29076
* fix(mcp): resolve key.access_group_ids → MCP servers (ungated) by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29195
* fix(router): enforce deployment budgets for dynamically added models by @Sameerlite in https://github.com/BerriAI/litellm/pull/29273
* fix(proxy): map stripped batch body.model to proxy alias for auth by @Sameerlite in https://github.com/BerriAI/litellm/pull/29264
* feat(mcp): support stateless and stateful clients via session-id routing by @Sameerlite in https://github.com/BerriAI/litellm/pull/26857
* fix(bedrock): support tool search results + chat annotations by @Sameerlite in https://github.com/BerriAI/litellm/pull/29120
* fix(mcp): ignore stale ids on key save by @Sameerlite in https://github.com/BerriAI/litellm/pull/29128
* feat(a2a): well-known agent-card discovery + LangGraph Platform mode by @Sameerlite in https://github.com/BerriAI/litellm/pull/28860
* fix(proxy): link passthrough success spans to the SERVER root OTEL span by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29315
* [internal copy of #29089] fix: duplicate claude code traces by @mateo-berri in https://github.com/BerriAI/litellm/pull/29311
* feat(otel): typed semconv-aligned OpenTelemetry instrumentation by @yassin-berriai in https://github.com/BerriAI/litellm/pull/28909
* tests(proxy_server): surface current behavior in tests by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29309
* test(e2e): cover Internal User create-key flow when in no teams by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29083
* test(e2e): assert internal-user navbar identity is scoped to that user by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29077
* feat(otel): add team_metadata, http.route, and model names to inference spans by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29319
* feat(context_management): compact_20260112 polyfill for non-Anthropic providers by @Sameerlite in https://github.com/BerriAI/litellm/pull/28868
* feat(enterprise): add RESEND_FROM_EMAIL for self-hosted Resend sends by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/28830
* Revert Bedrock CI back to the reactivated AWS account (888602223428) by @mateo-berri in https://github.com/BerriAI/litellm/pull/29326
* fix(mcp): preserve source_url in GET /v1/mcp/server list responses by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/29249
* fix(mcp): preserve omitted fields on PUT /v1/mcp/server partial updates by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/29253
* fix(ci): make litellm_internal_staging green (logging test + Bedrock Opus 4.7 self-heal) by @mateo-berri in https://github.com/BerriAI/litellm/pull/29344
* refactor(proxy/auth): normalize Bearer prefix in safe-hash helper by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29343
* test(reasoning-effort-grid): cover Claude Opus 4.8 across provider routes by @mateo-berri in https://github.com/BerriAI/litellm/pull/29327
* fix(guardrails): return HTTP 400 for litellm content filter blocks by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/28418
* fix(proxy): restrict vector store index create/delete to proxy admins by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/29202
* feat(pass_through): extend passthrough_managed_object_ids to Azure by @Sameerlite in https://github.com/BerriAI/litellm/pull/29160
* fix(proxy): enforce allowed_passthrough_routes for auth=true pass-thr… by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/29256
* feat(mcp/auth): additive key access-group grants + opt-in member assignment by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29313
* fix(reset_budget): write only {spend, budget_reset_at} and stop pre-zeroing counter by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29358
* test(e2e): cover PROXY_LOGOUT_URL redirect on Logout by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29080
* fix(ui): break logout redirect loop across dev and proxy origins by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29360
* fix(openai-moderation): wire streaming flags through to unified dispatcher by @michelligabriele in https://github.com/BerriAI/litellm/pull/27324
* chore(ci): build ui by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29366
* fix(v3 limiter): cap no-max_tokens TPM floor at smallest configured limit by @michelligabriele in https://github.com/BerriAI/litellm/pull/28805
* fix(e2e): tolerate trailing slash in SERVER_ROOT_PATH login redirect by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29369
* chore(deps): bump deps by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29373
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29372
* test(responses): bump deprecated gemini-3-pro-preview to gemini-3.1-pro-preview by @mateo-berri in https://github.com/BerriAI/litellm/pull/29433
* fix: map mistral/ministral-8b-latest in model price map by @mateo-berri in https://github.com/BerriAI/litellm/pull/29453
* fix(datadog): split oversized batches on 413 instead of re-queueing forever by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29444
* feat(otel): allowlist team_metadata sub-keys promoted to baggage by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29442
* fix: stop use_chat_completions_api flag from leaking into provider request body by @mateo-berri in https://github.com/BerriAI/litellm/pull/29447
* fix(anthropic, fireworks): inline legacy $ref defs in tool schemas by @milan-berri in https://github.com/BerriAI/litellm/pull/28646
* fix(proxy): omit OpenAI [DONE] on google-genai streamGenerateContent by @Sameerlite in https://github.com/BerriAI/litellm/pull/29426
* ci(release): create stable/X.Y.x line branch on X.Y.0 tags by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29457
* fix(vector-stores): support engines URL for Vertex AI Search by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/27885
* fix(ui): render caller-supplied filter options in caller order by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29462
* fix(batches): skip unnecessary batch input file reads by @Sameerlite in https://github.com/BerriAI/litellm/pull/29114
* docs(agents): clarify when to create new test files by @Sameerlite in https://github.com/BerriAI/litellm/pull/29472
* Litellm OSS Staging by @Sameerlite in https://github.com/BerriAI/litellm/pull/29161
* fix(mcp): clear allowed_tools and tool overrides on MCP server edit by @Sameerlite in https://github.com/BerriAI/litellm/pull/29411
* Litellm OSS Staging 010626 by @Sameerlite in https://github.com/BerriAI/litellm/pull/29422
* fix(ci): make CircleCI rerun-failed-tests collect tests when 2+ test files fail by @mateo-berri in https://github.com/BerriAI/litellm/pull/29475
* feat(a2a): watsonx Orchestrate agent provider by @Sameerlite in https://github.com/BerriAI/litellm/pull/29410
* fix(azure_ai): strip tool-level extra fields on 400 and retry by @Sameerlite in https://github.com/BerriAI/litellm/pull/29479
* fix(docs): remove fixed dimensions from README hero image by @mateo-berri in https://github.com/BerriAI/litellm/pull/29496
* Litellm oss staging by @Sameerlite in https://github.com/BerriAI/litellm/pull/29492
* fix: small CLAUDE.md nits by @mateo-berri in https://github.com/BerriAI/litellm/pull/29504
* Add MCP semantic conventions to otelv2 by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29468
* fix(passthrough): emit otel guardrail span when a guardrail blocks by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29470
* fix(proxy): strip NUL bytes from spend log payloads to prevent PostgreSQL 22P05 by @milan-berri in https://github.com/BerriAI/litellm/pull/29515
* [internal copy of #28008] Support MCP OAuth passthrough and issuer-scoped JWT auth by @mateo-berri in https://github.com/BerriAI/litellm/pull/28356
* feat(vector-stores): forward per-request params to Vertex AI Search by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29459
* feat(proxy): add per-MCP-server RPM rate limiting for keys and teams by @Sameerlite in https://github.com/BerriAI/litellm/pull/29482
* fix(tests): drop module-level test calls that break local_testing collection by @mateo-berri in https://github.com/BerriAI/litellm/pull/29520
* feat(agents): add LangFlow agent provider with A2A session bridging by @Sameerlite in https://github.com/BerriAI/litellm/pull/28963
* fix(ui/agents): make A2A skill tags enterable and validated by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29512
* [internal copy of #29232] feat: route future Claude models to Anthropic provider via pattern matching by @mateo-berri in https://github.com/BerriAI/litellm/pull/29239
* fix(tests): drop import-time completion call in test_register_model by @mateo-berri in https://github.com/BerriAI/litellm/pull/29521
* test: stabilize batch VCR coverage and stop live upload/network leaks by @mateo-berri in https://github.com/BerriAI/litellm/pull/29477
* [internal copy of #29003] fix(vertex_ai): use user-supplied api_base as is for Model Garden OpenAI-compat path by @mateo-berri in https://github.com/BerriAI/litellm/pull/29530
* feat(proxy): native /health/drain preStop hook for graceful shutdown by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29439
* fix(auth): preserve 401 status for expired JWTs in OTel traces by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29510
* fix(otel): capture 401 error details in management endpoint spans by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29535
* test(proxy/utils): pin bottom-of-file helper behavior by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29509
* test(proxy/utils): pin PrismaClient and spend-update behavior by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29488
* test(proxy/utils): pin ProxyLogging behavior by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29485
* fix: missing span for guardrail passthrough by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29552
* fix(auth): let internal users view search tools by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29542
* fix: missing mcp otel attributes by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29554
* fix(proxy): resolve managed video model ids for auth by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/29545
* fix(key_generate): allow team members to create keys on org-scoped teams by @milan-berri in https://github.com/BerriAI/litellm/pull/29310
* test(pass-through): move Gemini pass-through tests to gemini-3.1-flash-lite by @mateo-berri in https://github.com/BerriAI/litellm/pull/29595
* Litellm oss staging 030626 by @Sameerlite in https://github.com/BerriAI/litellm/pull/29578
* Fix : a2a bugs 030626 by @Sameerlite in https://github.com/BerriAI/litellm/pull/29566
* [internal copy of #29533] fix(anthropic/adapter): emit thinking block for reasoning_content-only streaming chunks by @mateo-berri in https://github.com/BerriAI/litellm/pull/29600
* ci: reproduce default-Windows wheel install to guard MAX_PATH by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29597
* fix(vertex): strip output_config.effort for Vertex Claude models that reject it (Haiku 4.5) by @mateo-berri in https://github.com/BerriAI/litellm/pull/29585
* Litellm websocket improvements by @Sameerlite in https://github.com/BerriAI/litellm/pull/29563
* feat(arize/phoenix): OpenInference rendering parity — tool_calls, cost, passthrough I/O, session/user, multimodal, cache tokens by @milan-berri in https://github.com/BerriAI/litellm/pull/28800
* [internal copy of #29550] fix: passthrough endpoints duplicate logs by @mateo-berri in https://github.com/BerriAI/litellm/pull/29598
* fix(ci): keep coverage rename green when a parallel node runs no tests by @mateo-berri in https://github.com/BerriAI/litellm/pull/29608
* test(vcr): close out the remaining VCR live-call leaks by @mateo-berri in https://github.com/BerriAI/litellm/pull/29603
* fix(key_generate): exempt UI/CLI session tokens from the budget ceiling for team keys by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29612
* fix(realtime): allow null transcripts in stream logging payloads by @milan-berri in https://github.com/BerriAI/litellm/pull/29625
* build(ui): migrate eslint to flat config + bump eslint-config-next to 16 by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29626
* fix(key_generate): scope session-token team-key budget exemption to caller-supplied team_id by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29641
* fix(proxy): disable proxy buffering on streaming SSE responses by @mateo-berri in https://github.com/BerriAI/litellm/pull/29557
* fix(mcp): gate /public/mcp_hub strictly on litellm.public_mcp_servers by @michelligabriele in https://github.com/BerriAI/litellm/pull/27764
* ci(ui): frontend-lint job enforcing prettier + eslint on changed files by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29633
* fix(gemini): googleSearch + server-side tools and googleMaps JSON schema by @Sameerlite in https://github.com/BerriAI/litellm/pull/29582
* fix(proxy): passthrough 404 when SERVER_ROOT_PATH is set by @Sameerlite in https://github.com/BerriAI/litellm/pull/29658
* fix(gemini-realtime): use GA event names for Pipecat 1.3.x compatibility by @Sameerlite in https://github.com/BerriAI/litellm/pull/29662
* Litellm oss staging 040626 by @Sameerlite in https://github.com/BerriAI/litellm/pull/29671
* style(ui): prettier formatting pass over the dashboard by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29622
* chore: ignore prettier dashboard reformat in git blame by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29695
* fix(helm): Enable Backend Deployment to mount Gateway config.yaml by @tin-berri in https://github.com/BerriAI/litellm/pull/29605
* [internal copy of #29277] fix(proxy): add default=None to LiteLLM_TeamMembership.litellm_budget_table by @mateo-berri in https://github.com/BerriAI/litellm/pull/29684
* test: make custom_tokenizer proxy tests hermetic by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29643
* test(proxy): stop running real-DB tests in GitHub Actions unit jobs by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29700
* chore(ui): remove the bare-fetch lint rule by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29712
* Litellm jwt mapping virtualkeys by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/28510
* refactor(ui): shared HTTP client + location-pinned fetch() lint rule by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29723
* fix(proxy): stop team BYOK model name corruption on model edit by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29731
* [internal copy of #29511] feat(guardrails): add sensitive data routing to on-premise models by @mateo-berri in https://github.com/BerriAI/litellm/pull/29531
* fix(proxy/hooks): populate llm_provider on internal rate-limit errors by @mateo-berri in https://github.com/BerriAI/litellm/pull/27707
* fix(vertex/anthropic): handle namespace tools and strip client_metadata for codex compatibility by @Sameerlite in https://github.com/BerriAI/litellm/pull/29489
* Support OAuth M2M for Databricks Apps A2A agents by @mateo-berri in https://github.com/BerriAI/litellm/pull/29586
* fix: small CLAUDE.md nit by @mateo-berri in https://github.com/BerriAI/litellm/pull/29749
* fix(anthropic): route Claude Opus 4.8 through adaptive thinking by @mateo-berri in https://github.com/BerriAI/litellm/pull/29702
* fix(proxy): persist oauth2_flow on MCP server registration by @michelligabriele in https://github.com/BerriAI/litellm/pull/29690
* [internal copy of #27491] fix(realtime): Fix Realtime Audio Token Cost Tracking by @mateo-berri in https://github.com/BerriAI/litellm/pull/29722
* fix(galileo): use ingest traces API and standard logging payload by @Sameerlite in https://github.com/BerriAI/litellm/pull/29651
* fix(auth): expand all-team-models sentinel in can_key_call_model for batch validation by @Sameerlite in https://github.com/BerriAI/litellm/pull/29746
* test(vcr): stop refreshing cassette TTL on read so cassettes lapse after 24h by @mateo-berri in https://github.com/BerriAI/litellm/pull/29784
* test(ci): record/replay OpenAI image gen so the spend E2E isn't outage-bound by @mateo-berri in https://github.com/BerriAI/litellm/pull/29787
* fix(ui): route MCP playground auth by oauth2 mode instead of token_url by @tin-berri in https://github.com/BerriAI/litellm/pull/29714
* refactor(ui): centralize proxy base URL resolution into tested resolver by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29793
* Litellm oss staging 050626 by @Sameerlite in https://github.com/BerriAI/litellm/pull/29774
* test(google): add google-genai SDK proxy integration tests by @Sameerlite in https://github.com/BerriAI/litellm/pull/29781
* fix(jwt): use resolved DB user_id for spend on legacy email match by @milan-berri in https://github.com/BerriAI/litellm/pull/29217
* feat(ui): generate dashboard API types from the proxy OpenAPI spec by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29816
* fix(proxy): drop deleted team BYOK model name from team.models by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29820
* feat(mcp): per-server env vars with global + per-user scopes by @mateo-berri in https://github.com/BerriAI/litellm/pull/28917
* refactor(ui): route behavior-preserving networking calls through apiClient by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29806
* fix(mcp): persist Tools-tab MCP OAuth token to DB by @tin-berri in https://github.com/BerriAI/litellm/pull/29809
* fix(ui): require new expiration when regenerating an expired key by @milan-berri in https://github.com/BerriAI/litellm/pull/29838
* refactor(ui): route query-building networking calls through apiClient by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29815
* Make the image-gen record/replay proxy report cache mode and per-request HIT/MISS by @mateo-berri in https://github.com/BerriAI/litellm/pull/29802
* feat(proxy): hot-reload .env in dev when running with --reload by @mateo-berri in https://github.com/BerriAI/litellm/pull/29783
* fix(ui): stop MCP playground tool calls from sending twice by @tin-berri in https://github.com/BerriAI/litellm/pull/29821
* feat(fal_ai): add Nano Banana / Gemini 2.5 Flash Image generation support by @mateo-berri in https://github.com/BerriAI/litellm/pull/29798
* Title: Fix managed batch cancel credential resolution by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/29734
* Title: fix(proxy): resolve vector store file list credentials from team deployments by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/29739
* refactor: convert AWS and GCP Terraform stacks into reusable modules … by @yassin-berriai in https://github.com/BerriAI/litellm/pull/28103
* chore(ui): build ui for release by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29853
* fix(terraform/gcp): prompt for image_registry in DeployStack one-click by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29852
* fix(terraform/gcp): abandon SQL user on destroy by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29855
* Extend the record/replay proxy to chat, embeddings, moderations, rerank, and Anthropic by @mateo-berri in https://github.com/BerriAI/litellm/pull/29847
* chore(deps): bump deps by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29860
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29861
* fix: 400 on Anthropic context overflow; seed identity on failed auth by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29848
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29862
* fix(responses-bridge): map system-only chat request to system input item by @milan-berri in https://github.com/BerriAI/litellm/pull/29817
* feat(bedrock): forward strict and additionalProperties to Converse toolSpec by @mateo-berri in https://github.com/BerriAI/litellm/pull/29814
* fix(mcp): highlight MCP cards red when the logged-in user is missing per-user env vars by @mateo-berri in https://github.com/BerriAI/litellm/pull/29856
* feat(ui): add budget duration to edit team member form by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29717
* fix(ui): make workflow runs page fill full width by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29868
* feat: standardize rate limit errors with category, rate_limit_type, model, and llm_provider fields by @mateo-berri in https://github.com/BerriAI/litellm/pull/27687
* fix(ui): default guardrails page to the Guardrails tab by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29872
* docs(readme): add Deploy on AWS/GCP Terraform section and fix deploy button rendering by @mateo-berri in https://github.com/BerriAI/litellm/pull/29879
* refactor(bedrock): build Converse toolSpec via a BedrockToolSpec dict subclass by @mateo-berri in https://github.com/BerriAI/litellm/pull/29869
* feat(litellm): add models and repository layers by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29686
* feat(ui): include internal routes in the dashboard's generated OpenAPI types by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29885
* feat(proxy): publish /v2/model/info in Swagger OpenAPI spec by @Sameerlite in https://github.com/BerriAI/litellm/pull/29900
* refactor(ui): single source of truth for migrated-page routing by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29949
* fix(ui/model-hub): render provider icons on the public model hub by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29958
* fix(ui): keep create guardrail modal open on outside click by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29871
* fix(ui): label default key type as "Full Access" on key edit page by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29870
* fix(ui): unify migrated-route URLs and migrate the API Reference page by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29953
* fix(mcp): let non-creator users OAuth into OBO-mode MCP servers from the Tools page by @tin-berri in https://github.com/BerriAI/litellm/pull/29867
* Litellm oss staging 080626 by @Sameerlite in https://github.com/BerriAI/litellm/pull/29932
* feat(galileo): add health check support for UI callback test by @Sameerlite in https://github.com/BerriAI/litellm/pull/29908
* fix(model-management): allow deleting a BYOK model after its team is deleted by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29875
* feat(jwt-auth): opt-in fallback to DB team on unresolved JWT claim by @milan-berri in https://github.com/BerriAI/litellm/pull/28913
* fix(team_endpoints): don't block /team/update on unchanged team budget by @milan-berri in https://github.com/BerriAI/litellm/pull/29525
* fix(fireworks): enable tool calling for glm-5p1 in model cost map by @milan-berri in https://github.com/BerriAI/litellm/pull/29697
* fix(vertex): propagate Vertex AI metadata in streaming success callbacks by @Sameerlite in https://github.com/BerriAI/litellm/pull/29899
* fix(ui): show team projects to internal users on key creation by @milan-berri in https://github.com/BerriAI/litellm/pull/28855
* build(deps): bump pyjwt to 2.13.0 and ws override to 8.20.1 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29982
* fix(team-management): delete a team's BYOK models when the team is deleted by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29977
* feat(vantage): include organization metadata in FOCUS Tags export by @milan-berri in https://github.com/BerriAI/litellm/pull/28184
* fix(guardrails): read CrowdStrike AIDR identity from both metadata bags by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29991
* fix(mcp): mirror upstream token lifetime instead of forcing a 1h OBO expiry by @tin-berri in https://github.com/BerriAI/litellm/pull/29951
* feat(azure_ai): add MAI-Image-2.5 image generation support by @Sameerlite in https://github.com/BerriAI/litellm/pull/29688
* fix(mcp): load MCP tool configuration tools via the OBO/passthrough-aware GET path by @tin-berri in https://github.com/BerriAI/litellm/pull/29960
* fix(team): reserve team budget raises for proxy admins on /team/update by @milan-berri in https://github.com/BerriAI/litellm/pull/30030
* test(ui): data-driven App Router migration E2E smoke (default + server-root-path) by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29974
* fix(proxy): extend response headers hook to streaming, TTS, image gen, and pass-through by @michelligabriele in https://github.com/BerriAI/litellm/pull/24232
* chore(ui): remove dead App Router route stubs under (dashboard) by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30045
* fix(ui/mcp): reset OAuth state on create-server modal close so a prior server's token no longer leaks into the next add-server session by @tin-berri in https://github.com/BerriAI/litellm/pull/30000
* fix(mcp): allow team access-group grants in OAuth authorize/token access check by @tin-berri in https://github.com/BerriAI/litellm/pull/30041
* docs(security): require a reproduction video for vulnerability reports by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30063
* feat(ui): add admin flag to disable in-product UI nudges for everyone by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29796
* chore(ui): remove dead dashboard files and unused dependencies by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30047
* fix(proxy): authorize batch files using upload target_model_names (LIT-3593) by @Sameerlite in https://github.com/BerriAI/litellm/pull/30009
* Add Claude Fable 5 across Anthropic, Bedrock, Vertex AI, and Azure AI by @mateo-berri in https://github.com/BerriAI/litellm/pull/30064
* Add Claude Fable 5 cost map entries (data-only hotfix for the hosted map) by @mateo-berri in https://github.com/BerriAI/litellm/pull/30076
* fix(caching): restore stored prompt_tokens on embedding cache hits instead of recomputing by @michelligabriele in https://github.com/BerriAI/litellm/pull/30046
* Litellm oss 090626 by @Sameerlite in https://github.com/BerriAI/litellm/pull/30021
* fix(proxy): self-heal startup/reload prisma reads on engine disconnect by @michelligabriele in https://github.com/BerriAI/litellm/pull/28803
* chore(ui): make knip recognize .mjs scripts and openapi-typescript by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30052
* fix(register_model): preserve built-in cache pricing when registering custom overrides under unmapped keys by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30044
* [internal copy of #28007] Fix/gcp model garden streaming by @mateo-berri in https://github.com/BerriAI/litellm/pull/28363
* feat(cli): per-agent `lite claude` / `codex` / `opencode` commands that wrap coding agents through the proxy by @mateo-berri in https://github.com/BerriAI/litellm/pull/29850
* fix(callbacks): forward callback_settings to callback initializers and guard consumers against non-dict values by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30161
* fix(mcp): drop orphaned per-user credential rows when an MCP server is deleted by @tin-berri in https://github.com/BerriAI/litellm/pull/30141
* fix(proxy): recover from cached-plan errors by reconnecting the Prisma client by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29983
* feat(proxy): add option to disable server-side prepared statements for DB lookups by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29984
* fix(release): stop backport releases from overwriting the latest badge by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30005
* feat: add conventional commits and coding guidelines by @mateo-berri in https://github.com/BerriAI/litellm/pull/30159
* fix(proxy): return 5xx on DB infra errors during auth; reserve 401 for genuine auth failures by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29986
* fix(ui): dev server 404s on migrated-page links because uiBase hardcodes /ui by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30169
* refactor(ui): consolidate dashboard to one shell in the (dashboard) layout by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30166
* fix(proxy): align /v1/model/info with router deployments by @Sameerlite in https://github.com/BerriAI/litellm/pull/30025
* fix: completion_cost AttributeError on streaming Anthropic web_search responses (#26153) by @ishaan-berri in https://github.com/BerriAI/litellm/pull/27346
* [internal copy of #30137] perf(realtime): eliminate redundant per-frame JSON work on OpenAI realtime relay by @mateo-berri in https://github.com/BerriAI/litellm/pull/30142
* feat(bedrock): aws_bedrock_project_id for bedrock-mantle project / workspace association by @mateo-berri in https://github.com/BerriAI/litellm/pull/30163
* chore(hooks): enforce Conventional Commits and Conventional Branches by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30174
* feat(rate-limiter): allow opting out of v3 TPM reservation and Redis circuit breaker by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30211
* feat(spend_logs): opt-in native Postgres partitioning for SpendLogs retention by @yassin-berriai in https://github.com/BerriAI/litellm/pull/29466
* feat(ui): migrate playground to path routing and colocate its files by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30185
* feat(ui): migrate projects and access-groups to path routes by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30226
* fix(proxy): coalesce NULL rollup metrics in aggregated daily-activity by @michelligabriele in https://github.com/BerriAI/litellm/pull/30151
* fix(anthropic_passthrough): resolve costing model from message_start chunk, litellm_params and model_group instead of 'unknown' by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30160
* feat(ui): migrate budgets, workflows, and guardrails-monitor to path routes by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30236
* feat(ui): migrate mcp-servers, search-tools, tag-management, vector-stores, and memory to path routes by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30261
* fix(a2a): forward agent_extra_headers through completion bridge by @mateo-berri in https://github.com/BerriAI/litellm/pull/28277
* fix(gemini-live): forward audio buffer commit and correct Vertex PCM rate by @Sameerlite in https://github.com/BerriAI/litellm/pull/29946
* fix(proxy): skip double-wrapping unified batch output file ids on retrieve by @Sameerlite in https://github.com/BerriAI/litellm/pull/30011
* feat: litellm oss 110626 by @Sameerlite in https://github.com/BerriAI/litellm/pull/30202
* fix(docker): copy only runtime artifacts into the final image by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30243
* feat(proxy): enforce key/team guardrails on bedrock passthrough routes by @Sameerlite in https://github.com/BerriAI/litellm/pull/30194
* feat(gemini): forward web search tools in image generation by @Sameerlite in https://github.com/BerriAI/litellm/pull/30119
* fix: bedrock mantle fixes by @Sameerlite in https://github.com/BerriAI/litellm/pull/30083
* feat(proxy): add require_managed_files setting for file uploads by @Sameerlite in https://github.com/BerriAI/litellm/pull/30186
* fix(mcp): honor server_id for REST tool calls with shared upstream URLs by @Sameerlite in https://github.com/BerriAI/litellm/pull/30184
* fix(responses): presidio PII masking for Azure WebSocket and streaming by @Sameerlite in https://github.com/BerriAI/litellm/pull/30003
* feat(passthrough): add configurable pass-through request timeouts by @Sameerlite in https://github.com/BerriAI/litellm/pull/30266
* fix(google_genai): preserve complete SSE events in Vertex/Gemini image streaming by @Sameerlite in https://github.com/BerriAI/litellm/pull/30270
* fix(proxy): populate access_via_team_ids on /v1/model/info by @Sameerlite in https://github.com/BerriAI/litellm/pull/30274
* chore(oss): litellm oss staging 120626 by @Sameerlite in https://github.com/BerriAI/litellm/pull/30292
* feat(ui): migrate policies, guardrails, prompts, tool-policies, and skills to path routes by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30263
* feat(ui): migrate caching, cost-tracking, transform-request, ui-theme, and logs to path routes by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30267
* fix(ui): gate dashboard layout on ui config load so deep links work under SERVER_ROOT_PATH by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30312
* feat(ui): migrate admin-panel, logging-and-alerts, model-hub-table, and usage to path routes by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30268
* fix(otel): cap metric attribute cardinality with include/exclude lists by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30257
* fix(proxy): grace-period key rotation 401s; return deprecated-key lookup result directly by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30327
* chore(deps): bump vitest, brace-expansion, pypdf and tornado by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30220
* refactor(ui): remove unreachable /chat page by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30178
* feat(ui): migrate agents and router-settings to path routes by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30323
* feat: strengthen coding conventions in CLAUDE.md by @mateo-berri in https://github.com/BerriAI/litellm/pull/30333
* feat(ui): cut the users page over to the /ui/users path route by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30334
* feat: ruff strict-rule suppressions baseline gate by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30303
* feat(guardrails): add Cisco AI Defense integration (#28249) by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30338
* chore(ui): remove dead UI components unreferenced by any page by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30340
* ci: add osv-scanner lockfile scan workflow by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30222
* fix(otel): record full error message on standard exception event in otel v2 by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30380
* test(fireworks): mock whisper transcription tests instead of live calls by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30391
* build(ui): pin esbuild to 0.28.1 via overrides by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30390
* feat(ui): cut the organizations page over to the /ui/organizations path route by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30336
* fix(proxy): support SMTP implicit SSL (port 465) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30395
* fix(mcp): default Linear MCP registry entry to streamable HTTP by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30396
* fix(ui): stop Virtual Keys page from infinite render loop by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30397
* fix(streaming): guard raise_on_model_repetition against empty choices by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/30485
* feat(otel-v2): emit the 6 gen_ai.client.* metrics at parity with v1 by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30326
* fix(mcp): drop phantom 401 span on delegated OAuth2 tool calls by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30494
* feat(ui): cut the teams page over to the /ui/teams path route by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30343
* fix(integrations): cap Anthropic cache_control injection at 4 blocks by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/30480
* chore(codecov): add Batches, Videos, and Realtime components by @Sameerlite in https://github.com/BerriAI/litellm/pull/30517
* test(batches): move orphan tests into tests/test_litellm for CI coverage by @Sameerlite in https://github.com/BerriAI/litellm/pull/30510
* fix(guardrails): run pre_call hook once for model-level guardrails by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30543
* fix(guardrails): stop re-initializing DB guardrails on every poll by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30542
* chore(oss): litellm oss staging 150626 by @Sameerlite in https://github.com/BerriAI/litellm/pull/30463
* ci(lint): add blanket-noqa, dataclass-default, and unused-noqa Ruff rules by @mateo-berri in https://github.com/BerriAI/litellm/pull/30516
* ci: ratchet lint and type-check gates (ruff preview, ANN, mypy, basedpyright) by @mateo-berri in https://github.com/BerriAI/litellm/pull/30379
* fix(proxy): allow internal roles to access vector store CRUD routes by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/30503
* fix(otel): stamp gen_ai.input/output.messages on v2 spans by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30548
* fix(otel): export v2 gen_ai client metrics to the configured meter provider by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30549
* fix(bedrock): preserve cache_control for ARN models in /v1/messages adapter by @mateo-berri in https://github.com/BerriAI/litellm/pull/29823
* fix: greatly increase basedpyright slack by @mateo-berri in https://github.com/BerriAI/litellm/pull/30563
* fix(budget): recompute budget_reset_at when budget_duration changes on /budget/update by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30555
* fix(otel): accept UPPER_SNAKE_CASE OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT in v2 by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30562
* chore(lint): remove PLR0915 too-many-statements ruff rule by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30574
* ci(lint): ratcheted type-discipline gate (mutable collections, casts, guards, kwargs, suppressions) by @mateo-berri in https://github.com/BerriAI/litellm/pull/30500
* feat(proxy): add verification_uri_complete to CLI SSO device flow by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30571
* chore: litellm oss staging160626 by @Sameerlite in https://github.com/BerriAI/litellm/pull/30527
* fix(guardrails): return 400 not 500 when AIM blocks a request by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30573
* ci(lint): grandfather any-discipline with a per-file ratchet budget (50% headroom) by @mateo-berri in https://github.com/BerriAI/litellm/pull/30582
* fix(audio): don't override explicit response_format with verbose_json by @mateo-berri in https://github.com/BerriAI/litellm/pull/30599
* fix(anthropic): price and surface response service_tier in cost tracking by @mateo-berri in https://github.com/BerriAI/litellm/pull/30558
* feat: add dev and wildcard proxy configs for local testing by @mateo-berri in https://github.com/BerriAI/litellm/pull/30556
* fix(proxy): list public team model name in /v1/models by @ishaan-berri in https://github.com/BerriAI/litellm/pull/30588
* ci: drop mypy entirely, standardize type checking on basedpyright by @mateo-berri in https://github.com/BerriAI/litellm/pull/30648
* feat(guardrails): surface OpenAI moderation violation_categories on guardrail traces by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30659
* fix(proxy): resolve list files credentials from team BYOK deployments by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/30495
* feat(proxy): add --max_requests_before_restart_jitter to stagger worker restarts by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30601
* fix(health): correct bedrock embedding health checks by @mateo-berri in https://github.com/BerriAI/litellm/pull/30583
* test: harden remaining pass-through CI flakes (image-gen spend poll, ruby assistants timeout) by @mateo-berri in https://github.com/BerriAI/litellm/pull/30685
* test(pass_through): harden vertex spendlog poll against transient empty reads by @mateo-berri in https://github.com/BerriAI/litellm/pull/30683
* fix(cost): stop non-string service_tier from silently dropping cost tracking by @mateo-berri in https://github.com/BerriAI/litellm/pull/30690
* feat(proxy): warn at startup when custom_auth skips common_checks enforcement by @tin-berri in https://github.com/BerriAI/litellm/pull/30665
* fix(pod_lock): release cron lock by matching async_set_cache JSON encoding by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30600
* ci: run a local fake OpenAI endpoint instead of the shared Railway mock by @mateo-berri in https://github.com/BerriAI/litellm/pull/30695
* ci(windows): pin uv to Python 3.11 so it ignores the preinstalled 3.14 by @mateo-berri in https://github.com/BerriAI/litellm/pull/30704
* feat(ui): migrate models page to App Router path route by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30677
* refactor(ui): remove orphaned pass-through-settings route by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30692
* fix(cost): stop non-string response service_tier from dropping cost tracking by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30706
* feat(agent-shin): automated PR/issue triage, low-quality auto-close, and review-gate label lifecycle by @mateo-berri in https://github.com/BerriAI/litellm/pull/30433
* chore: litellm oss 170626 by @Sameerlite in https://github.com/BerriAI/litellm/pull/30637
* fix(bedrock_mantle): add SigV4 fallback to chat completions auth by @mateo-berri in https://github.com/BerriAI/litellm/pull/30714
* feat(search): add TinyFish as search provider by @simantak-dabhade in https://github.com/BerriAI/litellm/pull/30634
* feat(ui): migrate old usage report to App Router path route by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30694
* fix(proxy): enforce budgets against authoritative DB spend when the cross-pod counter is stale by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30684
* chore(ci): remove Agent Shin pull_request_target workflows by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30784
* chore: litellm oss staging by @Sameerlite in https://github.com/BerriAI/litellm/pull/30745
* ci(zizmor): also run on litellm_internal_staging by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30789
* fix(test): drop references to removed Agent Shin workflows by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30791
* chore: remove in-product survey and Claude Code feedback nudges by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30773
* feat(ui): migrate api-keys landing to App Router path route by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30699
* feat(proxy): configurable response headers and login-page hint by @yucheng-berri in https://github.com/BerriAI/litellm/pull/30792
* ci(zizmor): gate PRs on medium+ findings and clear existing ones by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30797
* fix(proxy): use e.request_data for logging_obj in ModifyResponseException streaming passthrough by @mateo-berri in https://github.com/BerriAI/litellm/pull/30800
* chore: make pr template linear portion clearer by @mateo-berri in https://github.com/BerriAI/litellm/pull/30766
* chore(typing): add boto3/botocore stubs so basedpyright resolves the AWS SDK by @mateo-berri in https://github.com/BerriAI/litellm/pull/30815
* fix(otel): one v2 logger owns the global provider; scope tenant OTLP creds per exporter by @yucheng-berri in https://github.com/BerriAI/litellm/pull/30590
* fix(passthrough): recover output tokens for interrupted anthropic streams by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30787
* fix(proxy): record partial spend on the failure row for interrupted streams by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30788
* fix(ui): repoint dead usage guide link to cost tracking docs by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30859
* fix(ui): warn that team models are deleted in the delete-team modal by @yuneng-berri in https://github.com/BerriAI/litellm/pull/29990
* feat(caching): add valkey-semantic cache backend and fix semantic cache scope keys by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30675
* test(ui): isolate OldTeams delete-warning tests from leaked mock by @mateo-berri in https://github.com/BerriAI/litellm/pull/30871
* feat: add lint-gate target and truncation-proof summary to the strict ruff gate by @mateo-berri in https://github.com/BerriAI/litellm/pull/30877
* chore(ui): rebuild ui for release by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30894
* chore(ci): bump deps by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30899
* fix(watsonx): wrap string embedding input in array for WatsonX API by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/30897
* test: point router/completion/triton tests at the local fake OpenAI endpoint by @mateo-berri in https://github.com/BerriAI/litellm/pull/30900
* feat(sandbox): e2b code execution primitive by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/30898
* fix(ui): source api-keys identity from useAuthorized to stop "User ID is not set" by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30903
* chore(ui): rebuild ui by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30906
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30907
* fix(redis): prevent forcing SSLConnection when ssl=False in connection pool by @Jacopos311 in https://github.com/BerriAI/litellm/pull/30770
* fix(proxy): log UI setup failures instead of silently swallowing by @sarvesh1327 in https://github.com/BerriAI/litellm/pull/30819
* feat(auth): resolve caller identity once into a Principal at the auth seam by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30887
* feat(fireworks_ai): sync chat completions endpoint with full API surface by @mateo-berri in https://github.com/BerriAI/litellm/pull/30885
* feat: litellm plugin architecture v2 by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/30688
* feat(sandbox): code interpreter interceptor on the Responses API by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/30905
* refactor(exceptions): extract exception_type provider dispatch so basedpyright can analyze it by @mateo-berri in https://github.com/BerriAI/litellm/pull/30802
* refactor(streaming): extract chunk_creator dispatch so basedpyright can analyze it by @mateo-berri in https://github.com/BerriAI/litellm/pull/30793
* test(interactions): drop role from Interaction output fields to match Google spec by @tin-berri in https://github.com/BerriAI/litellm/pull/30986
* fix(mcp): stop exposing MCP server URLs on the AI Hub and public hub API by @tin-berri in https://github.com/BerriAI/litellm/pull/30902
* perf(otel): resolve LITELLM_OTEL_V2 flag once instead of rebuilding settings per call by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30989
* fix(ui): stop per-model usage export from duplicating user spend across models by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30980
* fix: reject model_list in proxy body and gate advisor client credentials by @yucheng-berri in https://github.com/BerriAI/litellm/pull/30585
* feat(scim): drive global proxy role from a SCIM admin group by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30895
* feat(scim): ingest enterprise extension attributes into user metadata by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30893
* fix(ui): resolve user_id to email in Spend Per User usage chart by @yassin-berriai in https://github.com/BerriAI/litellm/pull/30992
* fix: prevent key-level metadata.tags from leaking into Bedrock passthrough body by @mateo-berri in https://github.com/BerriAI/litellm/pull/30985
* fix(proxy): scope team BYOK models by key team_id in /model/info by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31009
* fix(bedrock): only expand config-sourced AWS credential references by @yucheng-berri in https://github.com/BerriAI/litellm/pull/30867
* feat(mcp): scope a key to zero MCP servers with no-mcp-servers sentinel by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31029
* feat(ui): add Amazon Bedrock Mantle to the Add Model provider dropdown by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31034
* feat(proxy): allow llm_api_routes virtual keys to list MCP tools via /v1/mcp/tools by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31031
* fix(ui): label request logs column "Key Alias" to match filter by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31037
* test(ui): scrub stale return-url cookie from e2e storageState by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/30317
* docs: add MCP server change guidelines by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/31038
* fix(passthrough,streaming): recover cost on interrupted and agentic Anthropic streams by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31035
* fix(ui): clarify OpenAI-compatible provider dropdown labels (chat vs legacy completions) by @mateo-berri in https://github.com/BerriAI/litellm/pull/31046
* fix(proxy): serialize team budget_limits to JSON in jsonify_team_object by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31045
* fix(realtime): stop revalidating realtime events at the logging boundary by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31054
* feat(mcp): scaffold outbound_credentials package with typed Result by @tin-berri in https://github.com/BerriAI/litellm/pull/31047
* fix(router): isolate all per-deployment pricing overrides from sibling deployments by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/31021
* fix(mcp): stop auth failures on the /mcp path surfacing as cancelled tool calls by @tin-berri in https://github.com/BerriAI/litellm/pull/31011
* refactor(completion): extract provider dispatch into typed helpers so basedpyright can analyze it by @mateo-berri in https://github.com/BerriAI/litellm/pull/30813
* chore: litellm oss staging by @Sameerlite in https://github.com/BerriAI/litellm/pull/30968
* fix(typing): bring reportReturnType back under the basedpyright budget by @mateo-berri in https://github.com/BerriAI/litellm/pull/31103
* fix(realtime): post-tool-call function_response id omission by @Sameerlite in https://github.com/BerriAI/litellm/pull/30446
* feat: add opensandbox sandbox provider by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/31024
* feat(mcp): add resolve_credentials dispatch skeleton by @tin-berri in https://github.com/BerriAI/litellm/pull/31056
* fix(router): guard num_retries=None in async_function_with_retries by @milan-berri in https://github.com/BerriAI/litellm/pull/30036
* fix(ui): keep team Organization optional for proxy admins in single-org setups by @yuneng-berri in https://github.com/BerriAI/litellm/pull/30861
* feat(cloudflare): add current Workers AI text-generation models to the cost map by @mateo-berri in https://github.com/BerriAI/litellm/pull/31051
* ci: make the basedpyright budget gate delta-vs-base by @mateo-berri in https://github.com/BerriAI/litellm/pull/31106
* fix(cloudflare): route native Workers AI provider through OpenAI-compatible endpoint by @mateo-berri in https://github.com/BerriAI/litellm/pull/31053
* feat: add chat completions code interpreter loop by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/31027
* fix(search): block server credential leak to caller-supplied api_base by @tin-berri in https://github.com/BerriAI/litellm/pull/30682
* feat: add LiteLLM Rust workspace with Mistral OCR bridge by @ishaan-berri in https://github.com/BerriAI/litellm/pull/31033
* fix(router): honor litellm_settings.request_timeout as an independent per-attempt timeout by @mateo-berri in https://github.com/BerriAI/litellm/pull/31119
* fix: tighten role-based visibility of config and MCP fields by @yucheng-berri in https://github.com/BerriAI/litellm/pull/30587
* feat: add openai realtime translation layer to litellm-rust (1/2) by @ishaan-berri in https://github.com/BerriAI/litellm/pull/31129
* fix(deps): bump osv-flagged dependencies to clear known CVEs by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31122
* fix(model_prices): correct regional processing uplift to gpt-5.4/5.5 series only by @mateo-berri in https://github.com/BerriAI/litellm/pull/31136
* chore(ci): bump litellm version by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31139
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31140
* fix(bedrock-mantle): honor api_base for VPC endpoint routing on bedro… by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/31141
* fix(docker): bump wolfi-base digest to patch openssl CVE-2026-34182 by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31133
* feat: add minimal rust router + axum ai-gateway calling router.realtime (2/2) by @ishaan-berri in https://github.com/BerriAI/litellm/pull/31135
* build: add Dockerfile + render blueprint for rust ai-gateway by @ishaan-berri in https://github.com/BerriAI/litellm/pull/31154
* fix(mcp): resolve config-defined servers in per-user credential and env-var endpoints by @tin-berri in https://github.com/BerriAI/litellm/pull/31171
* perf: pre-warm upstream realtime connection pool to cut session-establishment latency by @ishaan-berri in https://github.com/BerriAI/litellm/pull/31163
* chore: clarify rule about trailing periods by @mateo-berri in https://github.com/BerriAI/litellm/pull/31175
* fix(anthropic): drop unsupported speed param with drop_params by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/31152
* fix(proxy): expand all-proxy-models sentinel in direct access lookup by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/31153
* fix(anthropic): sanitize tool_use ids on native /v1/messages path by @Sameerlite in https://github.com/BerriAI/litellm/pull/31094
* fix(ui): persist budget window deletion on virtual keys by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31107
* feat(ui): track frontend lint counts in a committed snapshot by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31157
* refactor(litellm-rust): dissolve providers into core + ai-gateway (strict 3-crate layers) by @ishaan-berri in https://github.com/BerriAI/litellm/pull/31218
* fix(vertex/files): stream OpenAI->Vertex batch JSONL uploads by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/31036
* fix(mcp): let proxy admins assign MCP servers to teamless keys by @tin-berri in https://github.com/BerriAI/litellm/pull/31126
* feat(mcp): graft v2 resolver onto _create_mcp_client (none + api_key static family) by @tin-berri in https://github.com/BerriAI/litellm/pull/31058
* test: add e2e tests for spend, budgets and llms by @mateo-berri in https://github.com/BerriAI/litellm/pull/30869
* feat(proxy): add POST /v1/callbacks/logs to replay logging payloads through callbacks by @ishaan-berri in https://github.com/BerriAI/litellm/pull/31134
* fix(ui): render logos under a custom server_root_path by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31156
* feat: make rust OCR async-first by @ishaan-berri in https://github.com/BerriAI/litellm/pull/31253
* test(e2e): drop xfail markers for now-fixed team-budget-JSON and custom-pricing-leak bugs by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/31249
* fix(proxy): stop double-decrypting email/slack alerting env vars in get_config by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/31117
* fix(mcp): correct misleading no-trusted-proxy warning for XFF access control by @mateo-berri in https://github.com/BerriAI/litellm/pull/31264
* fix(mcp): warn loudly when X-Forwarded-For is present but use_x_forwarded_for is off by @mateo-berri in https://github.com/BerriAI/litellm/pull/31266
* fix(mcp): resolve toolset tools by the server's known prefix by @tin-berri in https://github.com/BerriAI/litellm/pull/31254
* fix(mcp): challenge delegate-auth OAuth servers with upstream resource_metadata by @tin-berri in https://github.com/BerriAI/litellm/pull/31255
* fix(ci): point OSS contributor workflows to litellm_oss_staging by @Sameerlite in https://github.com/BerriAI/litellm/pull/31270
* fix(streaming): word-sliced cache replay for stream=true cache hits by @michelligabriele in https://github.com/BerriAI/litellm/pull/30216
* feat(mcp): add mcp_xff_num_trusted_hops to harden X-Forwarded-For client IP resolution by @mateo-berri in https://github.com/BerriAI/litellm/pull/31257
* chore: migrate Python formatter from black to ruff format by @mateo-berri in https://github.com/BerriAI/litellm/pull/31317
* fix(otel): hashable scope for _emit_once when guardrail_mode is list by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31262
* feat: package Rust OCR bridge in LiteLLM wheel by @ishaan-berri in https://github.com/BerriAI/litellm/pull/31267
* chore: gitignore rust bridge build artifacts by @mateo-berri in https://github.com/BerriAI/litellm/pull/31349
* ci: harden cargo fetches during maturin builds by @ishaan-berri in https://github.com/BerriAI/litellm/pull/31348
* chore(lint): widen ANN slack to 10% of baseline and drop PLR0913 from the strict gate by @mateo-berri in https://github.com/BerriAI/litellm/pull/31335
* feat: add Rust OCR providers by @ishaan-berri in https://github.com/BerriAI/litellm/pull/31272
* fix(cache): apply Redis namespace to all key operations by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31288
* feat(pricing): add gemini-3-pro-image and gemini-3.1-flash-image GA model pricing by @milan-berri in https://github.com/BerriAI/litellm/pull/30022
* fix: clarify further that customer names shouldn't be made public by @mateo-berri in https://github.com/BerriAI/litellm/pull/31365
* ci(image-scan): add Grype image scan for OS + library CVEs by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31151
* feat(aiml): add openai/gpt-image-2 image model by @mateo-berri in https://github.com/BerriAI/litellm/pull/31323
* feat(mistral): support Mistral OCR 4 (mistral-ocr-4-0) by @mateo-berri in https://github.com/BerriAI/litellm/pull/31353
* fix: inverted rule in CLAUDE.md by @mateo-berri in https://github.com/BerriAI/litellm/pull/31370
* fix(proxy/client): redact api key from key/info client error messages by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31342
* feat(spend): store litellm_call_id on spend logs for DB-to-trace correlation by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31344
* chore(deps): bump deps by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31377
* fix(cost-map): retarget mistral-medium-latest to Medium 3.5 and add date-pinned aliases by @mateo-berri in https://github.com/BerriAI/litellm/pull/31373
* feat(ocr): thin Rust OCR Python bridge by @ishaan-berri in https://github.com/BerriAI/litellm/pull/31368
* feat(mcp): opt-in least-privilege default for team key MCP access by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31380
* chore(ci): main into internal_staging (reconcile OCR hotfix history; unblocks #31384) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31390
* fix(vertex): preserve Gemini Embedding 2 usageMetadata for cost tracking by @mateo-berri in https://github.com/BerriAI/litellm/pull/31354
* chore: remove CI section from PR template by @mateo-berri in https://github.com/BerriAI/litellm/pull/31376
* test(logging): regression coverage for streaming /v1/messages OpenAI Responses spend logs by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31388
* chore: litellm oss staging 250626 by @Sameerlite in https://github.com/BerriAI/litellm/pull/31305
* fix(vertex_ai): prevent stale Vertex bearer token causing /v1/messages 401 after token expiry by @Sameerlite in https://github.com/BerriAI/litellm/pull/31276
* fix(proxy): skip model override when response has no model field by @Sameerlite in https://github.com/BerriAI/litellm/pull/31183
* fix(vertex): stop O(n^2) re-parse of accumulated Gemini stream JSON by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31297
* fix(router): surface clean RateLimitError on mid-stream 429 with no fallbacks by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31298
* build(docker): build the Admin UI from source in a build-platform-pinned stage by @tin-berri in https://github.com/BerriAI/litellm/pull/31130
* fix(bedrock_guardrails): select latest user message by original role in apply_guardrail by @michelligabriele in https://github.com/BerriAI/litellm/pull/30482
* fix(proxy): restore wildcard expansion in /v1/model/info by @Sameerlite in https://github.com/BerriAI/litellm/pull/31444
* fix(cli): mint per-session agent credential on lite login by @Sameerlite in https://github.com/BerriAI/litellm/pull/31072
* chore: litellm oss staging by @Sameerlite in https://github.com/BerriAI/litellm/pull/31185
* fix(cost): restore per-query Gemini 3.x web search billing by @mateo-berri in https://github.com/BerriAI/litellm/pull/31363
* chore(ci): reconcile main into internal_staging to unblock promotion (#31384) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31392
* test: add realtime proxy e2e suite across providers by @Sameerlite in https://github.com/BerriAI/litellm/pull/30960
* perf(spend-logs): only strip NUL bytes in safe_dumps when present by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31424
* perf(cost-calc): precompute service-tier cost-key suffixes by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31431
* perf(caching): memoize _get_all_llm_api_params, rebuilt per request by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31430
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31384
* feat(mistral): add mistral/mistral-ocr-2512 (OCR 3) to cost map by @mateo-berri in https://github.com/BerriAI/litellm/pull/31463
* feat(guardrails): make the Generic Guardrail resilient to built-in tools and errors (adopted from #31286) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31461
* test(pass-through): fix langfuse auth=true test broken by allowed_passthrough_routes gate by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31420
* fix(team): persist budget_duration on /team/member_add member budgets by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31443
* fix(spend): fold logs-tab total into the page query to avoid a separate COUNT(*) by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31423
* fix(bedrock): surface web identity token aud/iss on InvalidIdentityToken by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31412
* fix(guardrails): instrument during-call and post-call guardrail latency by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31414
* fix(auth): cache auth-path team object under canonical team_id key by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31418
* fix(build): restore pure-Python uv_build backend to unblock PyPI publish by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31470
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31477
* fix(guardrails): match policy-pipeline block response to direct guardrail attachment by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31421
* feat(prometheus): add requested_model label to spend and requests metrics by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31410
* fix(ui): stop listing bedrock_mantle models under the Bedrock provider by @mateo-berri in https://github.com/BerriAI/litellm/pull/31478
* fix(mcp): stop logging tool-call input in MCP client by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31393
* feat(mcp): shared OAuth token foundation - challenge, store seam, expiry-aware cache, single-flight refresh by @tin-berri in https://github.com/BerriAI/litellm/pull/31275
* fix(passthrough): schedule spend logging via durable logging worker by @mateo-berri in https://github.com/BerriAI/litellm/pull/31485
* fix(websearch): wrap agentic loop response in fake stream for streaming requests by @mateo-berri in https://github.com/BerriAI/litellm/pull/31484
* feat(guardrails): add headroom guardrail for message compression by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/31407
* fix(websearch): sync tool_choice when converting web_search tools by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/31375
* fix(passthrough): forward all multipart files with repeated field names by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/31391
* fix(cost): preserve Anthropic server_tool_use web search usage in cost tracking by @mateo-berri in https://github.com/BerriAI/litellm/pull/31355
* fix(otel): point AgentOps OTLP exporter at otlp.agentops.ai by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31490
* feat(mcp): migrate authorization_code MCP to the v2 resolver (single-replica) [1/2] by @tin-berri in https://github.com/BerriAI/litellm/pull/31473
* fix(pass-through): stop pass-through route registry growing every reload (PERF-13) by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31314
* fix(bedrock): normalize Messages system role and adaptive-thinking for Claude Invoke by @mateo-berri in https://github.com/BerriAI/litellm/pull/31364
* perf(proxy): bound event-loop blocking from oversized requests by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31497
* fix(proxy): cancel upstream LLM stream when client disconnects during time-to-first-token by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31499
* fix(pass_through): log pre-call guardrail blocks at WARNING, not ERROR with a traceback by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31500
* fix(proxy/auth): honor user_api_key_cache_ttl for management-object cache writes by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31504
* feat(prometheus): add per-team litellm_team_members_metric gauge by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31506
* fix(redis): loop-scope async Lua script registration by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31501
* style: unify ruff format width on 120 by @mateo-berri in https://github.com/BerriAI/litellm/pull/31518
* chore: ignore ruff-format reformat commits in git blame by @mateo-berri in https://github.com/BerriAI/litellm/pull/31520
* fix(vertex_ai): append rawPredict suffix for custom api_base on /v1/m… by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/31529
* feat(mcp): cross-replica single-flight refresh for the v2 per-user OAuth store [2/2] by @tin-berri in https://github.com/BerriAI/litellm/pull/31493
* chore: remove unused keys from model cost map by @mateo-berri in https://github.com/BerriAI/litellm/pull/31528
* fix(agents): show an agent's attached virtual key in the UI by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29619
* fix(router): persist global retry_policy via /config/update by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/29540
* chore: update Next.js build artifacts (2026-06-28 00:38 UTC, node v20… by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/31539
* chore(ci): promote internal staging to main by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/31542
* fix(realtime): stop second Gemini Live setup, retry hung handshake, close guardrail bypass by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/31519
* feat: declarative fallback generalizations for unknown models by @mateo-berri in https://github.com/BerriAI/litellm/pull/29718
* test(e2e): move rust OCR e2e into llm_translation on the shared harness by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/31488
* test(videos): add 1:1 test file scaffold for videos component paths by @Sameerlite in https://github.com/BerriAI/litellm/pull/30631
* test(batches): add 1:1 test file scaffold for batches component paths by @Sameerlite in https://github.com/BerriAI/litellm/pull/30529
* feat(a2a): support a2a-sdk 1.x proxy routing for 0.3 and 1.0 agents by @Sameerlite in https://github.com/BerriAI/litellm/pull/30950
* feat(proxy): add AES-256-GCM at-rest credential encryption with versioned format and re-encryption migration by @michelligabriele in https://github.com/BerriAI/litellm/pull/31215
* chore(router): simplify unknown-model error message construction by @stuxf in https://github.com/BerriAI/litellm/pull/31566
* chore(ci): re-issue 31566 for full CI run by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31629
* fix(ui): keep virtual-keys filters across delete and refresh (LIT-4080) by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31533
* perf(ui): load virtual-keys team filter from the fast v2 endpoint by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31638
* fix(databricks): split parallel tool calls so each tool message follows tool_calls by @mateo-berri in https://github.com/BerriAI/litellm/pull/31633
* fix(proxy): gate non-admin /key/generate budget_limits and permissions (VERIA-392) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31469
* perf(auth): gather independent pre-call budget-enforcement reads in common_checks by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31604
* fix(proxy): reject non-finite budget_limits windows on /key/generate (LIT-4094) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31630
* fix(proxy): hard-reject CLI session token personal-key budget_limits (LIT-4095) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31631
* fix(vertex_ai/files): single media upload for batch files to fix 499s on large uploads by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/31653
* fix(proxy): count only active users toward license seat limit by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31227
* fix(mcp): resolve per-user OAuth identity authoritatively at the token endpoint by @tin-berri in https://github.com/BerriAI/litellm/pull/31657
* fix(proxy): reject team-scoped object_permission on personal keys for non-admins by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31471
* refactor(ui): colocate search-tools into route-level _components by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31658
* fix(passthrough): drop top-level additional_drop_params on /v1/messages by @mateo-berri in https://github.com/BerriAI/litellm/pull/31645
* fix(guardrails): scan file and document attachments with Model Armor by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31655
* fix: skip health check for semantic auto_router deployments by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/31668
* fix(bedrock): drop unmappable Responses tools instead of failing the request (LIT-3858) by @mateo-berri in https://github.com/BerriAI/litellm/pull/31663
* ci(linting): generate prisma client before basedpyright typecheck by @mateo-berri in https://github.com/BerriAI/litellm/pull/31673
* fix(proxy): emit x-litellm-response-cost header on /messages and /generateContent (LIT-4076) by @mateo-berri in https://github.com/BerriAI/litellm/pull/31675
* fix(mcp): support client_secret_basic for upstream OAuth token endpoints by @tin-berri in https://github.com/BerriAI/litellm/pull/31635
* feat(cost_calculator): log per-token-type reasoning and cache cost br… by @Sameerlite in https://github.com/BerriAI/litellm/pull/31686
* fix(anthropic): drop unsignable thinking blocks and allow null signature in logging (LIT-4007) by @mateo-berri in https://github.com/BerriAI/litellm/pull/31654
* chore(docs): remove docs accidentally committed to litellm repo by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31691
* chore: remove _experimental/out by @mateo-berri in https://github.com/BerriAI/litellm/pull/31546
* feat(prometheus): add litellm_overhead_with_guardrails_latency_metric by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31593
* chore: shift CI lint left with an opt-in `make pre-commit` and CLAUDE.md rule by @mateo-berri in https://github.com/BerriAI/litellm/pull/31544
* feat(proxy): type Customer Management response_model for OpenAPI coverage by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31043
* fix(ui): stop Request Logs page from overflowing horizontally and size its columns by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31426
* perf(otel): memoize per-request lazy import of otel runtime hooks by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31707
* feat(otel): emit a tools/list CLIENT span for MCP discovery under otel_v2 by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31525
* test(benchmarks): add CodSpeed benchmarks for inference, MCP and A2A hot paths by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31716
* fix(ui): allow any git host on the skills add form (LIT-4053) by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31652
* perf(spend): move cost-callback payload deepcopy off the request event loop by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31579
* chore: prevent CLAUDE.md comment bloat by @mateo-berri in https://github.com/BerriAI/litellm/pull/31729
* feat(guardrails): expose streaming knobs on generic_guardrail_api by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31730
* feat(router): tag routing denylist support via ! prefix by @mateo-berri in https://github.com/BerriAI/litellm/pull/31728
* fix(mcp): stop one unauthenticated server from emptying the aggregate tools/list by @tin-berri in https://github.com/BerriAI/litellm/pull/31684
* perf(spend): gather independent per-scope spend-counter increments by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31578
* fix(email): apply EMAIL_SIGNATURE to budget alert emails by @michelligabriele in https://github.com/BerriAI/litellm/pull/31712
* feat(messages): passthrough /v1/messages to native endpoints via supported_endpoints by @mateo-berri in https://github.com/BerriAI/litellm/pull/31685
* fix(proxy): isolate poison spend-log rows so one bad record can't drop the whole batch by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31705
* fix(redis): re-establish async cluster connections after a node restart by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31577
* fix(logging): route realtime success logging through the bounded worker by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/31733
* fix(presidio): stream SSE output incrementally instead of buffering the whole response by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31503
* feat(anthropic): add Claude Sonnet 5 by @mateo-berri in https://github.com/BerriAI/litellm/pull/31740
* chore: bump litellm to 1.92.0 and litellm-enterprise to 0.1.45 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31757
* fix(token_counter): count legacy function_call.arguments (VERIA-492) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31741
* fix(presidio): revert stream SSE output incrementally instead of buffering by @tin-berri in https://github.com/BerriAI/litellm/pull/31764
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31765
* ci(codspeed): pin benchmark runner to ubuntu-24.04 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31746
* test(pass-through): de-flake vertex spend-log test by routing through the proxy by @mateo-berri in https://github.com/BerriAI/litellm/pull/31689
* fix(proxy): extend banned-params + admin-clear lists (VERIA-493) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31742
* fix(ui): fix Router Settings Loadbalancing tab save (LIT-4057) by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31735
* fix(ui): rotate model credentials in a dedicated modal so a normal save can't overwrite secrets by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/28089
* feat(proxy): audit default user settings updates by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31753
* fix(websearch): websearch_interception agentic loop fixes for chat completions and anthropic messages by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/31669
* feat(sandbox): reuse e2b container across requests when metadata.session_id is set by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/31688
* feat(proxy): support object_permission in default_key_generate_params by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/31776
* feat(guardrails/headroom): add CCR (compress-cache-retrieve) via agentic loop by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/31681
* feat: add cache control injection support for v1/messages endpoint by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/31778
* feat(proxy): audit remaining system-wide settings updates by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31754
* fix(prometheus): expose project_alias in custom metadata labels (LIT-3741) by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/31784
* feat(mcp): add mcp_tool_search virtual tools for large tool catalogs by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/31777
* fix(proxy): hydrate MCP server registry from DB on startup when store_model_in_db is false by @tin-berri in https://github.com/BerriAI/litellm/pull/31775
* refactor(lint): collapse type/lint budgets to a single per-rule limit by @mateo-berri in https://github.com/BerriAI/litellm/pull/31883
* feat(ui): disclaim that the Update API Key modal only rotates api_key by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31805
* revert: "chore: remove _experimental/out" (#31546) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31904
* fix(scripts): resolve worktree root before relative_to in type_check_gate by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31906
* feat(bedrock_mantle): add xai.grok-4.3 to model cost map for SigV4 auth by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/31916
* chore: make CLAUDE.md rules more concise by @mateo-berri in https://github.com/BerriAI/litellm/pull/31892
* fix(proxy): authorize /health/test_connection against loaded deployment's team_id (VERIA-441) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31767
* fix(proxy): admin-gate `permissions` on /key/update and /key/regenerate (LIT-4092) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31810
* feat(github_copilot): route /v1/messages to Copilot native Anthropic endpoint by @mateo-berri in https://github.com/BerriAI/litellm/pull/31802
* feat(gdc): implement Google Distributed Cloud (GDC) Gemini provider by @mateo-berri in https://github.com/BerriAI/litellm/pull/31895
* fix(model_prices): apply claude-sonnet-5 introductory pricing through 2026-08-31 by @mateo-berri in https://github.com/BerriAI/litellm/pull/31917
* fix(proxy): tighten role gating on /get/config/callbacks response by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31745
* chore(lint): remove dead E501 config, fix stale blame-ignore SHAs, note 120 line width by @mateo-berri in https://github.com/BerriAI/litellm/pull/31927
* fix(bedrock/converse): drop toolSpec.strict for Opus 4.7/4.8 (#31582) by @mateo-berri in https://github.com/BerriAI/litellm/pull/31923
* fix(bedrock): trigger Nova Sonic generation on response.create so realtime sessions stop hanging by @mateo-berri in https://github.com/BerriAI/litellm/pull/31924
* chore(ui): remove unused dep, delete dead file, and unblock knip by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31933
* refactor(ui): colocate users page into route-level _components by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31897
* test(bedrock): switch image gen live test off EOL Titan to Nova Canvas by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/31937
* feat(vertex_ai): pass full imageConfig dict for Gemini image generation by @Sameerlite in https://github.com/BerriAI/litellm/pull/31811
* fix(bedrock): drop strict/additionalProperties from toolSpec for Claude Sonnet 4 by @Sameerlite in https://github.com/BerriAI/litellm/pull/31943
* feat(prometheus): expose MCP tool metadata in Prometheus metrics by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/31899
* fix(mcp): byom visibility, preview UX, and admin settings gating by @Sameerlite in https://github.com/BerriAI/litellm/pull/31809
* test(e2e): add live batches suite across providers and routing scenarios by @Sameerlite in https://github.com/BerriAI/litellm/pull/30958
* fix(logging): resolve model_map_value for proxy custom pricing by @Sameerlite in https://github.com/BerriAI/litellm/pull/31940
* fix(mcp): roll up MCP tool spend to user counters and usage UI by @Sameerlite in https://github.com/BerriAI/litellm/pull/31576
* feat(proxy): track cost for unmanaged Vertex AI batch jobs by @Sameerlite in https://github.com/BerriAI/litellm/pull/31442
* fix(mcp): tighten role-based visibility on /v1/mcp/server/submissions by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31932
* fix(mcp): gate OAuth authorize/token/register/discovery on auth_type=oauth2 by @tin-berri in https://github.com/BerriAI/litellm/pull/31736
* refactor(ui): drive cache settings form from a typed frontend schema by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31939
* fix: merge metadata.tags into litellm_metadata on /v1/responses route by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/31793
* fix(proxy): restore admin key/team callback_vars.turn_off_message_logging override (LIT-3587) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31905
* feat(mcp): bound outbound tool-call concurrency per MCP server by @tin-berri in https://github.com/BerriAI/litellm/pull/31641
* fix(release): make Create Release reliable for stable maintenance cuts by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31986
* feat(s3_v2): send Content-MD5 on PUT and optional server-side encryption by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/31928
* fix(bedrock): honor ttl for tool_config cache injection points by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/31929
* test(e2e): add vertex_ai passthrough spend-log coverage by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/31781
* fix(mcp): surface tools/list auth failures as a 401 challenge on single-server routes by @tin-berri in https://github.com/BerriAI/litellm/pull/31921
* feat(tencent): add Tencent TokenHub as a provider by @mateo-berri in https://github.com/BerriAI/litellm/pull/31903
* fix(bedrock): map guardrailConfig to InvokeModel guardrail headers by @mateo-berri in https://github.com/BerriAI/litellm/pull/31985
* feat(ui): shadcn migration foundation: Tailwind v4, shadcn init, antd cascade fix by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/31995
* chore(e2e): untrack gateway config and document e2e test location by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/31914
* perf(lint): skip and cache base gate passes, parallelize make lint, skip redundant prisma generate by @mateo-berri in https://github.com/BerriAI/litellm/pull/32000
* fix(ui): include cache token columns in usage export by @mateo-berri in https://github.com/BerriAI/litellm/pull/32015
* fix(a2a): record agent cost_per_query and input tokens on native send path by @michelligabriele in https://github.com/BerriAI/litellm/pull/31979
* feat: litellm oss staging by @Sameerlite in https://github.com/BerriAI/litellm/pull/31935
* fix(a2a): populate response usage in a2a chat transformation by @michelligabriele in https://github.com/BerriAI/litellm/pull/31980
* fix(auth): deny model access for teamless keys with all-team-models by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/32022
* fix(proxy): admin-gate `permissions` on /user/new and /user/update (LIT-4138) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31998
* fix(proxy): admin-gate `allowed_routes` presence on /key/update and /key/regenerate (LIT-4139) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31987
* fix(proxy): admin-gate `permissions` on _process_single_key_update (LIT-4137) by @yucheng-berri in https://github.com/BerriAI/litellm/pull/32002
* fix(azure_ai): preserve content, tables, and keyValuePairs in doc-intelligence /v1/ocr by @mateo-berri in https://github.com/BerriAI/litellm/pull/32018
* bump: litellm-proxy-extras 0.4.75, litellm-enterprise 0.1.46 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32029
* feat(tinyfish): make search provider permissive, attribute errors by @tin-berri in https://github.com/BerriAI/litellm/pull/31997
* feat(ui): add token endpoint auth method selector to MCP OAuth forms by @tin-berri in https://github.com/BerriAI/litellm/pull/31739
* fix(mcp): persist DCR client_id so interactive OAuth token refresh works by @tin-berri in https://github.com/BerriAI/litellm/pull/31912
* fix(azure_sentinel): resolve audit stream from AZURE_SENTINEL_AUDIT_STREAM_NAME by @yucheng-berri in https://github.com/BerriAI/litellm/pull/32010
* fix(mcp): persist DCR client_id from on-create MCP OAuth Authorize & Fetch by @tin-berri in https://github.com/BerriAI/litellm/pull/31920
* fix(e2e): define SpendTagsResponse/TagSpend so spend suite collects by @mubashir1osmani in https://github.com/BerriAI/litellm/pull/32069
* feat(proxy): add key-level budget_fallbacks to reroute requests when a per-model budget is exceeded by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/31783
* feat(ui): re-add chat UI, allow simple UI for MCP OBO auth by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/31893
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32027
* feat(mcp): add all-proxy-mcpservers sentinel to grant teams every MCP server by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/32012
* fix(anthropic): keep context_management working when drop_params is enabled by @mateo-berri in https://github.com/BerriAI/litellm/pull/32020
* fix(ci): stop ui_unit_tests vitest onTaskUpdate RPC timeout flake by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32078
* chore: clarify the linear ticket instruction in pr template by @mateo-berri in https://github.com/BerriAI/litellm/pull/32076
* test(ui): quiet vitest CI logs by silencing passing-test console output by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32079
* fix: prevent duplicate budget alert emails on concurrent threshold crossings by @yucheng-berri in https://github.com/BerriAI/litellm/pull/32011
* chore(ui): add no-console lint ratchet and strip console from prod builds by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32082
* feat(guardrails): add unreachable_fallback fail-open option to headroom guardrail by @krrish-berri-2 in https://github.com/BerriAI/litellm/pull/32026
* feat(ui): add budget fallbacks configuration to key create/edit forms by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/32072
* feat(mcp): migrate the token_exchange (OBO) arm to the v2 resolver by @tin-berri in https://github.com/BerriAI/litellm/pull/31526
* feat(mcp): make token_exchange (OBO) production-ready - discovery threading + audit hardening + RFC 9728 challenge by @tin-berri in https://github.com/BerriAI/litellm/pull/31622
* fix(anthropic): bill streaming 1h prompt-cache writes at the 1h rate by @mateo-berri in https://github.com/BerriAI/litellm/pull/32073
* chore(ui): remove debug console.log statements from dashboard by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/32087
* fix(router): mask provider credentials embedded in fallback error messages by @yucheng-berri in https://github.com/BerriAI/litellm/pull/32083
* revert: undo teamless all-team-models denial from #32022 and #29746 by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/32032
* feat(mcp): discover the OBO token endpoint via RFC 9728 -> RFC 8414 (no IdP guessing) by @tin-berri in https://github.com/BerriAI/litellm/pull/31762
* fix(proxy): route realtime HTTP endpoints through router for credenti… by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/32077
* feat(ui): migrate chat UI from antd to shadcn/ui + add key management and usage panels by @devin-ai-integration[bot] in https://github.com/BerriAI/litellm/pull/32074
* fix(ci): exclude deleted files from ruff format check by @yuneng-berri in https://github.com/BerriAI/litellm/pull/31462
* fix(proxy): stop leaking master_key and database_url in startup DEBUG logs by @yucheng-berri in https://github.com/BerriAI/litellm/pull/31944
* fix(policies): reject non-existent team/key/model scope entries on attachment create by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/32131
* fix(anthropic): require caller api_key and SSRF-validate api_base in advisor tool by @yucheng-berri in https://github.com/BerriAI/litellm/pull/32093
* fix(proxy): keep serving reads from the read replica when the primary DB is down at startup by @yassin-berriai in https://github.com/BerriAI/litellm/pull/31951
* build: restore maturin backend to bundle the Rust bridge in the wheel by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32097
* fix(cost): store cost breakdown for /v1/realtime sessions by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/30069
* fix(proxy): return upstream error bodies unchanged in passthrough by @shivamrawat1 in https://github.com/BerriAI/litellm/pull/32133
* ci: run proxy containers without debug logging by @ryan-crabbe-berri in https://github.com/BerriAI/litellm/pull/32128
* bump: litellm-enterprise 0.1.46 -> 0.1.47 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32150
* chore(ci): build ui for release by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32151
* feat(prometheus): add api_provider label to token, latency, request and cache metrics by @yucheng-berri in https://github.com/BerriAI/litellm/pull/32126
* chore(ci): promote internal staging to main by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32156
* chore(release): backport #32256, #32277, #32236, #32416, #32405, #32524 onto patch-1.92.0rc1 by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32553
* chore(ui): rebuild dashboard bundle for patch-1.92.0rc1 (#32416) by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32554
* chore(release): backport 11 staging PRs onto patch-1.92.0rc2 for the 1.92.0 stable cut by @yuneng-berri in https://github.com/BerriAI/litellm/pull/32959
## New Contributors
* @simantak-dabhade made their first contribution in https://github.com/BerriAI/litellm/pull/30634
* @Jacopos311 made their first contribution in https://github.com/BerriAI/litellm/pull/30770
* @sarvesh1327 made their first contribution in https://github.com/BerriAI/litellm/pull/30819
**Full Changelog**: https://github.com/BerriAI/litellm/compare/v1.86.0...v1.92.0