Repository navigation
docs(fallbacks): a fallback hop drops the encrypted reasoning its target cannot decrypt and keeps the summary - #2205
Merged
mateo-berri merged 1 commit intoOct 9, 2026
Conversation
…get cannot decrypt and keeps the summary
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
Author
|
bugbot run |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 46bffe5. Configure here.
mateo-berri
deleted the
litellm_docs_fallback_hop_drops_foreign_encrypted_reasoning
branch
October 9, 2026 05:23
This branch was successfully deployed
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.
TLDR
BerriAI/litellm#45393 made every fallback hop drop the encrypted reasoning its target cannot decrypt and keep the summary: an order-based hop to the next
order, a configuredfallbackshop to another model group, and the retry of a Responses stream that broke mid-stream. The docs only described that strip inside the opt-inencrypted_content_affinitycheck, so a reader setting up an ordered group of two providers could not tell that a hop survives on its own. This PR adds it to the four pages that explain fallbacks and order-based routing, and says why the check still belongs on for such a group. The code change is in main and will be inv1.106.0-rc.1(Sat, Oct 10), with stablev1.106.0on Sat, Oct 17User Flow
Before
A proxy admin reading the docs is left believing a hop to another provider replays the failed deployment's encrypted reasoning and fails with
invalid_encrypted_contentunlessencrypted_content_affinityis onorder=1deployment fails" paragraph ends the same wayAfter
The same pages say every fallback hop drops the reasoning its target cannot decrypt and keeps the summary, with no switch to flip, and why
encrypted_content_affinitystill belongs on an ordered group of two providers/v1/messagesthinking block is dropped whole), that this runs on all three fallback types, on an order-based fallback, and on the fallback of a stream that broke mid-stream, that there is no per-deployment switch, and when to turn the check on as wellapi_baseandapi_keykeeps them, any other hop drops them, and the next turn pays one failed call atorder: 1first), that such a hop logs only itsFalling back to model_groupline, why the check still belongs on, and that releases through v1.105.x answered 400 (invalid_encrypted_contenton OpenAI,invalid encrypted reasoningon Bedrock) or, with the check on, 429No deployments availableChanges
docs/proxy/reliability.mdgets the paragraph right after the three-type list in "Explanation", since that is where a reader learns what a fallback is.docs/proxy/load_balancing.mdgets one sentence at the end of "How order-based fallback works" and a closing paragraph in "Special Considerations for Responses API".docs/routing.mdgets the same one sentence at the end of "Deployment Ordering (Priority)".docs/response_api.mdgets the two paragraphs in "When the originating deployment cannot serve the turn", where the affinity check's own strip is described, so the hop strip sits next to it. Every fact is checked against the PR's diff and its QA table: the strip runs for every hop kind, there is no per-deployment switch, a hop logs no line of its own, and before the fix a hop answered 400 (or 429 with the check on)Both docs lints pass at the tip:
node scripts/check-writing-style.js docs blog release_notesandpython3 scripts/check-docs.py docs("No structural problems found")Screenshots / Proof of Fix
Rendered with the docs dev server (
npm start, hot reload) at the branch tip, viewport 1280x900. Each before shot is the same page at main, framed at the same paragraph. To reproduce, start the dev server and open the paths below on itreliability, "Explanation"
Path
/docs/proxy/reliability#explanation. Look right below thefallbackslist item. Before, the section ends at the list. After, the paragraph starting "A fallback to a deployment on another provider" follows itBefore
After
load_balancing, "How order-based fallback works"
Path
/docs/proxy/load_balancing#how-order-based-fallback-works. Look right below "If all order levels are exhausted ...". After, the sentence starting "A hop to a deployment that cannot decrypt" follows itBefore
After
routing, "Deployment Ordering (Priority)"
Path
/docs/routing#deployment-ordering-priority. Look right below the "When a request to anorder=1deployment fails" paragraph. After, the same sentence follows itBefore
After
load_balancing, "Special Considerations for Responses API"
Path
/docs/proxy/load_balancing#special-considerations-for-responses-api. Look at the end of the section, above "Learn more about Encrypted Content Affinity". After, the paragraph starting "A fallback hop does the same whether or not the check is on" closes the sectionBefore
After
response_api, "When the originating deployment cannot serve the turn"
Path
/docs/response_api#when-the-originating-deployment-cannot-serve-the-turn. Look right below the "Only a peer keeps the reasoning" paragraph. After, the two paragraphs starting "The same strip runs on every fallback hop" and "Turn the check on for an ordered group of two providers all the same" sit between it and "The check can be turned on and off"Before
After
Note
Low Risk
Documentation-only changes with no runtime or configuration impact.
Overview
Documents behavior that already shipped in main (BerriAI/litellm#45393): every fallback hop drops encrypted reasoning the target deployment cannot decrypt and keeps readable summaries, so turns succeed instead of failing with
invalid_encrypted_content.The updates spread that fact across four docs where admins learn about fallbacks and ordering—
reliability.md(after the three fallback types),load_balancing.mdandrouting.md(order-based hops), andresponse_api.md/ load-balancing Responses section (alongsideencrypted_content_affinity). They clarify this applies with or without the affinity check, covers order hops, model-groupfallbacks, and mid-stream Responses retries, and has no per-deployment toggle.The response API page adds detail on hop attribution when the check is off, logging differences, and why affinity still matters for multi-provider
ordergroups; it notes pre–v1.106 behavior (400/429 on hops).Reviewed by Cursor Bugbot for commit 46bffe5. Bugbot is set up for automated code reviews on this repo. Configure here.