TLDRocket
Sign in

New release of LLM adds support for reasoning traces, OpenAI Responses, server-side tools, and smarter logging

Simon Willison Simon Willison Covered by 2 sources

Simon Willison just dropped LLM 0.32, the biggest upgrade yet to his command-line AI tool. It now shows AI 'thinking,' runs tools like code execution, and logs everything like Git.

Simon Willison doesn't do minor version bumps very often, so when he calls LLM 0.32 the most significant release since the tool's launch, it's worth paying attention. The update, out this morning, reworks how the command-line utility handles reasoning models, server-side tools, and logging, while quietly nudging the whole project toward something that looks a lot like an agent framework.

The headline feature is visibility into reasoning traces. Run a thinking model through LLM now and you'll see its internal reasoning streamed to standard error, separate from the actual output, so scripts piping results elsewhere don't get polluted with the model's internal monologue. Willison also bundled in support for the new GPT-5.6 family, making the cheap-but-capable GPT-5.6 Luna the new default model for quick prompts.

Server-side tools are the other big addition. OpenAI's code execution and web search tools can now be invoked directly from the CLI with a simple --tool flag, and a companion update to the llm-anthropic plugin brings Claude users web search, web fetch, code execution, and an MCP tool that lets Claude query external data sources like Willison's own Datasette instance mid-conversation. There's also a new llm openai endpoint command that turns any OpenAI-compatible API, local or remote, into a one-line prompt target, no plugin installation required.

Under the hood, LLM's Python API gets a real overhaul. Instead of building conversations message by message, developers can now pass a full messages array directly, mixing system, user, and assistant turns in one call. Streaming responses have also moved from plain string chunks to typed events, distinguishing reasoning text from output text from tool calls, which finally matches how modern models actually behave. To handle the storage mess this creates, Willison introduced a content-addressable message store modeled on Git, so repeated conversation turns don't get logged as duplicate JSON blobs every time.

Willison frames the whole release as downstream of building Datasette Agent, and he's stopped resisting the word 'agent' to describe what LLM is becoming. Tool chains can now pause for human approval and resume later from stored history, features that only make sense once you accept the tool is running loops, not just answering prompts. He's not committing to baking 'agent' into the core library yet, but the direction is obvious enough that it probably won't take another 0.x version to get there.

My take

The interesting part isn't the GPT-5.6 support, it's that a one-person open-source project is quietly building the plumbing that most 'agent platforms' charge enterprise pricing for. Content-addressable logging borrowed from Git, typed streaming events, human-approval checkpoints in tool loops, this is the boring infrastructure work that actually determines whether agents are usable, and it's happening in a CLI tool with a Python API rather than a VC-funded platform with a dashboard. People chasing the next flashy agent demo should be paying more attention to who's solving the plumbing.

Read more about this at: Simon Willison

Related stories

The daily briefing

Every AI story that matters, in your inbox by 8am.

TLDRocket reads 60+ sources, removes duplicate coverage, and summarises the day in two minutes. Follow companies and topics for alerts, or get the briefing in Slack. Free, no spam, unsubscribe anytime.