Simon Willison’s llm 0.31 ships four changes: GPT-5.5 model access, a verbosity parameter for GPT-5+ models, a configurable image detail level for vision inputs, and async registration of custom OpenAI model configurations.
The release is primarily a surface-area expansion tracking OpenAI’s model lineup. Each new parameter corresponds to a feature documented in OpenAI’s API.
New model and verbosity control
GPT-5.5 is now accessible via llm -m gpt-5.5. Alongside the model itself, the release adds a verbosity option that applies to GPT-5 and later models: -o verbosity low, -o verbosity medium, or -o verbosity high. The post links to OpenAI’s cookbook documentation describing this as a “verbosity parameter” controlling how talkative the model’s responses are. This gives callers explicit control over response length behavior rather than relying on prompt-level instructions to constrain output length.
Image detail level for vision inputs
For models that accept image attachments, 0.31 adds -o image_detail low, -o image_detail high, and -o image_detail auto. GPT-5.4 and GPT-5.5 additionally accept -o image_detail original. The post links to OpenAI’s documentation on “choosing an image detail level,” which governs the resolution at which the model processes the image. Lower detail is faster and cheaper; higher detail is more precise but consumes more tokens. The original value, available only on the newer GPT-5.x models, presumably passes the image at full resolution without downsampling.
This option is useful when callers want to trade cost against visual fidelity — for example, using low detail for thumbnail classification tasks and high detail for fine-grained document reading.
Async registration for extra-openai-models.yaml
The fourth change is a plumbing improvement: models listed in extra-openai-models.yaml are now also registered as asynchronous. Previously, custom OpenAI-compatible models defined in this file were only registered for synchronous use. The async registration allows them to participate in workflows that use llm’s async model interface, which is relevant for callers running concurrent requests or integrating with async Python code. This change is tracked as issue #1395 in the project.
What this release represents
The llm tool functions as a lightweight universal interface to language model APIs. Each release of this kind tracks newly available API surface from providers — new model IDs, new parameters, new capabilities — making them accessible via the CLI without requiring callers to update their own API integration code. The four changes in 0.31 are all additive and backward-compatible.
The source excerpt does not include any breaking changes, deprecations, or changes to the core plugin or conversation management subsystems. It is a focused maintenance and feature release.