LLM 0.32 turns Simon Willison's CLI into a tool-calling agent runner
Server-side web search and code execution, streamed reasoning traces, human-approval pauses, and a rebuilt log store land in the biggest LLM update yet.

Copy markdown
Web search and code run without wiring an SDK
Reasoning-capable OpenAI models can now call WebSearch and CodeInterpreter server-side, and Anthropic's MCP connector runs tool calls at the API level — Simon's demo queries a live Datasette from inside a prompt. You get grounded, tool-using answers from `llm prompt` with no client-side tool loop to build.
Reasoning streams to stderr, stdout stays clean
Thinking models stream their reasoning summaries to standard error while stdout keeps only the answer, so `llm ... | jq` pipelines stay clean. Suppress it entirely with `-R/--hide-reasoning`.
Pause a tool chain for approval, then resume
Raise `llm.PauseChain` to halt a tool-execution loop for human sign-off, then resume from a saved message history with unresolved tool calls. That's a safe agent loop built into the CLI and Python library, not a framework you bolt on.
OpenAI Responses is now the default path
Most reasoning-capable OpenAI models now hit `/v1/responses` by default, with GPT-5.6 Luna as the new default model. Existing scripts pick up server-side tools and reasoning summaries with no config changes.
llm-anthropic 0.26 wires up the Claude 5 models
The companion plugin adds Claude Fable 5, Sonnet 5, and Opus 5 plus hosted WebSearch, WebFetch, and CodeExecution. One `pip install -U llm-anthropic` and `llm -m opus-5` gets you the newest Claude with server-side tools.
A Git-style log store replaces duplicated JSON
Logs move to a content-addressed message store that deduplicates conversation history, with a `message_tree` SQL view for readable outlines; it now needs sqlite-utils 4.0+. Run `llm logs backup logs-backup.db` before you upgrade.