Simon Willison's LLM 0.32 adds reasoning traces and agent tools
TL;DR
- LLM 0.32 shipped August 4, 2026 with visible reasoning traces piped to standard error and a new -R/--hide-reasoning flag to suppress them.
- Server-side provider tools now work from the CLI: OpenAI's CodeInterpreter and WebSearch, plus Anthropic's WebSearch, WebFetch, CodeExecution and AnthropicMCP via llm-anthropic 0.26.
- GPT-5.6 Luna becomes the new default model, and the SQLite log store is rebuilt as a content-addressable message store modeled after Git.
The command-line tool that has quietly become the default way for many developers to talk to models from the terminal just got its biggest overhaul since day one. In his release note, Simon Willison calls LLM 0.32 "the most significant new version of LLM since the initial launch of the project," and the full changelog on llm.datasette.io backs that up.
The headline change is that models now display their reasoning to standard error, so, as Willison puts it, "you can see what they are 'thinking'" without contaminating the stdout that scripts and pipes read from. A -R/--hide-reasoning flag turns it off again. Alongside that, the CLI now speaks to server-side provider tools: OpenAI's CodeInterpreter and WebSearch through the Responses API, plus WebSearch, WebFetch, CodeExecution and AnthropicMCP from the updated llm-anthropic plugin, now at 0.26 with Claude 5 support. Default model support also jumps to the GPT-5.6 family, with GPT-5.6 Luna taking over as the standard for basic prompts.
Underneath, the plumbing changed too. The SQLite log store has been rebuilt around a content-addressable message design "modeled after Git," which stops the same conversation history being re-serialised into JSON on every turn of a long chat. The Python API grows a model.prompt(messages=[]) signature for passing arbitrary chat histories, and stream_events() now yields reasoning text, output strings, tool calls and even image attachments rather than just token text. A new chat-completions-server plugin lets LLM itself impersonate an OpenAI-compatible endpoint for other apps to hit.
Why this matters if you don't personally live in LLM: it is a plausible glimpse of where the tooling layer around models is heading. As Willison writes, "An LLM agent runs tools in a loop to achieve a goal," and he admits that "the term 'agent' had such a vague definition that I refused to use it" until server-side tools and visible reasoning traces made the pattern concrete enough to ship. He teases that "Maybe the next version of LLM will bake the concept of an 'agent' into the core library."
The honest caveat is that this is a solo-maintained open project, so the security surface of wiring OpenAI code execution and multi-provider web search into a shell utility with your API keys deserves scrutiny before you point it at anything production. What the post doesn't spell out is how the new content-addressable log format migrates for people with large existing SQLite log databases, or how the chat-completions-server plugin holds up under real traffic. For anyone who lives at the terminal though, the upside is that a single command-line binary is now genuinely competitive with hosted playgrounds for exploratory work, and if you write plugins, the new stream_events() API is where the interesting extensions are about to land.
Shared on Bluesky by 2 AI experts
-
Big new release of my LLM CLI tool and Python library for talking to hundreds of different LLMs - reasoning traces, OpenAI Responses support, server-side tools, smarter logging and a whole lot more simonwillison.net/2026…
View on Bluesky →
Originally reported by simonwillison.net
Read the original article →Original headline: New release of LLM adds support for reasoning traces, OpenAI Responses, server-side tools, and smarter logging