Skip to content
Toolsweak signalverified

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.

By Redakcija WebAiRadarPublished 2 min readwritten by a model

Source

llm 0.32.1 release notes

llm (Simon Willison) · Original published August 21, 2026

llm is a command-line tool for talking to models, installed as a Python package. On August 21 it shipped 0.32.1, a release whose entire content is a version pin: the OpenAI Python package is now constrained below 3.0.0. The reason is worth more than the fix.

What broke, and why nobody changed anything

The OpenAI Python library dropped its own use of httpx. llm uses httpx too, but it never declared it. It got it transitively, because installing the OpenAI package used to install httpx as well. The moment that stopped being true, a fresh install of llm was missing a library it imports, while every existing installation kept working — the old httpx was already sitting there.

That asymmetry is what makes this class of failure expensive. It cannot be reproduced on the machine of anyone who has had the tool installed for a while, it appears only on clean environments, and the release that caused it belongs to someone else.

The fix and what comes after it

The pin is a holding action, and it is the right one: it restores working installs today without a rewrite. The real repair is scheduled for 0.33, which moves llm to httpx2.

The transferable rule is older than any of these packages. Declare what you import. A dependency that arrives through somebody else's requirements is a dependency you do not control, and it disappears on their schedule rather than yours — which is exactly what happened here.

Who this actually affects

Anyone installing llm fresh between the OpenAI release and 0.32.1, which includes every continuous integration job that builds from scratch, every container image rebuilt in that window, and anyone who followed a tutorial in those days. Upgrading, or installing now, resolves it.

If you ship a Python tool that wraps a vendor SDK, this is the fifteen-minute audit worth doing: list what you import, compare it with what you declare, and assume the gap will close itself at the worst moment.

Sources

Related

PYTHON3.15UTF-8 by default and lazy imports
Toolsmedium signal

Python 3.15 makes UTF-8 the default encoding and adds explicit lazy imports

Python 3.15.0 came out on October 9, 2026. Files opened without an explicit encoding are now read and written as UTF-8 on every system, and a new lazy import statement defers loading a module until it is used. The release also adds frozendict and a sampling profiler.

Python Software Foundationverified

An archival index card with a typed caption and a black-and-white photograph of workers on a ship's deck handling a buoy and its anchor chain, laid over beige graph paper and a red table of figures.
Toolsmedium signal

Anthropic's OSS Scanner sends open-source maintainers free vulnerability reports that no human has reviewed

Anthropic launched OSS Scanner on October 8, 2026, an opt-in service that scans eligible open-source projects with its strongest models, including Claude Mythos, at no cost. Each report includes a reproducer, an explanation, and a candidate patch when one exists, but no person checks it before it is sent. Anthropic says it expects more than 90% of findings to be real.

Anthropicverified