Anthropic's newest thinking models (Opus 4.8, 4.7) deprecated the
`temperature` param and return a 400 ("`temperature` is deprecated for
this model"). The provider sent it unconditionally, breaking any consensus
run that used those models. Older models (Opus 4.6, Sonnet, Haiku) still
accept temperature.
Mirrors the existing OpenAI NO_TEMPERATURE_MODELS approach: a new
ANTHROPIC_NO_TEMPERATURE_MODELS set (verified empirically against the live
API) gates the param in both send() and stream().
Also extends scripts/refresh_catalog.py to probe Anthropic temperature
support (it only probed OpenAI before — which is why this slipped when
Opus 4.8/4.7 were added), so the set stays maintained.
Fixes a test-isolation issue in the Cloudflare config tests exposed once
CLOUDFLARE_* vars are present in .env (load_dotenv repopulates deleted
vars; use empty strings instead).
Verified live: Opus 4.8 send/stream now succeed. 1675 tests pass,
mypy + ruff clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EkrekgzMAQko92UkjnXhHL
The bug
Consensus runs using Opus 4.8 / 4.7 400'd with:
Anthropic's newest thinking models deprecated temperature; AnthropicProvider sent it unconditionally. (Older models — Opus 4.6, Sonnet, Haiku — still accept it.)
Root cause
When Opus 4.8/4.7 were added to the catalog, I probed OpenAI temperature support but not Anthropic — even though the truefoundry data showed removeParams: temperature for them. So it slipped through.
Fix
Empirical results (live API)
Validation
🤖 Generated with Claude Code
https://claude.ai/code/session_01EkrekgzMAQko92UkjnXhHL