Skip to content

chore(release): backport #31923, #31929, #31393 to stable/1.90.x and cut 1.90.3 - #32025

Merged
yuneng-berri merged 4 commits into
stable/1.90.xfrom
litellm_cherrypick_1_90_x
Jul 3, 2026
Merged

chore(release): backport #31923, #31929, #31393 to stable/1.90.x and cut 1.90.3#32025
yuneng-berri merged 4 commits into
stable/1.90.xfrom
litellm_cherrypick_1_90_x

Conversation

@mateo-berri

@mateo-berri mateo-berri commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Relevant issues

Backports three already-merged fixes from litellm_internal_staging onto stable/1.90.x. #31923 fixes #31582: Bedrock Converse routes Claude Opus 4.7/4.8 through a validator that rejects toolSpec.strict (tools.N.custom.strict: Extra inputs are not permitted), so the old blanket "forward strict for all Anthropic models" gate turned every strict-tool request against those models into a 400. The gate is now driven by a bedrock_converse_supports_strict_tools flag in the pricing JSON. #31929 makes cache_control_injection_points with location: tool_config honor control.ttl (previously a bare {"cachePoint": {"type": "default"}} was always emitted and Bedrock silently fell back to the 5-minute default), and replaces the hardcoded Claude model-name pattern list for 1h-TTL eligibility with a lookup against cache_creation_input_token_cost_above_1hr in the pricing JSON, which also removes that stale pricing key from two Claude 3.5 Sonnet entries that never supported 1h TTL. #31393 stops the MCP client from logging tool-call and prompt arguments at INFO on every call; caller input such as user queries, model names, and instructions landed verbatim in the proxy application logs and any downstream log aggregator, and these INFO lines now log only the tool or prompt name

Cuts 1.90.3. The line's tip is at 1.90.2 with the v1.90.1/v1.90.2 releases still pending, so this PR follows the line's one-bump-per-backport-PR pattern and takes the next patch

Linear ticket

LIT-3892 (#31929), LIT-3811 (#31393)

Pre-Submission checklist

  • I have added meaningful tests
  • My PR's scope is as isolated as possible; it only solves 1 specific problem

Screenshots / Proof of Fix

Targeted suites on the line, judged as a delta against a clean baseline captured on the line's tip (1e60f26) before picking: baseline 1007 passed, 0 failures; after both picks 1032 passed, 0 failures (the 25 net-new tests are the picks' own regression tests)

.venv/bin/python -m pytest -q tests/test_litellm/llms/bedrock/ \
  tests/test_litellm/litellm_core_utils/prompt_templates/ \
  "tests/test_litellm/test_utils.py::test_aaamodel_prices_and_context_window_json_is_valid"
# baseline (pre-pick): 1007 passed
# after both picks:    1032 passed

Live proxy proof against real Bedrock (us-west-2), two proxies running the line's code before and after the picks, same curl against each

#31923, strict tool on Opus 4.7 (bedrock/us.anthropic.claude-opus-4-7):

curl -s localhost:PORT/v1/chat/completions -H "Authorization: Bearer $LITELLM_MASTER_KEY" -d '{
  "model": "bedrock-opus-4-7",
  "max_tokens": 200,
  "messages": [{"role": "user", "content": "What is the weather in San Francisco? Use the tool."}],
  "tools": [{"type": "function", "function": {"name": "get_weather", "strict": true,
    "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"], "additionalProperties": false}}}]
}'

# before: HTTP 400
#   {"error":{"message":"litellm.BadRequestError: BedrockException - {\"message\":\"The model returned
#    the following errors: tools.0.custom.strict: Extra inputs are not permitted\"} ...
# after: HTTP 200
#   "finish_reason":"tool_calls", tool_calls: [{"function":{"arguments":"{\"city\": \"San Francisco\"}","name":"get_weather"}, ...

#31929, tool_config cache injection with ttl: 1h on Sonnet 4.6 (both return HTTP 200; the outgoing Bedrock request logged by --detailed_debug shows the ttl now survives):

curl -s localhost:PORT/v1/chat/completions -H "Authorization: Bearer $LITELLM_MASTER_KEY" -d '{
  "model": "bedrock-sonnet-4-6",
  "max_tokens": 100,
  "messages": [{"role": "user", "content": "Say OK."}],
  "tools": [{"type": "function", "function": {"name": "get_weather",
    "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]}}}],
  "cache_control_injection_points": [{"location": "tool_config", "control": {"type": "ephemeral", "ttl": "1h"}}]
}'

# cachePoint sent to Bedrock, before: {"cachePoint": {"type": "default"}}
# cachePoint sent to Bedrock, after:  {"cachePoint": {"type": "default", "ttl": "1h"}}

#31393, MCP tool call through the gateway against the real public DeepWiki MCP server, proxies run with --debug (INFO-level application logs) and mcp_servers: {deepwiki: {url: https://mcp.deepwiki.com/mcp, transport: http}} in the config. Both calls return HTTP 200 with the tool result; the difference is what lands in the proxy log

curl -s localhost:PORT/mcp-rest/tools/call -H "Authorization: Bearer $LITELLM_MASTER_KEY" \
  -H "Content-Type: application/json" -d '{
  "server_id": "<from GET /v1/mcp/server>",
  "name": "ask_question",
  "arguments": {"repoName": "facebook/react", "question": "PROOF-SECRET-USER-QUERY-42 what does useState do?"}
}'

# proxy log, before:
#   LiteLLM:INFO: client.py:557 - MCP client calling tool 'ask_question' with arguments:
#     {'repoName': 'facebook/react', 'question': 'PROOF-SECRET-USER-QUERY-42 what does useState do?'}
# proxy log, after:
#   LiteLLM:INFO: client.py:557 - MCP client calling tool 'ask_question'
# grep -c PROOF-SECRET-USER-QUERY-42 <proxy log>: before 1, after 0

The mcp client suite (tests/test_litellm/experimental_mcp_client/) passes 34 on the patched tree: the 32 pre-existing tests plus the pick's 2 regression tests

Type

Bug Fix

Changes

What is included, in the order committed:

Adaptation notes

#31923 applies semantically verbatim; only surrounding context and Black formatting differ (the line predates the ruff formatter migration), and two typing imports the staging file uses elsewhere were dropped as unused on this line

#31929 needed more adaptation because the line predates some staging state. The upstream squash's large pricing-JSON churn reduces to its semantic content on this line: drop the stale 1h-TTL pricing keys from the two Claude 3.5 Sonnet Bedrock entries and add supports_parallel_tool_use_config to the flagged model entries; 6 of the 58 flagged entries (the *.anthropic.claude-sonnet-5 family) do not exist on this line and were skipped. The local_model_cost_map test fixture, added upstream by an earlier staging commit that never reached this line, was ported into test_anthropic_claude3_transformation.py. test_parallel_tool_calls_config_kept_for_sonnet_5 was renamed and pointed at anthropic.claude-sonnet-4-6 since sonnet-5 has no pricing entry on this line, and test_parallel_tool_calls_newer_model_adds_disable_flag now forces the bundled cost map so it does not depend on the remote map having synced the new flag. ruff-strict-budget.json keeps the line's schema unchanged

#31393 applies verbatim; the test-file conflict hunk also carried a staging-only TestMCPClientResolvedAuth class from an unrelated commit that never reached this line, which was dropped, keeping only the additions belonging to #31393

mateo-berri and others added 4 commits July 2, 2026 21:07
…#31923)

Backport of #31923 to stable/1.90.x.
Cherry-picked from 85f9241 (litellm_internal_staging).
Backport of #31929 to stable/1.90.x.
Cherry-picked from 1543725 (litellm_internal_staging).

Deviations from the upstream squash, needed because the line predates some
staging-only state:
- model_prices JSON churn reduced to its semantic content: drop the stale
  1h-TTL pricing keys from the two Claude 3.5 Sonnet Bedrock entries and add
  supports_parallel_tool_use_config to the flagged entries. 6 of the 58
  flagged entries (*.anthropic.claude-sonnet-5) do not exist on this line and
  were skipped
- ported the local_model_cost_map fixture into
  test_anthropic_claude3_transformation.py (added upstream by an earlier
  staging commit that never reached this line)
- test_parallel_tool_calls_config_kept_for_sonnet_5 renamed and pointed at
  anthropic.claude-sonnet-4-6, since sonnet-5 has no entry on this line
- test_parallel_tool_calls_newer_model_adds_disable_flag now forces the
  bundled cost map so it does not depend on the remote map having synced the
  new flag
- ruff-strict-budget.json kept at the line's schema (no change needed)
Backport of #31393 to stable/1.90.x.
Cherry-picked from 7acc015 (litellm_internal_staging).

The test-file conflict hunk also carried the staging-only TestMCPClientResolvedAuth
class from an unrelated commit that never reached this line; it was dropped and only
the additions belonging to #31393 were kept.
@mateo-berri
mateo-berri force-pushed the litellm_cherrypick_1_90_x branch from 4769948 to 01363fe Compare July 3, 2026 04:49
@mateo-berri mateo-berri changed the title chore(release): backport #31923, #31929 to stable/1.90.x and cut 1.90.3 chore(release): backport #31923, #31929, #31393 to stable/1.90.x and cut 1.90.3 Jul 3, 2026
@mateo-berri
mateo-berri marked this pull request as ready for review July 3, 2026 05:01
@mateo-berri
mateo-berri requested review from a team, shivamrawat1 and yuneng-berri July 3, 2026 05:01
@greptile-apps

greptile-apps Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This backport cherry-picks three fixes onto stable/1.90.x and cuts 1.90.3. All three changes are mechanically correct: the MCP client stops logging tool-call and prompt arguments at INFO level; the Bedrock Converse tool_config cache-injection path now forwards the caller-supplied ttl instead of always emitting a bare {\"type\": \"default\"} cache point; and the toolSpec.strict gate for Bedrock Converse is now driven by a bedrock_converse_supports_strict_tools flag in the pricing JSON instead of a blanket "all Anthropic models support strict" assumption, correctly blocking Opus 4.7/4.8 which Bedrock routes through a stricter validator.

  • fix(mcp): stop logging tool-call input in MCP client #31393 (MCP logging): removes call_tool_request_params.arguments and get_prompt_request_params.arguments from INFO log messages; two new regression tests verify that sensitive argument values no longer appear in log output.
  • fix(bedrock/converse): drop toolSpec.strict for Opus 4.7/4.8 (#31582) #31923 (Bedrock strict tools): replaces hardcoded "all Anthropic models → forward strict" with a per-model bedrock_converse_supports_strict_tools flag; Opus 4.7/4.8 base + regional entries get the flag set to false, while all previously-working models default to true via the absence of the flag.
  • fix(bedrock): honor ttl for tool_config cache injection points #31929 (TTL in tool_config cache injection): extracts _build_cache_point_block as a static method reused by both message-level and tool_config-level injection, decouples the disable_parallel_tool_use gate from the TTL-capable-model check with a new supports_parallel_tool_use_config pricing flag, and drops two stale cache_creation_input_token_cost_above_1hr entries from older Claude 3.5 Sonnet models that never supported 1h TTL.

Confidence Score: 4/5

All three bug fixes are mechanically correct and well-covered by new regression tests; the only non-obvious concerns are a type-annotation inconsistency on a TypedDict that has no runtime impact, and a lookup-pattern divergence in the strict-tools helper that could cause stale values after cost-map hot-swaps.

The MCP logging redaction is a one-line change with obvious intent. The strict-tools fix correctly moves the gate to a pricing-JSON flag populated for all affected models. The TTL fix properly threads the caller-supplied control dict through _build_cache_point_block — the new test suite confirms both the happy path and the regional-model fallback. The two findings are style/annotation concerns: CacheControlToolConfigInjectionPoint.control is added as a nominally required TypedDict field rather than optional, and _get_bedrock_converse_strict_tools_flag diverges from the simpler litellm.model_cost direct-lookup pattern used by its sibling helpers, introducing an lru_cache staleness risk that the sibling helpers do not share. Neither concern causes misbehavior in normal production use.

litellm/llms/bedrock/common_utils.py (_get_bedrock_converse_strict_tools_flag lookup path) and litellm/types/integrations/anthropic_cache_control_hook.py (TypedDict total= annotation).

Important Files Changed

Filename Overview
litellm/experimental_mcp_client/client.py Removes tool-call and prompt arguments from two INFO-level log messages; straightforward and correct.
litellm/llms/bedrock/common_utils.py Adds bedrock_converse_supports_strict_tools, bedrock_converse_supports_parallel_tool_use_config, and refactors is_claude_4_5_on_bedrock to use pricing-JSON flags. The strict-tools lookup path goes through get_model_info() (lru_cache'd) + local map fallback, diverging from the simpler direct litellm.model_cost access used by the other two helpers.
litellm/llms/bedrock/chat/converse_transformation.py Extracts _build_cache_point_block static method, wires it into the tool_config injection path so ttl is honored, and decouples the parallel-tool-use-config gate to the new supports_parallel_tool_use_config flag. Logic is correct.
litellm/litellm_core_utils/prompt_templates/factory.py Replaces get_bedrock_base_model check with bedrock_converse_supports_strict_tools call; correct import swap and logic change.
litellm/types/integrations/anthropic_cache_control_hook.py Adds control: Optional[ChatCompletionCachedContent] to CacheControlToolConfigInjectionPoint TypedDict without total=False, making the field nominally required even though it is read with .get() at runtime.
model_prices_and_context_window.json Adds bedrock_converse_supports_strict_tools: false to Opus 4.7/4.8 entries, adds supports_parallel_tool_use_config: true to all 4.5+ capable model entries, removes stale 1h-TTL pricing keys from two Claude 3.5 Sonnet entries. Changes are consistent and correct.
litellm/types/utils.py Adds bedrock_converse_supports_strict_tools to ProviderSpecificModelInfo; straightforward addition.
litellm/utils.py Threads bedrock_converse_supports_strict_tools through _get_model_info_helper; minimal correct addition.
tests/test_litellm/llms/bedrock/chat/test_converse_transformation.py Adds comprehensive regression tests for TTL in tool_config injection and decoupled parallel-tool-use-config gate; existing tests updated to use local cost map to be independent of network-fetched data.
tests/test_litellm/litellm_core_utils/prompt_templates/test_bedrock_converse_strict_tools_opus_47_48.py New regression test file covering strict-tools forwarding for Opus 4.7/4.8 (dropped), other Anthropic models (kept), and non-Anthropic families (dropped).
tests/test_litellm/experimental_mcp_client/test_mcp_client.py Adds two async tests verifying that tool-call arguments and prompt arguments are no longer logged; uses patch.object on verbose_logger correctly.

Comments Outside Diff (1)

  1. litellm/types/integrations/anthropic_cache_control_hook.py, line 19-23 (link)

    P2 Adding control to a TypedDict that is not declared total=False makes the field nominally required from a type-checker perspective. Any existing caller that builds {"location": "tool_config"} without a control key will now get a type error, even though at runtime point.get("control") handles the missing key gracefully. Declaring the class with total=False (or using NotRequired) keeps the runtime behaviour intact and avoids this backward-incompatible type annotation change.

    Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Reviews (1): Last reviewed commit: "bump: version 1.90.2 → 1.90.3" | Re-trigger Greptile

Comment on lines +706 to +730
def _get_bedrock_converse_strict_tools_flag(base_model: str) -> Optional[bool]:
candidates = dict.fromkeys(
(base_model, _BEDROCK_MODEL_VERSION_SUFFIX_RE.sub("", base_model))
)
for candidate in candidates:
with contextlib.suppress(Exception):
model_info = get_cached_model_info()(
model=candidate,
custom_llm_provider="bedrock",
)

flag = model_info.get("bedrock_converse_supports_strict_tools")
if isinstance(flag, bool):
return flag

model_cost_key = model_info.get("key")
if isinstance(model_cost_key, str):
local_flag = (
_get_local_model_cost_map()
.get(model_cost_key, {})
.get("bedrock_converse_supports_strict_tools")
)
if isinstance(local_flag, bool):
return local_flag
return None

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Strict-tools lookup uses a different access pattern than its siblings

is_claude_4_5_on_bedrock and bedrock_converse_supports_parallel_tool_use_config both read from litellm.model_cost directly (with a base-model fallback), so they always reflect whatever cost-map is currently loaded — including test overrides. _get_bedrock_converse_strict_tools_flag instead goes through get_model_info(), which is @lru_cache-decorated. If litellm.model_cost is swapped in a test (or hot-reloaded in a long-running proxy process) after the first call, the strict-tools check may silently return a stale cached value while the other two checks immediately reflect the new map. A simpler direct litellm.model_cost.get(candidate) pattern (as the other two helpers use) would avoid this discrepancy and eliminate the need for the _get_local_model_cost_map() fallback path.

@yuneng-berri
yuneng-berri merged commit 2d28d8f into stable/1.90.x Jul 3, 2026
50 of 52 checks passed
@yuneng-berri
yuneng-berri deleted the litellm_cherrypick_1_90_x branch July 3, 2026 19:17
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request Jul 4, 2026
….3) (#1400)

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.90.2` → `v1.90.3` |

---

### Release Notes

<details>
<summary>BerriAI/litellm (ghcr.io/berriai/litellm)</summary>

### [`v1.90.3`](https://github.com/BerriAI/litellm/releases/tag/v1.90.3)

[Compare Source](BerriAI/litellm@v1.90.3...v1.90.3)

##### 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.90.3
```

**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.90.3/cosign.pub \
  ghcr.io/berriai/litellm:v1.90.3
```

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 [#&#8203;31923](BerriAI/litellm#31923), [#&#8203;31929](BerriAI/litellm#31929), [#&#8203;31393](BerriAI/litellm#31393) to stable/1.90.x and cut 1.90.3 by [@&#8203;mateo-berri](https://github.com/mateo-berri) in [#&#8203;32025](BerriAI/litellm#32025)

**Full Changelog**: <BerriAI/litellm@v1.90.2...v1.90.3>

### [`v1.90.3`](https://github.com/BerriAI/litellm/releases/tag/v1.90.3)

[Compare Source](BerriAI/litellm@v1.90.2...v1.90.3)

##### 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.90.3
```

**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.90.3/cosign.pub \
  ghcr.io/berriai/litellm:v1.90.3
```

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 [#&#8203;31923](BerriAI/litellm#31923), [#&#8203;31929](BerriAI/litellm#31929), [#&#8203;31393](BerriAI/litellm#31393) to stable/1.90.x and cut 1.90.3 by [@&#8203;mateo-berri](https://github.com/mateo-berri) in [#&#8203;32025](BerriAI/litellm#32025)

**Full Changelog**: <BerriAI/litellm@v1.90.2...v1.90.3>

</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/1400
blake-hamm added a commit to blake-hamm/bhamm-lab that referenced this pull request Jul 4, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [ghcr.io/berriai/litellm](https://images.chainguard.dev/directory/image/wolfi-base/overview) ([source](https://github.com/BerriAI/litellm)) | final | patch | `v1.90.2` → `v1.90.3` |

---

### Release Notes

<details>
<summary>BerriAI/litellm (ghcr.io/berriai/litellm)</summary>

### [`v1.90.3`](https://github.com/BerriAI/litellm/releases/tag/v1.90.3)

[Compare Source](BerriAI/litellm@v1.90.3...v1.90.3)

##### 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.90.3
```

**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.90.3/cosign.pub \
  ghcr.io/berriai/litellm:v1.90.3
```

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 [#&#8203;31923](BerriAI/litellm#31923), [#&#8203;31929](BerriAI/litellm#31929), [#&#8203;31393](BerriAI/litellm#31393) to stable/1.90.x and cut 1.90.3 by [@&#8203;mateo-berri](https://github.com/mateo-berri) in [#&#8203;32025](BerriAI/litellm#32025)

**Full Changelog**: <BerriAI/litellm@v1.90.2...v1.90.3>

### [`v1.90.3`](https://github.com/BerriAI/litellm/releases/tag/v1.90.3)

[Compare Source](BerriAI/litellm@v1.90.2...v1.90.3)

##### 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.90.3
```

**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.90.3/cosign.pub \
  ghcr.io/berriai/litellm:v1.90.3
```

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 [#&#8203;31923](BerriAI/litellm#31923), [#&#8203;31929](BerriAI/litellm#31929), [#&#8203;31393](BerriAI/litellm#31393) to stable/1.90.x and cut 1.90.3 by [@&#8203;mateo-berri](https://github.com/mateo-berri) in [#&#8203;32025](BerriAI/litellm#32025)

**Full Changelog**: <BerriAI/litellm@v1.90.2...v1.90.3>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- 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 this update 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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDkuNSIsInVwZGF0ZWRJblZlciI6IjQzLjI0OS41IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->

Co-authored-by: Renovate Bot <renovate@bhamm-lab.com>
Reviewed-on: https://codeberg.org/blake-hamm/bhamm-lab/pulls/258
blake-hamm added a commit to blake-hamm/bhamm-lab that referenced this pull request Jul 4, 2026
…to v1.90.3 (#257)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [https://github.com/BerriAI/litellm.git](https://github.com/BerriAI/litellm) | patch | `v1.90.0` → `v1.90.3` |

---

### Release Notes

<details>
<summary>BerriAI/litellm (https://github.com/BerriAI/litellm.git)</summary>

### [`v1.90.3`](https://github.com/BerriAI/litellm/releases/tag/v1.90.3)

[Compare Source](BerriAI/litellm@v1.90.2...v1.90.3)

#### 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.90.3
```

**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.90.3/cosign.pub \
  ghcr.io/berriai/litellm:v1.90.3
```

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 [#&#8203;31923](BerriAI/litellm#31923), [#&#8203;31929](BerriAI/litellm#31929), [#&#8203;31393](BerriAI/litellm#31393) to stable/1.90.x and cut 1.90.3 by [@&#8203;mateo-berri](https://github.com/mateo-berri) in [#&#8203;32025](BerriAI/litellm#32025)

**Full Changelog**: <BerriAI/litellm@v1.90.2...v1.90.3>

### [`v1.90.2`](https://github.com/BerriAI/litellm/releases/tag/v1.90.2)

[Compare Source](BerriAI/litellm@v1.90.1...v1.90.2)

#### 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.90.2
```

**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.90.2/cosign.pub \
  ghcr.io/berriai/litellm:v1.90.2
```

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 [#&#8203;31519](BerriAI/litellm#31519), [#&#8203;31733](BerriAI/litellm#31733) to stable/1.90.x and cut 1.90.2 by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;31782](BerriAI/litellm#31782)

**Full Changelog**: <BerriAI/litellm@v1.90.1...v1.90.2>

### [`v1.90.1`](https://github.com/BerriAI/litellm/releases/tag/v1.90.1)

[Compare Source](BerriAI/litellm@v1.90.0-rc.1...v1.90.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.90.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.90.1/cosign.pub \
  ghcr.io/berriai/litellm:v1.90.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 [#&#8203;31036](BerriAI/litellm#31036), [#&#8203;31342](BerriAI/litellm#31342), [#&#8203;31653](BerriAI/litellm#31653) to stable/1.90.x and cut 1.90.1 (litellm-enterprise 0.1.43.post1) by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;31667](BerriAI/litellm#31667)

**Full Changelog**: <BerriAI/litellm@v1.90.0...v1.90.1>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- 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 this update 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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDkuNSIsInVwZGF0ZWRJblZlciI6IjQzLjI0OS41IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->

Co-authored-by: Renovate Bot <renovate@bhamm-lab.com>
Reviewed-on: https://codeberg.org/blake-hamm/bhamm-lab/pulls/257
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants