chore(release): backport #32256, #32405, #32524 to stable/1.91.x and cut 1.91.1 - #32552
Merged
Conversation
fix(proxy): resolve os.environ/ refs for all AWS auth params in DB-sourced models (cherry picked from commit 7d13f03)
…ates fix(proxy): resolve os.environ/ refs universally in DB-sourced models (cherry picked from commit ec4f324)
…9) (#32524) The v2 emitter has never stamped error.message / error.code / error.stack_trace / error.llm_provider as span attributes; only error.type reached the wire. Backends that flatten span attributes into label indexes (Elastic APM labels.error_*, Datadog span tags) lost these four fields when v2 became the active integration on v1.90+ for otel_v2-flagged deployments. The pre-existing exception span event carrying the full message (LIT-3758) is unchanged; the message now rides both places at once, matching v1s shape. SpanError grows three optional detail fields; _parse_error threads them from StandardLoggingPayloadErrorInformation; the emitters error branch stamps them via a new module-level helper, guarded per field so guardrail-shape errors are not polluted with empty attributes. New semconv constants mirror open_inference.ErrorAttributes byte-for-byte, so v1 and v2 consumers read the same keys. Regression tests extend the mapped test files under tests/test_litellm/integrations/otel/. pytest reports 243 passed. (cherry picked from commit 85d1fe6)
yucheng-berri
approved these changes
Jul 8, 2026
1 task
eleboucher
pushed a commit
to eleboucher/homelab
that referenced
this pull request
Jul 9, 2026
….1) (#1475) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/berriai/litellm](https://images.chainguard.dev/directory/image/wolfi-base/overview) ([source](https://github.com/BerriAI/litellm)) | patch | `v1.91.0` → `v1.91.1` | --- ### Release Notes <details> <summary>BerriAI/litellm (ghcr.io/berriai/litellm)</summary> ### [`v1.91.1`](https://github.com/BerriAI/litellm/releases/tag/v1.91.1) [Compare Source](BerriAI/litellm@v1.91.1...v1.91.1) ##### 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`](BerriAI/litellm@0112e53). **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.91.1 ``` **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.91.1/cosign.pub \ ghcr.io/berriai/litellm:v1.91.1 ``` 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 - chore(release): backport [#​32256](BerriAI/litellm#32256), [#​32405](BerriAI/litellm#32405), [#​32524](BerriAI/litellm#32524) to stable/1.91.x and cut 1.91.1 by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​32552](BerriAI/litellm#32552) **Full Changelog**: <BerriAI/litellm@v1.91.0...v1.91.1> ### [`v1.91.1`](https://github.com/BerriAI/litellm/releases/tag/v1.91.1) [Compare Source](BerriAI/litellm@v1.91.0...v1.91.1) ##### 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`](BerriAI/litellm@0112e53). **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.91.1 ``` **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.91.1/cosign.pub \ ghcr.io/berriai/litellm:v1.91.1 ``` 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 - chore(release): backport [#​32256](BerriAI/litellm#32256), [#​32405](BerriAI/litellm#32405), [#​32524](BerriAI/litellm#32524) to stable/1.91.x and cut 1.91.1 by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​32552](BerriAI/litellm#32552) **Full Changelog**: <BerriAI/litellm@v1.91.0...v1.91.1> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19--> Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/1475
doonga
pushed a commit
to greyrock-labs/home-ops
that referenced
this pull request
Jul 9, 2026
….1) (#488) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/berriai/litellm](https://images.chainguard.dev/directory/image/wolfi-base/overview) ([source](https://github.com/BerriAI/litellm)) | patch | `v1.91.0` → `v1.91.1` | --- ### Release Notes <details> <summary>BerriAI/litellm (ghcr.io/berriai/litellm)</summary> ### [`v1.91.1`](https://github.com/BerriAI/litellm/releases/tag/v1.91.1) [Compare Source](BerriAI/litellm@v1.91.1...v1.91.1) ##### 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`](BerriAI/litellm@0112e53). **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.91.1 ``` **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.91.1/cosign.pub \ ghcr.io/berriai/litellm:v1.91.1 ``` 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 - chore(release): backport [#​32256](BerriAI/litellm#32256), [#​32405](BerriAI/litellm#32405), [#​32524](BerriAI/litellm#32524) to stable/1.91.x and cut 1.91.1 by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​32552](BerriAI/litellm#32552) **Full Changelog**: <BerriAI/litellm@v1.91.0...v1.91.1> ### [`v1.91.1`](https://github.com/BerriAI/litellm/releases/tag/v1.91.1) [Compare Source](BerriAI/litellm@v1.91.0...v1.91.1) ##### 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`](BerriAI/litellm@0112e53). **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.91.1 ``` **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.91.1/cosign.pub \ ghcr.io/berriai/litellm:v1.91.1 ``` 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 - chore(release): backport [#​32256](BerriAI/litellm#32256), [#​32405](BerriAI/litellm#32405), [#​32524](BerriAI/litellm#32524) to stable/1.91.x and cut 1.91.1 by [@​yuneng-berri](https://github.com/yuneng-berri) in [#​32552](BerriAI/litellm#32552) **Full Changelog**: <BerriAI/litellm@v1.91.0...v1.91.1> </details> --- ### Configuration 📅 **Schedule**: (in timezone America/New_York) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTIuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI1Mi4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19--> Reviewed-on: https://git.greyrock.io/greyrock-labs/home-ops/pulls/488
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Relevant issues
Backports three merged fixes from
litellm_internal_stagingontostable/1.91.xand cuts1.91.1.The first two restore consistent
os.environ/reference resolution for DB-sourced models, matching what the YAML config path has always done. On 1.91.0 a model stored in the DB with an env-ref auth field (for exampleaws_role_name: os.environ/BEDROCK_ASSUME_ROLE_ARN) reached the provider as the literal string instead of the resolved value, because an earlier change (#30867, present on this line) stopped expanding those references at request time and the DB-load path only re-expanded a short hardcoded allowlist. #32256 extends that allowlist to cover every AWS auth field; #32405 then removes the allowlist and the team-scope short-circuit entirely so the DB-load resolver expandsos.environ/on every string field, which is the same behavior as the YAML path and removes the recurring "add one more field to the allowlist" failure mode.The third restores v1-parity error detail on OpenTelemetry v2 failure spans (#32524, LIT-4179) so backends that index span attributes see the full error shape again, not only
error.type.Linear ticket
Pre-Submission checklist
What is included
Cherry-picked from staging in merge order, each with a
cherry picked from commitfooter:7d13f03f)ec4f3244)85d1fe6e2a)Followed by the version bump to
1.91.1and theuv.lockrefresh.1.91.0has already shipped, so the line needs a new patch.Behavior note worth calling out for reviewers: #32405 removes the
_db_model_is_team_scopedshort-circuit, so after this change team-scoped DB models resolveos.environ/references the same way admin-scoped rows do. That is intentional and matches the staging change; the write side stays gated (only an admin can author unscoped rows, only a team admin can author that team's rows) and the request-body vector remains blocked by_BANNED_REQUEST_BODY_PARAMS.Adaptation notes
-m 1against its merge SHA; the resulting stable commits carry the staging merge subject and the merge author. The applied code is byte-for-byte identical to the staging change.Known noise on this line
None. The targeted baseline (the three test files these PRs touch) was fully green on the bare line tip before any pick: 166 passed, 0 failures. After the picks it is 174 passed, 0 failures (the delta is the new regression tests the picks add).
Screenshots / Proof of Fix
Live proxy on this branch, backed by a real Postgres with
store_model_in_db: true. Model rows are created through/model/new(so they travel the DB-load path this change touches) and read back through/v2/model/info.Admin-scoped model,
aws_role_nameset to an env-ref, resolves to the real value:Arbitrary non-allowlisted field resolves too, which is the point of dropping the allowlist:
Negative control, the request-body vector stays blocked:
The team-scoped resolution path (
/model/newwith ateam_id) is Enterprise-gated at write time, so it is not shown here as a live curl; it is covered by the unit testtest_ProxyConfig__add_deployment_resolves_team_env_refs, and mechanically it now follows the exact same resolver shown above once the team-scope short-circuit is removed.#32524 is additive observability behavior on OTel v2 failure spans; it is covered by the extended tests under
tests/test_litellm/integrations/otel/(including a byte-for-byte v1 attribute-key parity test and a per-field guard), which pass on this branch. The staging PR carries the Jaeger before/after capture.Targeted test delta on this branch: 174 passed, 0 failures (baseline 166 passed, 0 failures). A deep multi-agent behavioral stress-test (confirm and refute lenses plus an audit pass) returned SURVIVED on all three sub-claims (every referenced symbol resolves; the picks' own tests pass as a positive delta over the clean baseline; no existing caller of the modified functions breaks) with zero verified findings.
Type
🐛 Bug Fix
Changes
litellm/proxy/proxy_server.py: DB-load env-ref resolution no longer gates on a key allowlist or on team-scope;ProxyConfig._resolve_db_litellm_paramexpands any string value beginning withos.environ/. The_DB_LITELLM_PARAM_ENV_REF_KEYSallowlist and the_db_model_is_team_scopedhelper are removed.litellm/integrations/otel/: the v2 emitter stampserror.code,error.stack_trace,error.llm_provider, anderror.messagein addition toerror.typeon failure spans, with keys matching the v1 integration; the detail keys are stamped per field so message-only errors are not padded with empty attributes.