Both SDKs left httpx within twelve days, and the plugins had to follow
llm-anthropic 0.27 landed on August 24 and now requires anthropic 1.x, which moved from httpx to httpx2. OpenAI made the same move in its 3.0.0 on August 12. If you keep both plugins in one environment, they no longer upgrade independently.
Simon Willison released llm-anthropic 0.27 on August 24, and the release exists for one reason: compatibility with anthropic 1.0.0, which switches the HTTP layer from httpx to httpx2. PyPI records anthropic 1.0.0 on August 20 and llm-anthropic 0.27 four days later, on August 24 at 16:28 UTC. The new plugin declares its requirement as anthropic>=1,<2 — so the version range moved, not just the code behind it.
The second time in twelve days
This is not a one-off. OpenAI's Python library made the identical switch in its 3.0.0 release, published to PyPI on August 12 — twelve days before Anthropic's. Two vendors, one dependency, the same direction, inside two weeks.
For anyone running LLM with a single plugin, this is a routine upgrade. For anyone running both llm-anthropic and llm-openai in one environment, it stops being routine: the two plugins now sit on top of libraries that have each changed their HTTP stack, and a resolver that finds one old pin holds the whole environment back.
What actually breaks
Nothing breaks by itself. What breaks is the combination. If anthropic is pinned below 1 anywhere in your requirements, llm-anthropic 0.27 will not install. If you upgrade anthropic to 1.x and leave the plugin at 0.26 or older, you have a plugin written against the old HTTP layer.
The fix is to move both in one step rather than one at a time, and to check the pin rather than the version number you remember. That is the same lesson a fresh install of LLM taught when the OpenAI library moved first: the failure shows up at install time, in a resolver message, not as a bug in anything you wrote.
How the upgrade was done
Willison says he handed the job to a model. He prompted Fable 5 inside Claude Code with a single instruction — upgrade to anthropic>=1, read the migration guide at the URL, and get the tests passing — and published the resulting pull request.
That is worth noting for what it is: a dependency migration with a published test suite is close to the ideal shape for this kind of delegation. The tests decide whether the work is done, not the model and not the person reading the diff.
Sources
Related
Next.js moved its patch a day early, and the count went from one critical hole to two
Versions 16.3.3 and 15.5.24 shipped on August 25 instead of the announced August 26. A second unauthenticated remote code execution had turned up in an upstream library, and the patched releases switch AVIF image optimization off until that library is fixed.
Next.jsverified
llm 0.33 takes the pin out and moves to httpx2
Version 0.32.1 held fresh installs together by pinning the OpenAI Python package below 3.0.0. That was a holding action, and 0.33 does the actual repair: it upgrades to the OpenAI library 3.x and switches its HTTP client from httpx to httpx2. The release also carries changes you will notice in daily use, including a --key option on the embedding commands and server-side tool results that finally show up in llm logs.
Simon Willisonverified
A fresh install of llm broke because the OpenAI library stopped using httpx
Version 0.32.1 pins the OpenAI Python package below 3.0.0 so that new installations work again. Nothing in llm changed to cause the break: it imported httpx while relying on the OpenAI package to bring it along, and when that package dropped httpx the dependency simply stopped arriving. It is a small release with a lesson that outlives it.
Simon Willisonverified
