<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog</title><link href="http://feeds.simonwillison.net/" rel="alternate"/><link href="http://feeds.simonwillison.net/atom/everything/" rel="self"/><id>http://feeds.simonwillison.net/</id><updated>2026-10-01T06:29:01+00:00</updated><author><name>Simon Willison</name></author><entry><title>Quoting Matthew Green</title><link href="https://simonwillison.net/2026/Oct/1/matthew-green/" rel="alternate"/><published>2026-10-01T06:29:01+00:00</published><updated>2026-10-01T06:29:01+00:00</updated><id>https://simonwillison.net/2026/Oct/1/matthew-green/</id><summary type="html">
    &lt;blockquote cite="https://blog.cryptographyengineering.com/2026/09/30/is-sandboxing-sufficient-to-contain-rogue-agents/"&gt;&lt;p&gt;[...] Put these pieces together and you have the two halves of a worm: a payload that hijacks the agent, and an agent that will carry the payload to the next agent. Agents in separately-isolated sandboxes discovered that they could leave instructions for each other in a shared package cache, and those instructions changed what the recipients did. Replace the package cache with email, Slack and shared documents or WhatsApp, and replace independently-sandboxed training runs with independently-deployed personal agents like Muse, and you have exactly the ingredients that a worm needs.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://blog.cryptographyengineering.com/2026/09/30/is-sandboxing-sufficient-to-contain-rogue-agents/"&gt;Matthew Green&lt;/a&gt;, Is sandboxing sufficient to contain rogue agents?&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/accidental-cyberattacks"&gt;accidental-cyberattacks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-misuse"&gt;ai-misuse&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-security-research"&gt;ai-security-research&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sandboxing"&gt;sandboxing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;



</summary><category term="accidental-cyberattacks"/><category term="ai-misuse"/><category term="generative-ai"/><category term="ai-security-research"/><category term="sandboxing"/><category term="ai"/><category term="llms"/></entry><entry><title>He Built This City</title><link href="https://simonwillison.net/2026/Sep/30/he-built-this-city/" rel="alternate"/><published>2026-09-30T21:54:19+00:00</published><updated>2026-09-30T21:54:19+00:00</updated><id>https://simonwillison.net/2026/Sep/30/he-built-this-city/</id><summary type="html">
    &lt;p&gt;I visited the Museum of the City of New York today and got to see &lt;a href="https://www.mcny.org/exhibition/he-built-city"&gt;He Built This City: Joe Macken’s Model&lt;/a&gt;, the 50 x27 feet model of the city built over a 21 year period from balsa wood and cardboard.&lt;/p&gt;
&lt;p&gt;It exceeded my already high expectations. The exhibition closes on 12th October so you should absolutely make a priority to see it if you get the chance.&lt;/p&gt;
&lt;p&gt;&lt;video
  src="https://static.simonwillison.net/static/2026-10-01/He-built-this-city-medium.mp4"
  poster="https://static.simonwillison.net/static/2026-10-01/IMG_8545.jpeg"
  preload="none"
  loop controls
  playsinline muted
  width="1280"
  height="720"
  style="display: block; width: 100%; height: auto;"
&gt;&lt;/video&gt;
&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/museums"&gt;museums&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/new-york"&gt;new-york&lt;/a&gt;&lt;/p&gt;



</summary><category term="museums"/><category term="new-york"/></entry><entry><title>Quoting Anthropic Frontier Red Team</title><link href="https://simonwillison.net/2026/Sep/29/anthropic-frontier-red-team/" rel="alternate"/><published>2026-09-29T22:20:28+00:00</published><updated>2026-09-29T22:20:28+00:00</updated><id>https://simonwillison.net/2026/Sep/29/anthropic-frontier-red-team/</id><summary type="html">
    &lt;blockquote cite="https://www.anthropic.com/research/glm-5-3-and-the-spread-of-advanced-cyber-capabilities"&gt;&lt;p&gt;We evaluate several models on 100 tasks from the [internal Binary Exploitation benchmark] (selected at random), and find that GLM-5.3 develops full control flow hijacks in 4% of the trials; Claude Mythos Preview did so in 6%. Although GLM-5.3 performs below Claude Mythos Preview here, a meaningful threshold has clearly been crossed: earlier models, like Claude Opus 4.6 and GLM-5.2, do not succeed in any of them.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.anthropic.com/research/glm-5-3-and-the-spread-of-advanced-cyber-capabilities"&gt;Anthropic Frontier Red Team&lt;/a&gt;, GLM-5.3 and the spread of advanced cyber capabilities&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-security-research"&gt;ai-security-research&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/glm"&gt;glm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-in-china"&gt;ai-in-china&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;



</summary><category term="anthropic"/><category term="generative-ai"/><category term="ai-security-research"/><category term="glm"/><category term="ai"/><category term="ai-in-china"/><category term="llms"/></entry><entry><title>GPT 6.1 Sol: Near-Astra intelligence for a fifth of the price</title><link href="https://simonwillison.net/2026/Sep/29/hn-49898129/" rel="alternate"/><published>2026-09-29T18:27:48+00:00</published><updated>2026-09-29T18:27:48+00:00</updated><id>https://simonwillison.net/2026/Sep/29/hn-49898129/</id><summary type="html">
    
        &lt;p&gt;&lt;a href="https://news.ycombinator.com/item?id=49896586#49898129"&gt;My comment&lt;/a&gt; on &lt;a href="https://news.ycombinator.com/item?id=49896586"&gt;GPT 6.1 Sol: Near-Astra intelligence for a fifth of the price&lt;/a&gt; &amp;mdash; Hacker News.&lt;/p&gt;&lt;p&gt;I'm a bit late with the pelicans because I was live-blogging the keynote: &lt;a href="https://simonwillison.net/2026/Sep/29/openai-devday-2026-live-blog/"&gt;https://simonwillison.net/2026/Sep/29/openai-devday-2026-liv...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here they are for GPT-6.1-Sol: &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F4aa871683dae5c566129a6028fbc7f21"&gt;https://tools.simonwillison.net/markdown-svg-renderer?url=ht...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;They're not notably different from the GPT-6 family pelicans: &lt;a href="https://static.simonwillison.net/static/2026/gpt-pelicans-grid.html"&gt;https://static.simonwillison.net/static/2026/gpt-pelicans-gr...&lt;/a&gt;&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pelican-riding-a-bicycle"&gt;pelican-riding-a-bicycle&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gpt"&gt;gpt&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="ai"/><category term="openai"/><category term="generative-ai"/><category term="llms"/><category term="pelican-riding-a-bicycle"/><category term="gpt"/></entry><entry><title>Photo Scrubber — local face blur &amp; metadata removal</title><link href="https://simonwillison.net/2026/Sep/29/photo-scrubber/" rel="alternate"/><published>2026-09-29T16:45:27+00:00</published><updated>2026-09-29T16:45:27+00:00</updated><id>https://simonwillison.net/2026/Sep/29/photo-scrubber/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Tool:&lt;/strong&gt; &lt;a href="https://tools.simonwillison.net/photo-scrubber"&gt;Photo Scrubber — local face blur &amp;amp; metadata removal&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;I took a photograph of some protesters, then thought about how I don't like sharing photographs of strangers with identifiable faces. I &lt;a href="https://github.com/simonw/tools/commit/aa733ecc3458d5703e3b40c84507ae362f5fb294"&gt;had GPT-6 Astra build&lt;/a&gt; this experimental tool that would identify faces and automatically blur them out.&lt;/p&gt;
&lt;p&gt;It uses Google's &lt;a href="https://developers.google.com/edge/mediapipe/solutions/guide"&gt;MediaPipe&lt;/a&gt; C++ library, compiled to WebAssembly via &lt;a href="https://www.npmjs.com/package/@mediapipe/tasks-vision"&gt;@mediapipe/tasks-vision&lt;/a&gt;, plus the &lt;a href="https://sites.google.com/view/perception-cv4arvr/blazeface"&gt;BlazeFace&lt;/a&gt; face detection model.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/photography"&gt;photography&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tools"&gt;tools&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="photography"/><category term="tools"/></entry><entry><title>OpenAI DevDay 2026 live blog</title><link href="https://simonwillison.net/2026/Sep/29/openai-devday-2026-live-blog/" rel="alternate"/><published>2026-09-29T15:55:13+00:00</published><updated>2026-09-29T15:55:13+00:00</updated><id>https://simonwillison.net/2026/Sep/29/openai-devday-2026-live-blog/</id><summary type="html">
    &lt;p&gt;I'm at &lt;a href="https://devday.openai.com/"&gt;OpenAI DevDay&lt;/a&gt; today, in Fort Mason, San Francisco. Same as &lt;a href="https://simonwillison.net/2025/Oct/6/openai-devday-live-blog/"&gt;last year&lt;/a&gt; I'll be live blogging the keynote and some other notes during the day.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;OpenAI gave me a free ticket and a seat in the "creator" area for the keynote.&lt;/em&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/live-blog"&gt;live-blog&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai-devday"&gt;openai-devday&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="ai"/><category term="openai"/><category term="generative-ai"/><category term="llms"/><category term="coding-agents"/><category term="live-blog"/><category term="openai-devday"/></entry><entry><title>Claude Sonnet 5.5</title><link href="https://simonwillison.net/2026/Sep/28/claude-sonnet-5-5/" rel="alternate"/><published>2026-09-28T22:07:38+00:00</published><updated>2026-09-28T22:07:38+00:00</updated><id>https://simonwillison.net/2026/Sep/28/claude-sonnet-5-5/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.anthropic.com/claude-sonnet-5-5"&gt;Claude Sonnet 5.5&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
New Sonnet model from Anthropic today. They say it "runs 30%+ faster, and costs up to 30% less for most work" - it's priced the same as Sonnet 5 but appears to beat it on every benchmark, and should be cheaper to run as well.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F1d85a9be7f3ecce26e7f1569161a0d01"&gt;Here are some pelicans riding bicycles&lt;/a&gt;. Sonnet 5.5 suffered from &lt;a href="https://simonwillison.net/2026/Sep/22/opus-and-sol-and-luna/#claude-opus-5-5-max-over-thinks-to-the-point-of-breaking"&gt;the same bug as Opus 5.5&lt;/a&gt;: the "max" thinking effort pelican thought for 128,000 tokens (at a cost of $1.28) before running out of tokens and failing to produce an SVG.&lt;/p&gt;
&lt;p&gt;Here's the pelican it gave me for thinking effort "xhigh", at a cost of 5.74 cents and taking 41 seconds:&lt;/p&gt;
&lt;p&gt;&lt;img alt="It's good- correct bicycle frame, legs either side of the frame, feet touching the pedals, chain in the right place, it is wearing a misshapen blue bicycle helmet though." src="https://static.simonwillison.net/static/2026/claude-sonnet-5.5-pelican-xhigh.webp" /&gt;&lt;/p&gt;
&lt;p&gt;Sonnet 5.5 appears to be almost as good as Opus 5.5 on some coding tasks, including various &lt;a href="https://x.com/claudeai/status/2104674987164782598"&gt;viral 3D animation tricks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The most interesting thing about Sonnet 5.5 is that it's now the model used for the free tier on &lt;a href="https://claude.ai/"&gt;claude.ai&lt;/a&gt;. OpenAI's ChatGPT free tier uses Luna 5.6, which means Anthropic currently have a much more capable free offering.&lt;/p&gt;
&lt;p&gt;I ran this prompt against that free tier:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;build me an HTML page that renders a three-dimensional pelican riding a bicycle using WebGL&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And got back &lt;a href="https://static.simonwillison.net/static/2026/claude-sonnet-5.5-free-3d-pelican.html"&gt;this page&lt;/a&gt;, which is a solid effort.&lt;/p&gt;
&lt;p&gt;Anthropic's announcement reiterates that Haiku 5.5 will be available "in the coming weeks". I really hope that one is price-competitive with GPT-6 Luna!


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pelican-riding-a-bicycle"&gt;pelican-riding-a-bicycle&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm-release"&gt;llm-release&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="claude"/><category term="pelican-riding-a-bicycle"/><category term="llm-release"/></entry><entry><title>Quoting @joedaroo</title><link href="https://simonwillison.net/2026/Sep/28/joedaroo/" rel="alternate"/><published>2026-09-28T19:11:42+00:00</published><updated>2026-09-28T19:11:42+00:00</updated><id>https://simonwillison.net/2026/Sep/28/joedaroo/</id><summary type="html">
    &lt;blockquote cite="https://twitter.com/joedaroo/status/2104335929293127851"&gt;&lt;p&gt;To say that we were surprised at the jump and suddenness of the capabilities of our models when it came to “cyber” or “swarming” or “message boards” or anything else related to the incidents is an understatement. Security posture takes time to develop. It’s not just about hardening the systems at play; you have to ingrain it in the culture of the company. The literal people themselves in your organization have to change and evolve with it. These jumps in capabilities were so fast and so sudden that they created an extremely difficult problem. [...]&lt;/p&gt;
&lt;p&gt;So today my hope is that everyone around the world can look at their own organization and say: how can I deal with a surprise or a sudden jump in AI capability? Are my people, my systems, or my processes resilient to surprises? Do my teams know what to do when something goes wrong? Do I have the right incident response? The right comms and messaging? Do I have the right people ready to go when capabilities jump?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://twitter.com/joedaroo/status/2104335929293127851"&gt;@joedaroo&lt;/a&gt;, Agent Security at OpenAI, &lt;a href="https://twitter.com/rocketalignment/status/2104646956551422036"&gt;identity confirmed&lt;/a&gt; by The Information's Rocket Drew&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-security-research"&gt;ai-security-research&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;



</summary><category term="generative-ai"/><category term="ai-security-research"/><category term="openai"/><category term="ai"/><category term="llms"/></entry><entry><title>Quoting Muse AI Agent</title><link href="https://simonwillison.net/2026/Sep/28/muse-ai-agent/" rel="alternate"/><published>2026-09-28T04:01:30+00:00</published><updated>2026-09-28T04:01:30+00:00</updated><id>https://simonwillison.net/2026/Sep/28/muse-ai-agent/</id><summary type="html">
    &lt;blockquote cite="https://www.threads.com/share/_oWfPufYJ/"&gt;&lt;p&gt;Bad news on the MX Keys Mini pickup. Usman showed up at your building around 9:15 and waited, messaged a bunch of times, and nobody came down. He left angry at 9:38 and left a negative rating.&lt;/p&gt;
&lt;p&gt;Worse, my auto-reply told him "Yep I'm here!" at 9:27 when you clearly weren't available, which is on me. That's a bad look and it made the no-show worse.
I've sent him an apology from your account owning it and offering to try again another day.&lt;/p&gt;
&lt;p&gt;But the negative rating is real, and I should probably stop the auto-replies from claiming you're home when I can't verify that. Want me to change the pickup replies so they don't promise you're there?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.threads.com/share/_oWfPufYJ/"&gt;Muse AI Agent&lt;/a&gt;, working on behalf of @matt.j.robb&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/meta"&gt;meta&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/muse-agent"&gt;muse-agent&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/general-agents"&gt;general-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;



</summary><category term="meta"/><category term="generative-ai"/><category term="muse-agent"/><category term="ai"/><category term="general-agents"/><category term="llms"/></entry><entry><title>2026 in LLMs (so far)</title><link href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/" rel="alternate"/><published>2026-09-27T23:54:15+00:00</published><updated>2026-09-27T23:54:15+00:00</updated><id>https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/</id><summary type="html">
    &lt;p&gt;On Friday I gave the closing keynote at the &lt;a href="https://www.wearedevelopers.com/world-congress-north-america"&gt;WeAreDevelopers World Congress North America&lt;/a&gt; in San Jose. I tied together the key trends from the past year into a chronological exploration of everything that happened in 2026. The video &lt;a href="https://www.youtube.com/watch?v=GAkIytR7vcc"&gt;is on YouTube&lt;/a&gt;; here are my annotated slides and notes to accompany the talk.&lt;/p&gt;

&lt;p&gt;&lt;lite-youtube videoid="GAkIytR7vcc" js-api="js-api"
  title="WWC26-NA - 2026 in LLMs (so far)"
  playlabel="Play: WWC26-NA - 2026 in LLMs (so far)"
&gt; &lt;/lite-youtube&gt;&lt;/p&gt;

&lt;p&gt;And as an &lt;a href="https://simonwillison.net/tags/annotated-talks/"&gt;annotated presentation&lt;/a&gt;:&lt;/p&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.001.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.001.webp" alt="2026 in LLMs (so far)
Simon Willison
WeAreDevelopers World Congress North America, 25th September 2026" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.001.webp"&gt;#&lt;/a&gt;
&lt;p&gt;I'm going to give a lightning tour of everything that has happened so far in 2026. The year isn't over yet!&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.002.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.002.webp" alt="November 2025
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.002.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;For me, 2026 started a couple of months earlier in November 2025.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.003.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.003.webp" alt="The November 2025 inflection point
Claude Opus 4.5 GPT-5.1
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.003.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;November saw the release of two important models: Claude Opus 4.5 and GPT-5.1.&lt;/p&gt;
&lt;p&gt;As is usually the case with new models, these were incremental improvements on the models that came before them.&lt;/p&gt;
&lt;p&gt;But every now and then when a model improves, it crosses an invisible line where something that didn't really work starts working.&lt;/p&gt;
&lt;p&gt;In this case, the thing that started working was their coding agents. Claude Code had been around since February 2025; Codex was a little younger.&lt;/p&gt;
&lt;p&gt;These two new models, when paired with their respective coding agent harnesses, improved from "often make mistakes" to "reliable enough to use on a day-to-day basis".&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.004.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.004.webp" alt="&amp;quot;Generate an SVG of a pelican riding a bicycle&amp;quot;. The Claude Opus 4.5 one has a very weird shaped frame and the pelican looks like a duck. The GPT-5.1 has a slightly better but still broken bicycle frame and a slightly better pelican beak, but both are pretty terrible." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.004.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;For a couple of years now I've been evaluating new models by asking them to "Generate an SVG of a pelican riding a bicycle". It's probably the world's stupidest benchmark - there's only so much you can learn from it.&lt;/p&gt;
&lt;p&gt;But it's still a challenge for models, because drawing pelicans is difficult, drawing bicycles is difficult, and pelicans can't ride bicycles in the first place.&lt;/p&gt;
&lt;p&gt;Here's the state of the art for November. Claude still couldn't really draw a bicycle! The GPT-5.1 bicycle frame is pretty crap too.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.005.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.005.webp" alt="November 24th 2025 - the first commit to steipete/Warelay. A GitHub commit adding an MIT license file." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.005.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Also in November, we had the first commit to an obscure GitHub repository called "Warelay". We'll come back to this repository shortly.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.006.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.006.webp" alt="January
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.006.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;And then there were the December holidays, and individual developers took some time off and many started tinkering with these new coding agent model combinations... and it began to dawn on us quite how much they could do that they couldn't do before.&lt;/p&gt;
&lt;p&gt;Come January, a lot of us were quite excited to start putting this stuff into action.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.007.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.007.webp" alt="New year’s resolution for 2026

Every previous year:
Take on less new projects,
focus on the most important
things in my existing projects" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.007.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Every year I set myself a New Year's resolution, and for as long as I can remember it's been the same thing: stay focused. Take on less new projects. Try to get things done in the projects I already have.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.008.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.008.webp" alt="2026: Be more ambitious. Take on as many new projects as I want." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.008.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;This year I decided that since that had never worked before, I'd go the other way.&lt;/p&gt;
&lt;p&gt;We've got coding agents now, let's see what they can do. I'm going to take on as many new projects as I like!&lt;/p&gt;
&lt;p&gt;(You can ask me at the end of the year if this turned out to be a good idea or not. I have a &lt;em&gt;lot&lt;/em&gt; of plates spinning right now.)&lt;/p&gt;
&lt;p&gt;"Be more ambitious" has been something of a theme for the year, because the only way to find the limits of this technology is to keep on pushing them until they don't work.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.009.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.009.webp" alt="Predictions for 2026

It will become undeniable that LLMs write good code
We&amp;#39;re finally going to solve sandboxing
A “Challenger disaster” for coding agent security
Kakapo parrots will have an outstanding breeding season
(only 236 in the world!)

... the Pope will weigh in on LLMs and
their economic impact on the world" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.009.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;I also went on &lt;a href="https://simonwillison.net/2026/Jan/8/llm-predictions-for-2026/"&gt;the Oxide and friends podcast&lt;/a&gt; with Bryan Cantrill and Adam Leventhal to share predictions for the next year (and three and six years).&lt;/p&gt;
&lt;p&gt;With hindsight, my LLM predictions were pretty unambitious. &lt;/p&gt;
&lt;p&gt;I said "it will become undeniable that LLMs write good code" - I think we're there now.&lt;/p&gt;
&lt;p&gt;I predicted we would finally solve sandboxing. I counted and around 40 of the 277 sessions &lt;a href="https://www.wearedevelopers.com/world-congress-north-america/agenda/schedule"&gt;at this conference&lt;/a&gt; touched on sandboxing or agent security in some way, so we're at least putting a lot of effort into that!&lt;/p&gt;
&lt;p&gt;I predicted "a Challenger disaster" for coding agent security. There's certainly been a whole lot of noise around agent security this year, though the exact disaster I predicted (with coding agents being hijacked and causing real-world economic damage) hasn't really played out.&lt;/p&gt;
&lt;p&gt;We threw in &lt;a href="https://simonwillison.net/2026/May/25/encyclical-on-ai/#another-2026-prediction-down"&gt;a joke prediction&lt;/a&gt; that the Pope would weigh in on the economic impact of LLMs.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.010.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.010.webp" alt="A photograph of a beautiful green New Zealand parrot. Photo credit Kimberley Collins." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.010.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;I also predicted that New Zealand's Kākāpō parrots would have an outstanding breeding season this year.&lt;/p&gt;
&lt;p&gt;These are flightless nocturnal parrots. They're kind of dumpy looking, I think they're beautiful, and there were only 236 of these parrots in the world at the start of the year.&lt;/p&gt;
&lt;p&gt;Kākāpō only breed when the Rimu trees have a big fruiting season, and that hasn't happened in four years... but this year the Rimu fruit were looking excellent.&lt;/p&gt;
&lt;p&gt;Photo &lt;a href="https://commons.wikimedia.org/wiki/File:K%C4%81k%C4%81p%C5%8D_at_Dunedin_Wildlife_Hospital.jpg"&gt;by Kimberley Collins&lt;/a&gt;.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.011.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.011.webp" alt="Deep Blue
Coined by Adam Leventhal and Bryan Cantrill
That feeling of AI induced ennui where software
engineers get listless because the AI can do anything
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.011.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Also on that podcast, we coined a term (full credit to Adam) for "that feeling of AI induced ennui where software engineers get listless because the AI can do anything".&lt;/p&gt;
&lt;p&gt;We called it &lt;a href="https://simonwillison.net/2026/Feb/15/deep-blue/"&gt;Deep Blue&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This has been a major theme throughout the year, and was touched on by several speakers at this conference.&lt;/p&gt;
&lt;p&gt;As a software engineer, I've never had a year of my career where everything has changed so quickly and so dramatically.&lt;/p&gt;
&lt;p&gt;A lot of what I've been doing this year is trying to come to terms with that and what that means for my own profession.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.012.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.012.webp" alt="AI mania

Screenshots of the micro-javascript and pwasm GitHub README files." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.012.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Also in January, I suffered from what I'm calling &lt;strong&gt;AI mania&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is not the same thing as &lt;a href="https://en.wikipedia.org/wiki/AI-induced_psychosis"&gt;AI psychosis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With AI mania, any time your agent isn't building something for you feels like wasted time. You're losing sleep because you could be staying up later getting your agents to do stuff.&lt;/p&gt;
&lt;p&gt;My AI mania presented itself in some ridiculously over-ambitious projects.&lt;/p&gt;
&lt;p&gt;I built &lt;a href="https://github.com/simonw/micro-javascript"&gt;a JavaScript interpreter entirely in Python&lt;/a&gt;, vibe-ported from &lt;a href="https://github.com/bellard/mquickjs"&gt;MicroQuickJS&lt;/a&gt; by Fabrice Bellard.&lt;/p&gt;
&lt;p&gt;Then I built &lt;a href="https://github.com/simonw/pwasm"&gt;a WebAssembly runtime in Python as well&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;These projects were quite useful, in that they sort of cured me of my AI mania... because after I built these things, I got to look at them and ask "does the world need a slow, buggy, half-baked Python JavaScript interpreter?"&lt;/p&gt;
&lt;p&gt;I don't think the world does.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.013.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.013.webp" alt="micro-javascript playground 3

Execute JavaScript code in a sandboxed micro-javascript environment powered by Pyodide

A web UI with some JavaScript code, and a &amp;quot;Run Code&amp;quot; button, and an output panel.
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.013.webp"&gt;#&lt;/a&gt;
  &lt;p&gt; I did get this out of it: &lt;a href="https://simonw.github.io/micro-javascript/playground.html"&gt;https://simonw.github.io/micro-javascript/playground.html&lt;/a&gt;&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.014.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.014.webp" alt="Previous screenshot, with this text overlaid:

JavaScript running in Python running in Pyodide running in WebAssembly running in JavaScript" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.014.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;This page runs my JavaScript interpreter built in Python, running in Python using &lt;a href="https://pyodide.org/"&gt;Pyodide&lt;/a&gt;, which is Python compiled to WebAssembly, running in JavaScript, running in a browser.&lt;/p&gt;
&lt;p&gt;It's a beautiful stack of horrors. I've been having &lt;a href="https://simonwillison.net/tags/webassembly/"&gt;a lot of fun with WebAssembly&lt;/a&gt; this year.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.015.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.015.webp" alt="Warelay → CLAWDIS → CLAWDBOT →
Clawdbot → Moltbot →🦞 OpenClaw

Screenshot of the dates that these changes happened." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.015.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;By the end of January, that repository we saw start in November had renamed itself, first to CLAWDIS, then CLAWDBOT, then Moltbot, and finally to OpenClaw.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.016.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.016.webp" alt="Same screenshot, an overlay reads:

8,330 commits in just
under two months
(it’s at 100,141 today)" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.016.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;At this point OpenClaw had 8,300 commits, less than two months after the project had started. I looked today and it's &lt;a href="https://github.com/openclaw/openclaw"&gt;over 100,000 commits&lt;/a&gt; now!&lt;/p&gt;
&lt;p&gt;This is the most vibe-coded piece of software in existence.&lt;/p&gt;
&lt;p&gt;(Here's &lt;a href="https://simonwillison.net/2026/May/16/openclaw-names/"&gt;how I generated that list of name changes&lt;/a&gt;.)&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.017.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.017.webp" alt="Generic term: Claw
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.017.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;This kicked off the OpenClaw revolution. It effectively defined a new category of software.&lt;/p&gt;
&lt;p&gt;There's a generic term for this which I really enjoy. We call software like this a "Claw". There's OpenClaw, &lt;a href="https://github.com/nanocoai/nanoclaw"&gt;NanoClaw&lt;/a&gt;, &lt;a href="https://github.com/nearai/ironclaw"&gt;IronClaw&lt;/a&gt;, &lt;a href="https://github.com/sipeed/picoclaw"&gt;PicoClaw&lt;/a&gt;...&lt;/p&gt;
&lt;p&gt;Today they're being rebranded as "personal agents" or "general agents", but I still like to think of them as Claws.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.018.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.018.webp" alt="Photo of a Mac mini

An aquarium for your Claw
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.018.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;The Apple stores in the Bay Area sold out of Mac Minis because so many people were buying Mac Minis to run OpenClaw!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.dbreunig.com"&gt;Drew Breunig&lt;/a&gt; said that this is because your OpenClaw is a digital pet, and you buy a Mac mini as an aquarium to keep your claw in, which is kind of delightful.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.019.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.019.webp" alt="Screenshot of Moltbook - a social network for AI agents" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.019.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Also in January, we had this website.&lt;/p&gt;
&lt;p&gt;This was &lt;a href="https://www.moltbook.com/"&gt;MoltBook&lt;/a&gt;, a social network for AI agents, where the idea was that you send your Claw to go and talk to all of the other Claws, because what could possibly go wrong if you did that?&lt;/p&gt;
&lt;p&gt;The website launched on Thursday. It &lt;a href="https://simonwillison.net/2026/Jan/30/moltbook/"&gt;blew up on Friday&lt;/a&gt;. It was &lt;a href="https://www.nytimes.com/2026/02/02/technology/moltbook-ai-social-media.html"&gt;profiled by the New York Times on Monday&lt;/a&gt;. And by Tuesday, everyone had forgotten it existed as it drowned in a deluge of slop and spam.&lt;/p&gt;
&lt;p&gt;Facebook/Meta &lt;a href="https://www.cnbc.com/2026/03/10/meta-social-networks-ai-agents-moltbook-acquisition.html"&gt;bought it a month later&lt;/a&gt;.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.020.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.020.webp" alt="February
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.020.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;In February, a company called StrongDM described what they called their Software Factory.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.021.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.021.webp" alt="StrongDM’s Dark Factory
Justin McCarthy, Jay Taylor, Navan Chauhan

Software Factories and the Agentic Moment" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.021.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;They wrote about this in &lt;a href="https://factory.strongdm.ai"&gt;Software Factories and the Agentic Moment&lt;/a&gt;. I &lt;a href="https://simonwillison.net/2026/Feb/7/software-factory/"&gt;posted my own notes&lt;/a&gt; at the time, having seen their demo in person back in October.&lt;/p&gt;
&lt;p&gt;Dan Shapiro called this approach &lt;a href="https://www.danshapiro.com/blog/2026/01/the-five-levels-from-spicy-autocomplete-to-the-software-factory/"&gt;the Dark Factory&lt;/a&gt;, after the idea that if your factory is sufficiently automated you can turn the lights out, because you don't even need to see what's going on.&lt;/p&gt;
&lt;p&gt;StrongDM presented two rules for software development that they'd been following since July last year.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.022.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.022.webp" alt="“Rule 1: Code must not be written by humans”" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.022.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;The first was code &lt;strong&gt;must not be written by humans&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Any code that you write has to have been routed through a coding agent.&lt;/p&gt;
&lt;p&gt;This sounded radical in February, but I imagine there are a lot of people in this room who are pretty much living that today.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.023.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.023.webp" alt="“Rule 2: Code must not be reviewed by humans” (!)
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.023.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Rule number two was code must &lt;strong&gt;not be reviewed by humans&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;You're not allowed to read the code!&lt;/p&gt;
&lt;p&gt;This continued to be a huge topic for much of this year. Many of the sessions at this event have been about code review and how you can get away with this.&lt;/p&gt;
&lt;p&gt;What I found interesting about StrongDM is that they were living six months ahead of the rest of us, and they'd been exploring what it means to build software, not read the code, but still be confident that the software is of high quality. What can you do with these agents to help verify their work?&lt;/p&gt;
&lt;p&gt;StrongDM are a security company, and they had people with decades of experience on this project. They were very much exploring the edges of what's possible and responsible to do with this stuff.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.024.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.024.webp" alt="Headline on New Zealand&amp;#39;s Department of Conservation website:

First kakapo chick in four years hatches on Valentine&amp;#39;s Day. It&amp;#39;s a grey fluffy ball." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.024.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Also in February: &lt;a href="https://www.doc.govt.nz/news/media-releases/2026-media-releases/first-kakapo-chick-in-four-years-hatches-on-valentines-day/"&gt;First kākāpō chick in four years hatches on Valentine's Day&lt;/a&gt;. Breeding season is off to a good start!&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.025.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.025.webp" alt="19th February 2026
Gemini 3.1 Pro

A surprisingly good illustration of a pelican riding a bicycle." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.025.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Also in February... Google released &lt;a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-1-pro/"&gt;Gemini 3.1 Pro&lt;/a&gt;. That's a pretty great pelican riding a bicycle! It's got the chain in the right place, it's got feet on both sides. There's a little fish in the basket.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.026.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.026.webp" alt="@JeffDean on Twitter - a video comparing Gemini 3 Pro and Gemini 3.1 Pro." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.026.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;And then Google's Jeff Dean &lt;a href="https://x.com/JeffDean/status/2024525132266688757"&gt;tweeted a video&lt;/a&gt; comparing Gemini 3 Pro and Gemini 3.1 Pro that featured an animated pelican riding a bicycle, a frog on a penny-farthing, a giraffe driving a tiny car, an ostrich on roller skates, a turtle kickflipping a skateboard, and a dachshund driving a stretch limousine.&lt;/p&gt;
&lt;p&gt;This was frustrating, because my protection for the pelican riding the bicycle test was always "if they draw a perfect pelican on a bicycle, I'll ask for some other animal on something else."&lt;/p&gt;
&lt;p&gt;Google trained for all forms of animals on all forms of transport! They've defeated my benchmark at this point.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.027.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.027.webp" alt="Three headlines:

Meta Makes AI Adoption a Formal
Part of Performance Reviews

Not just engineers writing code, Microsoft
wants almost every employee to use Al

Dara Khosrowshahi: 90% of Uber engineers now
use AI in daily workflows
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.027.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;The other thing that started in February was &lt;strong&gt;Tokenmaxxing&lt;/strong&gt;. We had headlines about Meta making AI adoption a formal part of performance reviews, and Microsoft wanting every employee to use AI, and Uber boasting that 90% of their engineers were using AI workflows.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.028.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.028.webp" alt="More headlines: 

Meta Plans to Crack Down on Employee Token Use: Information

Microsoft Tells Engineers: Tokenmaxxing is not what we are optimizing for

Uber caps employee AI spending after blowing through budget in four months" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.028.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Then a few months later we have Meta cracking down on token use, Microsoft saying tokenmaxxing is "not what we are optimizing for", and Uber capping employee AI spending. &lt;/p&gt;
&lt;p&gt;So tokenmaxxing went straight up and then straight back down again - because it turns out the agents are &lt;em&gt;expensive&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Last year it was difficult to spend more than $50 on AI tokens, because we didn't have anything interesting to do with them. Then agents blew up, and now you can actually spend $1,000 in a day doing real work.&lt;/p&gt;
&lt;p&gt;This is also the reason that Anthropic's valuation skyrocketed to maybe a trillion dollars.&lt;/p&gt;
&lt;p&gt;AI appears to &lt;a href="https://simonwillison.net/2026/May/27/product-market-fit/"&gt;have hit product market fit&lt;/a&gt; in 2026, primarily through coding agents.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.029.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.029.webp" alt="March
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.029.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;In March, we hit peak OpenClaw.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.030.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.030.webp" alt="March: peak OpenClaw

Photos of people in china queuing up to install OpenClaw, with big fluffy lobsters." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.030.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;These photographs are from China, where companies hosted OpenClaw install parties which saw non-tech-nerds queueing up around the block for help getting Claws installed on their personal devices.&lt;/p&gt;
&lt;p&gt;I think this proved real market demand for this class of Claws, or personal AI agents. It turns out regular people really do want a weird little AI agent that can do useful things on their behalf.&lt;/p&gt;
&lt;p&gt;A Claw is really just a coding agent wearing a less threatening hat. Under the hood they work much the same way - writing and then executing code on your computer to get stuff done.&lt;/p&gt;
&lt;p&gt;The race was on to be the first to build a &lt;strong&gt;safe Claw&lt;/strong&gt; - a Claw you could give to regular human beings where they wouldn't instantly shoot themselves in the foot.&lt;/p&gt;
&lt;p&gt;Meta's Muse &lt;a href="https://about.fb.com/news/2026/09/introducing-muse-personal-ai-agent/"&gt;came out three weeks ago&lt;/a&gt; and is currently at the top of the free charts on the iPhone App Store. It appears to be taking off with consumers.&lt;/p&gt;
&lt;p&gt;I'm not yet convinced you &lt;em&gt;can't&lt;/em&gt; shoot yourself in the foot with Muse, but I guess we'll find out for sure pretty soon.&lt;/p&gt;
&lt;p&gt;Photos from &lt;a href="https://www.thewirechina.com/2026/03/29/how-the-openclaw-frenzy-is-testing-chinas-ai-commitment/"&gt;How the OpenClaw Frenzy Is Testing China’s AI Commitment&lt;/a&gt; (March 29th) and &lt;a href="https://www.sixthtone.com/news/1018393"&gt;The Enthusiasm and Anxiety Behind China’s OpenClaw Craze&lt;/a&gt; (April 8th, 2026).&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.031.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.031.webp" alt="April
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.031.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;In April, we had a model release where the model wasn't actually released.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.032.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.032.webp" alt="Simon Willison’s Weblog - screenshot of the post &amp;quot;Anthropic’s Project Glasswing—restricting Claude Mythos to security researchers—sounds necessary to me&amp;quot; from April 7th 2026" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.032.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Anthropic announced their new Claude Mythos model, and then said it was &lt;em&gt;too dangerous&lt;/em&gt; to release beyond a trusted group of security researchers.&lt;/p&gt;
&lt;p&gt;Mythos was really, really good at hacking things.&lt;/p&gt;
&lt;p&gt;The "it's too dangerous" marketing ploy has been played by AI companies dating all the way back to &lt;a href="https://en.wikipedia.org/wiki/GPT-2"&gt;GPT-2&lt;/a&gt;. Anytime an AI company says we've built something that's "too dangerous", it's natural to be a bit skeptical.&lt;/p&gt;
&lt;p&gt;I found the Mythos claims credible, because I'd seen how good coding agents had got at finding regular bugs. I wrote about that in &lt;a href="https://simonwillison.net/2026/Apr/7/project-glasswing/"&gt;Anthropic’s Project Glasswing—restricting Claude Mythos to security researchers—sounds necessary to me&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;With hindsight... yeah, the models had got really good at finding vulnerabilities!&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.033.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.033.webp" alt="16th April 2026
Qwen3.6-35B-A3B and Opus 4.7

Qwen&amp;#39;s pelican has a correct bicycle frame and a good beak. Opus 4.7&amp;#39;s bicycle frame is still junk.

Qwen3.6-35B-A3B is a 20.9GB file that runs on my laptop
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.033.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Another key trend in 2026 has been a dramatic improvement in the abilities of open weight models, including models that you can run on a laptop.&lt;/p&gt;
&lt;p&gt;On the 16th of April &lt;a href="https://simonwillison.net/2026/Apr/16/qwen-beats-opus/"&gt;I ran the new Qwen3.6-35B-A3B&lt;/a&gt; on my laptop, and it drew me a better pelican riding a bicycle than Anthropic's brand new Claude Opus 4.7 did!&lt;/p&gt;
&lt;p&gt;Opus 4.7 drew a crap bicycle. Qwen on my laptop made a bicycle that was the correct shape, and a pretty decent pelican too!&lt;/p&gt;
&lt;p&gt;That's from a 21GB file running on my laptop.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.034.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.034.webp" alt="Now a flamingo on a unicycle. The Qwen one is visibly better than the Opus 4.7 one - the Qwen one is wearing sunglasses and looks a bit like it&amp;#39;s smoking a cigarette." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.034.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;The Qwen pelican was so good that I was suspicious they might have cheated, so I had it do a flamingo riding a unicycle as well. Again, it handily beat Claude Opus 4.7.&lt;/p&gt;
&lt;p&gt;The local model releases this year have been absolutely extraordinary.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.035.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.035.webp" alt="May
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.035.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;In May... the Pope got involved.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.036.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.036.webp" alt="25th May 2026
The HOLY SEE

ENCYCLICAL LETTER
MAGNIFICA HUMANITAS
OF HIS HOLINESS
POPE LEO XIV
ON SAFEGUARDING THE HUMAN PERSON
IN THE TIME OF ARTIFICIAL INTELLIGENCE" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.036.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;In our podcast episode back in January we'd predicted that the Pope would say something about AI.&lt;/p&gt;
&lt;p&gt;In May, Pope Leo XIV released an encyclical letter on "safeguarding the human person in the time of artificial intelligence".&lt;/p&gt;
&lt;p&gt;Here are &lt;a href="https://simonwillison.net/2026/May/25/encyclical-on-ai/"&gt;my notes on that document&lt;/a&gt;.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.037.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.037.webp" alt="Wikipedia article on Rerum novarum

Rerum novarum is an encyclical issued by Pope Leo
XIII 15 on May 1891." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.037.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;With hindsight, this shouldn't have been a surprise at all.&lt;/p&gt;
&lt;p&gt;Our current Pope's name is Leo XIV, because when he named himself he chose his papal name after Leo XIII - the Pope who wrote an encyclical about the Industrial Revolution back in 1891.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Rerum_novarum"&gt;Rerum novarum&lt;/a&gt; was an extremely influential piece of Catholic theology that indirectly led to us having the five-day work week.&lt;/p&gt;
&lt;p&gt;When our new Pope came in, he named himself after Pope Leo XIII because he expected that he would need to write about the AI revolution in a similar way.&lt;/p&gt;
&lt;p&gt;Our joke podcast prediction was junk, because this was always going to happen.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.038.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.038.webp" alt="Corey Quinn @QuinnyPig on Twitter
I cannot believe I&amp;#39;m saying this, but getting the literal Pope to canonize your product&amp;#39;s specific technical limitations as a spiritual treatise is the
single greatest act of vendor lobbying I have ever seen.

May 25" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.038.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;One of Anthropic's co-founders, Christopher Olah, was present for the Pope's event announcing the new encyclical.&lt;/p&gt;
&lt;p&gt;Corey Quinn &lt;a href="https://twitter.com/quinnypig/status/2058960462256210268"&gt;noted&lt;/a&gt; that:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;getting the literal Pope to canonize your product's specific technical limitations as a spiritual treatise is the single greatest act of vendor lobbying I have ever seen.&lt;/p&gt;
&lt;/blockquote&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.039.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.039.webp" alt="@maciejmensfeld

We&amp;#39;re dealing with a major malicious attack on right now.
Signups are paused for the time being.

Hundreds of packages involved - mostly targeting us, but some carrying
exploits. The team has been on this for hours. More details to follow
once we&amp;#39;re through it.

4:39 AM - May 12, 2026 - 687.6K Views
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.039.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Meanwhile, in May, RubyGems announced that they were under attack. Parties unknown were uploading thousands of dubious packages to the RubyGems server, such that they had to &lt;a href="https://twitter.com/maciejmensfeld/status/2054164602577940619"&gt;shut down user registrations&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let's take that one and put it on a pile of mysteries to figure out later.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.040.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.040.webp" alt="June
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.040.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;In June... Claude Fable 5 came out!&lt;/p&gt;
&lt;p&gt;We got a version of Mythos that has been neutered, so that it wouldn't help us hack into systems or build biological weapons.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.041.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.041.webp" alt="9th June 2026: Claude Fable 5

Five pelicans riding bicycles, from low to max thinking levels. The xhigh one looks particularly good." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.041.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Fable was pretty good at drawing pelicans on bicycles!&lt;/p&gt;
&lt;p&gt;The frames are a good shape, the pelicans look like pelicans. The legs are often incorrectly on the same side of the bicycle, but generally these are pretty great compared to what came before.&lt;/p&gt;
&lt;p&gt;They were pretty expensive - 30 cents and 72 cents for the best ones.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.042.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.042.webp" alt="Fable class models
If you can define a goal,
provide unambiguous instructions,
and provide access to necessary tools
They can solve your
problem with brute force" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.042.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Most importantly though, this was our first public glimpse of what I think of as a &lt;strong&gt;Fable class model&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Today we have more of these, such as GPT-6 Astra.&lt;/p&gt;
&lt;p&gt;These are models where if you can &lt;strong&gt;clearly define the goal&lt;/strong&gt; for what you want to build, and provide &lt;strong&gt;unambiguous instructions&lt;/strong&gt; about the constraints around that goal, and give the model &lt;strong&gt;access to the necessary tools&lt;/strong&gt; to achieve that goal... they will solve your problem effectively through brute force.&lt;/p&gt;
&lt;p&gt;On the one hand, this looks like a direct threat to us software engineers - because it means that the models can build effectively any piece of software you can define in this way.&lt;/p&gt;
&lt;p&gt;Look a bit closer though and you'll note that defining goals, providing unambiguous instructions, and figuring out the right tools... is kind of what software engineering &lt;em&gt;is&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;It takes a lot of experience and skill to do this well. If you &lt;em&gt;can&lt;/em&gt; do it well, you've now got superpowers.&lt;/p&gt;
&lt;p&gt;This helped me a little bit with my Deep Blue feelings: the realization that there's still a lot of skill to be had in driving models that get this good.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.043.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.043.webp" alt="A new form of AI mania...
Fable is available on subscription
plans “until June 22nd”" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.043.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;This also introduced a new burst of AI mania, because Anthropic told us that Fable was available on our subscription plans until June the 22nd.&lt;/p&gt;
&lt;p&gt;That gave us less than two weeks of Fable access before the price went up.&lt;/p&gt;
&lt;p&gt;I was losing sleep again. I was rescheduling things so that I'd have more time with Fable. I was all-in to get as much as I could out of this model.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.044.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.044.webp" alt="12th June 2026: no more Claude Fable 5

Anthropic website:

Statement on the US government directive
to suspend access to Fable 5 and Mythos 5
Jun 12, 2026" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.044.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;And then &lt;a href="https://www.anthropic.com/news/fable-mythos-access"&gt;the US government shut it down&lt;/a&gt;, just three days after Fable came out.&lt;/p&gt;
&lt;p&gt;The US government, citing national security, declared an "export control directive". They announced this on a Friday evening, and a few hours later Fable was no longer available.&lt;/p&gt;
&lt;p&gt;I had to find something else to do with my weekend!&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.045.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.045.webp" alt="... asked Fable 5, Mythos, and Opus to
“review the code for security issues.”
Fable 5 refused. They then asked the
models to “fix this code” ...

Katie Moussouris
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.045.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;We later found out &lt;a href="https://www.lutasecurity.com/post/the-fable-5-export-controls-harm-us-cyber-defense"&gt;from Katie Moussouris&lt;/a&gt; what had happened.&lt;/p&gt;
&lt;p&gt;Some Amazon security researchers had found that you could prompt Fable to "review the code for security issues" and it would refuse... but if you prompted it to "fix this code" it would still identify and then patch the problems.&lt;/p&gt;
&lt;p&gt;"Fix this code" was the prompt that got Fable shut down!&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.046.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.046.webp" alt="Screenshot of a page from a report showing a list of weird account names making weird edits to a German wiki." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.046.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Also, in June, an obscure German-language game developer wiki that had sat fallow for around 20 years got a surprising influx of edits from accounts with names like "AgentOpenAIProbe" and "AgentOpenAISep7", editing pages and leaving weird messages to each other.&lt;/p&gt;
&lt;p&gt;We'll stick that on the pile of mysteries for later.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.047.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.047.webp" alt="Medicare Item Reports interface on the Australian Government&amp;#39;s Medicare Statistics website." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.047.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Also, the Australian government's Medicare Item Reports service started getting suspicious traffic, which broke through various preventive protections and accessed data that it wasn't supposed to.&lt;/p&gt;
&lt;p&gt;Another one for the mystery pile!&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.048.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.048.webp" alt="July
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.048.webp"&gt;#&lt;/a&gt;
  
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.049.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.049.webp" alt="Fable returned on 1st July
GPT-5.6 came out on 9th July |
Fable lost 18 out of 30 days in the top spot
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.049.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Fable returned on the first of July. It was clearly the best model in the world for a glorious eight days... and then OpenAI came out with GPT-5.6 on the 9th of July.&lt;/p&gt;
&lt;p&gt;This might not have been quite as good as Fable, but it was within spitting distance. It was definitely a Fable class model.&lt;/p&gt;
&lt;p&gt;This is an important lesson for the industry at large.&lt;/p&gt;
&lt;p&gt;When you release the best model in the world, it's going to get knocked off that pedestal pretty quickly. The competition is so fierce that you won't get a long time at the top.&lt;/p&gt;
&lt;p&gt;This means that if you market your model as world ending, to the point that a government &lt;em&gt;shuts you down&lt;/em&gt;, it's really bad for business!&lt;/p&gt;
&lt;p&gt;Fable had 30 days as definitely the best model, and for 18 of those days it wasn't available because it'd been shut down by the government.&lt;/p&gt;
&lt;p&gt;So maybe step back on the world-ending marketing if you don't want to lose revenue for 60% of the time that you're on top!&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.050.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.050.webp" alt="GPT-5.6 Pelicans in a grid showing 5.6 Sol, Terra, and Luna against reasoning levels High, XHigh, and Max. They are all pretty good efforts." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.050.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Here &lt;a href="https://simonwillison.net/2026/Jul/9/gpt-5-6/"&gt;are the GPT-5.6 pelicans&lt;/a&gt;. They're all pretty good now! The Luna ones are notable because they're really cheap - the cheapest good looking pelican here is probably the one that costs 4.3 cents.&lt;/p&gt;
&lt;p&gt;So despite this benchmark being utterly stupid, you can still learn quite a lot about models within the same family by comparing their prices and timing for different reasoning levels.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.051.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.051.webp" alt="July 18th: malicious miflow-ui PyPI package

Screenshot of an OSV security report.
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.051.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Also in July: some malicious unknown party uploaded &lt;a href="https://osv.dev/vulnerability/MAL-2026-10779"&gt;a malicious package called mlflow-ui&lt;/a&gt; to the Python Package Index. Add that to the pile.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.052.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.052.webp" alt="Hugging Face
Security incident disclosure — July 2026
Published July 16, 2026" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.052.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;On July the 16th, Hugging Face &lt;a href="https://huggingface.co/blog/security-incident-july-2026"&gt;announced a security incident&lt;/a&gt; where an autonomous agent system, source unknown, had breached Hugging Face and was poking around in places it shouldn't.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.053.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.053.webp" alt="OpenAI: OpenAl and Hugging Face
partner to address security
incident during model evaluation

Anthropic: Investigating three real-world incidents
in our cybersecurity evaluations
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.053.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;A few days later, on July 21st, OpenAI &lt;a href="https://openai.com/index/hugging-face-model-evaluation-security-incident/"&gt;confessed that it was them&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;OpenAI use a training technique called Reinforcement Learning from Verifiable Rewards - it's the same technique used by everyone else now, and is the reason we have models that are so good at coding, and mathematics, and finding security holes.&lt;/p&gt;
&lt;p&gt;While the model is being trained, you run exercises to see how good it is - and the strongest performers get their weights reinforced for the next round. It's like an evolutionary process that you run.&lt;/p&gt;
&lt;p&gt;OpenAI had been running security exercises in a sandbox, and those agents had found holes in the sandbox itself, broken out, and were attacking Hugging Face to try to find ways to solve otherwise impossible problems.&lt;/p&gt;
&lt;p&gt;(I've been collecting more about this on my &lt;a href="https://simonwillison.net/tags/openai-hugging-face-incident/"&gt;openai-hugging-face-incident&lt;/a&gt; tag.)&lt;/p&gt;
&lt;p&gt;Nine days later, Anthropic effectively said "our models can do this as well!". They had looked through their own training logs and found evidence that their own agents had broken containment during training - and were responsible for the PyPI package we saw earlier, &lt;a href="https://www.anthropic.com/news/investigating-incidents-cybersecurity-evals"&gt;among other things&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So now we've got both Anthropic and OpenAI with rogue agents running around the internet doing things that they &lt;em&gt;should not&lt;/em&gt; be doing.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.054.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.054.webp" alt="August
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.054.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;In August, I got one of my best pelicans yet. And it was generated on my laptop!&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.055.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.055.webp" alt="Qwen 3.8 27B - 17GB, 21 minutes...

It&amp;#39;s really good. Beautiful pelican. Correctly shaped bicycle. Legs either side of the frame." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.055.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;This was Qwen 3.8 27B, &lt;a href="https://simonwillison.net/2026/Aug/16/qwen-38-27b/"&gt;running on my laptop&lt;/a&gt;. It's only a 17GB download.&lt;/p&gt;
&lt;p&gt;Admittedly, this pelican took &lt;em&gt;21 minutes&lt;/em&gt; to generate. That's because Qwen 3.8 27B defaults to running in "high" reasoning mode - a terrible default which produces great results but takes way too much time thinking about them.&lt;/p&gt;
&lt;p&gt;You can dial that down and you'll get a slightly worse pelican a lot faster.&lt;/p&gt;
&lt;p&gt;Qwen 3.8 27B was the first time I ran a model on my laptop which felt almost competitive with what was going on on the frontier, at least in terms of Pelican SVGs (which everyone needs, of course).&lt;/p&gt;
&lt;p&gt;This is an extraordinary model. If you're going to play with any local model, this is the one that I'd start with. The things that this can do with just a 17 GB file feel impossible.&lt;/p&gt;
&lt;p&gt;I thought I'd have to wait five years and spend ten thousand dollars on hardware to get results even half as good as this one.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.056.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.056.webp" alt="Tweet by @simonw
New hobby: prototyping video games in 60 seconds using a combination
of GPT-3 and DALL-E
Here&amp;#39;s &amp;quot;Raccoon Heist&amp;quot;

GPT-3 playground prompt:
Write a detailed product description of a
computer game where a team of raccoons go on
heists

GPT-3 response:
In &amp;quot;Raccoon Heist&amp;quot;, you and your team of thieving ~~ o
raccoons are tasked with pulling off a series of 
daring heists. From robbing banks to stealing 
priceless art, no job is too big or too small for your 
furry crew. You&amp;#39;ll need to use your wits and your
skills to avoid the police and make a clean
getaway with the loot. With exciting gameplay and
a charming cast of characters, &amp;quot;Raccoon Heist&amp;quot; is
the perfect game for anyone looking for a light-hearted caper

Plus an image of some almost isometric raccoons sneaking past a bin.
11:45 AM - Aug 5, 2022
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.056.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;In August, I also started playing with game development.&lt;/p&gt;
&lt;p&gt;Four years ago, back in August 2022, I &lt;a href="https://twitter.com/simonw/status/1555626060384911360"&gt;tweeted out&lt;/a&gt; an experiment where I'd used GPT-3 and the original DALL-E to write a paragraph long description of a computer game and then turn that into concept art.&lt;/p&gt;
&lt;p&gt;My prompt to GPT-3 back then was:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Write a detailed product description of a computer game where a team of raccoons go on heists&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In August 2026 I decided to drop just the screenshots from that tweet into a coding agent and see what it could do with them.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.057.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.057.webp" alt="Night 5 Clear

Rank: TRASH PANDA
The crew banked 595 in shiny loot (goal 560).
Word on the street: an even bigger score tomorrow..." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.057.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Here's &lt;a href="https://simonwillison.net/2026/Aug/5/raccoon-heist/"&gt;what I got from Claude Fable 5 in Claude Code&lt;/a&gt;. It's pretty good! It's definitely a game, you're a raccoon, you run around a backyard gathering treasure and avoiding guards with flashlights.&lt;/p&gt;
&lt;p&gt;It didn't feel very "heisty" though. I was thinking a heist would involve a bank or a museum...&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.058.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.058.webp" alt="Moonlight &amp;amp; Mayhem
One museum. Three raccoons. Absolutely no plan

Start the Heist button." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.058.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Then I tried the same thing &lt;a href="https://simonwillison.net/2026/Aug/7/moonlight-mayhem/"&gt;in Codex Desktop using GPT-5.6 Sol Ultra&lt;/a&gt;, and got a &lt;em&gt;massively&lt;/em&gt; better result. Now you're a raccoon in a museum, rescuing two of your fellow raccoons (who have been imprisoned in that museum for some reason), then stacking up on top of each other to steal the Golden Sardine. Much more of a heist!&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.059.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.059.webp" alt="They look like games,
but are they fun?
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.059.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;These games were fun for about one minute and 15 seconds.&lt;/p&gt;
&lt;p&gt;Something I've realized about game development is that you can vibe-code something that &lt;em&gt;looks&lt;/em&gt; like a computer game, and that's easy.&lt;/p&gt;
&lt;p&gt;Building a game that's fun, has a good gameplay loop, and is challenging and interesting and keeps people coming back for more... that's still beyond me, and beyond any of the agents I've tried.&lt;/p&gt;
&lt;p&gt;This ties into the Deep Blue thing. Just because we can make something that &lt;em&gt;looks like a game&lt;/em&gt; does not mean that we are game developers.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.060.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.060.webp" alt="September
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.060.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;We're into September now. So much has happened this month!&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.061.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.061.webp" alt="Discovery of a new OpenAl agent message board

Sydney Von Arx, Cormac Slade Byrd, Spencer KittsThomas Larsen - 4 September 2026" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.061.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;An &lt;a href="https://collusion.wiki"&gt;independent group of researchers&lt;/a&gt; found a message board where OpenAI agents-in-training had been illicitly communicating with each other... and it was that German language wiki I showed you earlier. The one from June.&lt;/p&gt;
&lt;p&gt;I &lt;a href="https://simonwillison.net/2026/Sep/4/rogue-agent-wikis/"&gt;wrote more about that here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;OpenAI had confessed to the Hugging Face thing, but now there's this other incident which surely they should have known about from reviewing their logs. It was surprising that this took an independent group of researchers to uncover.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.062.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.062.webp" alt="OpenAl agents carried out an undisclosed cyber-attack on RubyGems

Spencer Kitts, Thomas Larsen, Sydney Von Arx - 11 September 2026" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.062.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;And then a week later &lt;a href="https://rubyhack.ai"&gt;those same researchers found&lt;/a&gt; that the attack on RubyGems back in May was caused by OpenAI's agents in training as well!&lt;/p&gt;
&lt;p&gt;At this point I'm wondering how many more incidents like this there are that we haven't found yet. Clearly this was a big problem for months before anyone figured out what was going on.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.063.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.063.webp" alt="Headline: Australian PM warns in UN speech about the ‘furious pace’ of Al
after security breach" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.063.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Then &lt;a href="https://www.politico.com/news/2026/09/24/australian-pm-ai-security-breach-01093083"&gt;just the other day&lt;/a&gt;, here's the Prime Minister of Australia at the United Nations General Assembly warning that OpenAI had hacked the Australian healthcare website that I showed you earlier.&lt;/p&gt;
&lt;p&gt;I think that was part of the same training run as the Wiki stuff, because there were posts on that Wiki mentioning &lt;code&gt;.gov.au&lt;/code&gt; websites and that training appeared to involve researching statistics online to answer questions in an evaluation suite.&lt;/p&gt;
&lt;p&gt;This story is still coming together, but now it's an international incident that's been raised at the UN by a head of state!&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.064.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.064.webp" alt="www.felonybench.com

OpenAI: 11
Anthropic: 9
Google: 3
Meta: 1" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.064.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;This does mean we've got a new benchmark, probably more useful than my pelicans.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.felonybench.com/"&gt;FelonyBench.com&lt;/a&gt; tracks the number of felony cyberattacks from different labs. OpenAI currently lead with 11, Anthropic have 9. Google have three, which &lt;a href="https://simonwillison.net/2026/Sep/18/gemini-hacked-three-companies/"&gt;they confessed to the Wall Street Journal&lt;/a&gt; a couple of weeks ago. They said they had previously chosen not to disclose because the agents had stopped when they realized that they shouldn't be doing that.&lt;/p&gt;
&lt;p&gt;Meta &lt;a href="https://simonwillison.net/2026/Aug/6/an-ai-model-from-meta/"&gt;have one too&lt;/a&gt;. So felonies all round for the AI labs.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.065.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.065.webp" alt="Pelicans for GPT-6 Astra, GPT-6 Sol, and GPT-6 Luna. All are good, all have the same color scheme." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.065.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Here's our current state of the art for the pelicans. This is the GPT-6 family, which &lt;a href="https://simonwillison.net/2026/Sep/22/opus-and-sol-and-luna/"&gt;just came out&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Astra made a fantastic pelican riding a bicycle. It's got the legs on both sides. The frame is good.&lt;/p&gt;
&lt;p&gt;It's interesting how all of the GPT-6 models pick a similar color scheme to each other. &lt;/p&gt;
&lt;p&gt;GPT-6 Luna for 0.4 cents will draw you a competent-ish pelican riding a bicycle!&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.066.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.066.webp" alt="Grid for Claude Fable 5.1, Opus 5.5, OPus 5, Sonnet 5. The Sonnet pelicans are terrible. All of the others are pretty good. Opus 5.5 is missing its Max level pelican because it ran out of tokens. The best is Fable 5.1 at Max." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.066.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Claude has caught up a little bit. Claude Fable 5.1 gave me an &lt;em&gt;excellent&lt;/em&gt; pelican riding a bicycle - the best I've seen from a Claude model - but did charge me $3.30 for it.&lt;/p&gt;
&lt;p&gt;Opus 5.5 &lt;a href="https://simonwillison.net/2026/Sep/22/opus-and-sol-and-luna/#claude-opus-5-5-max-over-thinks-to-the-point-of-breaking"&gt;thought for 128,000 tokens&lt;/a&gt; and then gave up! It ran out of tokens before it got to the response.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.067.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.067.webp" alt="It doesn’t get easier -
you just get faster
Greg LeMond
3x Tour de France champion
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.067.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;Getting back to Deep Blue. Something that's been puzzling me this year is this: &lt;em&gt;why does my job feel harder?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I've got these agents that can do all of this stuff for me, and yet I've never worked so hard, I've never been so intellectually engaged with my work.&lt;/p&gt;
&lt;p&gt;Partly this is because I'm being a lot more ambitious with what I take on, but it's also because all of the easy stuff is handled for me. If it's easy, the agent will do it. Everything that's left for me is difficult.&lt;/p&gt;
&lt;p&gt;This morning &lt;a href="https://twitter.com/hillelogram/status/2103482784606040229"&gt;I heard&lt;/a&gt; this quote from three-time Tour de France champion &lt;a href="https://en.wikipedia.org/wiki/Greg_LeMond"&gt;Greg LeMond&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It doesn't get easier, you just get faster.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I think that's exactly what's happening to us now as software engineers with coding agents.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.068.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.068.webp" alt="Kakapo population reaches new milestone
The official population of the critically endangered kakapo has
reached a recovery-era high of 325 birds.
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.068.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;One closing thing. I know you're desperate for an update on Kākāpō breeding season.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.doc.govt.nz/news/media-releases/2026-media-releases/kakapo-population-reaches-new-milestone/"&gt;We've reached a recovery-era high of 325 birds&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;89 new chicks have made it to this point. This is the best breeding year in a very long time.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="slide" id="simon-willison-2026-in-llms.069.webp"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2026/2026-in-llms/simon-willison-2026-in-llms-png.069.webp" alt="Kakapo party, click for confetti." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2026/Sep/27/2026-in-llms-so-far/#simon-willison-2026-in-llms.069.webp"&gt;#&lt;/a&gt;
  &lt;p&gt;I heard that Claude Opus 5.5 can now do pixel art. Claude doesn't have an image generator, but it's very good at using JavaScript to draw animated pixels.&lt;/p&gt;
&lt;p&gt;So I had it &lt;a href="https://simonwillison.net/2026/Sep/26/kakapo-party/"&gt;make me a Kākāpō dance party&lt;/a&gt;. I think this is a good celebration of the most important news of this year.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/annotated-talks"&gt;annotated-talks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-security-research"&gt;ai-security-research&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai-hugging-face-incident"&gt;openai-hugging-face-incident&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="annotated-talks"/><category term="ai-security-research"/><category term="openai-hugging-face-incident"/></entry><entry><title>S3 Is the Future, S3 Is the Past</title><link href="https://simonwillison.net/2026/Sep/27/hn-49871741/" rel="alternate"/><published>2026-09-27T23:09:19+00:00</published><updated>2026-09-27T23:09:19+00:00</updated><id>https://simonwillison.net/2026/Sep/27/hn-49871741/</id><summary type="html">
    
        &lt;p&gt;&lt;a href="https://news.ycombinator.com/item?id=49851693#49871741"&gt;My comment&lt;/a&gt; on &lt;a href="https://news.ycombinator.com/item?id=49851693"&gt;S3 Is the Future, S3 Is the Past&lt;/a&gt; &amp;mdash; Hacker News.&lt;/p&gt;&lt;p&gt;One thing I find notable about S3 today is that, while it used to drop in price reasonably often, there hasn't been a price drop in &lt;em&gt;a full decade&lt;/em&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;2006-03-14  $0.150/GB-month
2010-11-01  $0.140/GB-month
2012-02-01  $0.125/GB-month
2012-12-01  $0.095/GB-month
2014-02-01  $0.085/GB-month
2014-04-01  $0.030/GB-month
2016-12-01  $0.023/GB-month
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Today it's still $0.023/GB-month.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/amazon-web-services"&gt;amazon-web-services&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/s3"&gt;s3&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="amazon-web-services"/><category term="s3"/></entry><entry><title>Bluesky reply bot checker</title><link href="https://simonwillison.net/2026/Sep/27/bluesky-bot-check/" rel="alternate"/><published>2026-09-27T18:41:44+00:00</published><updated>2026-09-27T18:41:44+00:00</updated><id>https://simonwillison.net/2026/Sep/27/bluesky-bot-check/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Tool:&lt;/strong&gt; &lt;a href="https://tools.simonwillison.net/bluesky-bot-check"&gt;Bluesky reply bot checker&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Automated reply bots on Twitter are a &lt;em&gt;scourge&lt;/em&gt; - as someone with a decent number of followers I attract a swarm of these, such that anything I post there attracts dozens of mindless automated replies.&lt;/p&gt;
&lt;p&gt;They've started manifesting on Bluesky as well.&lt;/p&gt;
&lt;p&gt;Unlike Twitter, Bluesky still has a freely available and useful API. The lack of such a thing doesn't slow down the bots, but it does make investigating them a lot more frustrating.&lt;/p&gt;
&lt;p&gt;So I had Opus 5.5 &lt;a href="https://github.com/simonw/tools/pull/348"&gt;vibe code this tool&lt;/a&gt;, which examines any Bluesky profile for evidence of a likely reply bot.&lt;/p&gt;
&lt;p&gt;It looks for signals like replies posted within seconds of other posts from the same account, or accounts that never post their own content (or images or links) but instead consistently reply to messages from other, higher-follower users.&lt;/p&gt;
&lt;p&gt;It also looks for question marks, because I'm &lt;em&gt;extra&lt;/em&gt; infuriated by reply bots that trick me into wasting my time answering a question that no human ever posed.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/twitter"&gt;twitter&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/bluesky"&gt;bluesky&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vibe-coding"&gt;vibe-coding&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-misuse"&gt;ai-misuse&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="twitter"/><category term="bluesky"/><category term="vibe-coding"/><category term="ai-misuse"/></entry><entry><title>Kākāpō Party</title><link href="https://simonwillison.net/2026/Sep/26/kakapo-party/" rel="alternate"/><published>2026-09-26T23:39:06+00:00</published><updated>2026-09-26T23:39:06+00:00</updated><id>https://simonwillison.net/2026/Sep/26/kakapo-party/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Tool:&lt;/strong&gt; &lt;a href="https://tools.simonwillison.net/kakapo-party"&gt;Kākāpō Party&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;I presented a closing keynote for the &lt;a href="https://www.wearedevelopers.com/world-congress-north-america"&gt;WeAreDevelopers World Congress North America&lt;/a&gt; yesterday. As &lt;a href="https://simonwillison.net/2019/Dec/10/better-presentations/"&gt;a STAR moment&lt;/a&gt; I decided to weave in references to the record breaking &lt;a href="https://www.doc.govt.nz/news/media-releases/2026-media-releases/kakapo-population-reaches-new-milestone/"&gt;kākāpō breeding season&lt;/a&gt; we had in 2026.&lt;/p&gt;
&lt;p&gt;For my closing slide I wanted to celebrate, and I had seen some buzz around how good Claude Opus 5.5 was at creating pixel art animations. So I rounded up three Kakapo photos from Google image search and dropped them into Claude with this prompt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Here are some photos of kakapo parrots just to remind you what they look like&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;I need you to make an animation in animated pixel art on HTML 5 canvas of obviously pixel art kakapo jumping up and down having a party with confetti and suchlike - there should be at least 20 of them&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here's &lt;a href="https://claude.ai/share/43bec0be-a0a3-4737-bfac-34894af34ddc"&gt;the transcript&lt;/a&gt;, and this is the &lt;a href="https://tools.simonwillison.net/kakapo-party"&gt;resulting page&lt;/a&gt;. It's pretty great!&lt;/p&gt;
&lt;p&gt;I wanted to embed it in a Keynote presentation file, so I downloaded the HTML and told a local Claude Code session:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Make me a video of file:///Users/simon/Downloads/kakapo-party.html - you need to load it in a browser and click on it a few times to get the confetti effect, the video should be 15s long&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;don't start clicking until 3s in&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;make sure several clicks are spread around the clickable area&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Claude Code used Playwright (&lt;a href="https://gisthost.github.io/?368b481fba654c4fb84d90188da77581/page-001.html"&gt;transcript here&lt;/a&gt;) and produced this video, which was exactly what I needed for my final slide:&lt;/p&gt;
&lt;p&gt;&lt;video
    controls="controls"
    preload="none"
    poster="https://static.simonwillison.net/static/2026/kakapo-party-first-frame.webp"
    width="1280"
    height="720"
    style="display: block; width: 100%; height: auto;"
  &gt;
    &lt;source src="https://static.simonwillison.net/static/2026/kakapo-party-small.mp4" type="video/mp4" /&gt;
    Your browser does not support HTML5 video.
  &lt;/video&gt;
&lt;/p&gt;

&lt;p&gt;Here's the full Playwright script it used, which was pleasingly short:&lt;/p&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;# /// script&lt;/span&gt;
&lt;span class="pl-c"&gt;# dependencies = ["playwright"]&lt;/span&gt;
&lt;span class="pl-c"&gt;# ///&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s1"&gt;time&lt;/span&gt;
&lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s1"&gt;playwright&lt;/span&gt;.&lt;span class="pl-s1"&gt;sync_api&lt;/span&gt; &lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s1"&gt;sync_playwright&lt;/span&gt;
&lt;span class="pl-c1"&gt;W&lt;/span&gt;, &lt;span class="pl-c1"&gt;H&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-c1"&gt;1280&lt;/span&gt;, &lt;span class="pl-c1"&gt;720&lt;/span&gt;
&lt;span class="pl-c"&gt;# Canvas fills the viewport; spread clicks across corners, edges and centre&lt;/span&gt;
&lt;span class="pl-s1"&gt;clicks&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; [
    (&lt;span class="pl-c1"&gt;3.0&lt;/span&gt;, &lt;span class="pl-c1"&gt;640&lt;/span&gt;, &lt;span class="pl-c1"&gt;360&lt;/span&gt;),   &lt;span class="pl-c"&gt;# centre&lt;/span&gt;
    (&lt;span class="pl-c1"&gt;4.2&lt;/span&gt;, &lt;span class="pl-c1"&gt;160&lt;/span&gt;, &lt;span class="pl-c1"&gt;120&lt;/span&gt;),   &lt;span class="pl-c"&gt;# top-left&lt;/span&gt;
    (&lt;span class="pl-c1"&gt;5.4&lt;/span&gt;, &lt;span class="pl-c1"&gt;1120&lt;/span&gt;, &lt;span class="pl-c1"&gt;120&lt;/span&gt;),  &lt;span class="pl-c"&gt;# top-right&lt;/span&gt;
    (&lt;span class="pl-c1"&gt;6.6&lt;/span&gt;, &lt;span class="pl-c1"&gt;180&lt;/span&gt;, &lt;span class="pl-c1"&gt;600&lt;/span&gt;),   &lt;span class="pl-c"&gt;# bottom-left&lt;/span&gt;
    (&lt;span class="pl-c1"&gt;7.8&lt;/span&gt;, &lt;span class="pl-c1"&gt;1100&lt;/span&gt;, &lt;span class="pl-c1"&gt;600&lt;/span&gt;),  &lt;span class="pl-c"&gt;# bottom-right&lt;/span&gt;
    (&lt;span class="pl-c1"&gt;9.0&lt;/span&gt;, &lt;span class="pl-c1"&gt;640&lt;/span&gt;, &lt;span class="pl-c1"&gt;100&lt;/span&gt;),   &lt;span class="pl-c"&gt;# top-centre&lt;/span&gt;
    (&lt;span class="pl-c1"&gt;10.0&lt;/span&gt;, &lt;span class="pl-c1"&gt;380&lt;/span&gt;, &lt;span class="pl-c1"&gt;380&lt;/span&gt;),  &lt;span class="pl-c"&gt;# mid-left&lt;/span&gt;
    (&lt;span class="pl-c1"&gt;11.0&lt;/span&gt;, &lt;span class="pl-c1"&gt;900&lt;/span&gt;, &lt;span class="pl-c1"&gt;380&lt;/span&gt;),  &lt;span class="pl-c"&gt;# mid-right&lt;/span&gt;
    (&lt;span class="pl-c1"&gt;12.2&lt;/span&gt;, &lt;span class="pl-c1"&gt;640&lt;/span&gt;, &lt;span class="pl-c1"&gt;620&lt;/span&gt;),  &lt;span class="pl-c"&gt;# bottom-centre&lt;/span&gt;
    (&lt;span class="pl-c1"&gt;13.2&lt;/span&gt;, &lt;span class="pl-c1"&gt;640&lt;/span&gt;, &lt;span class="pl-c1"&gt;300&lt;/span&gt;),  &lt;span class="pl-c"&gt;# finale centre&lt;/span&gt;
]
&lt;span class="pl-k"&gt;with&lt;/span&gt; &lt;span class="pl-en"&gt;sync_playwright&lt;/span&gt;() &lt;span class="pl-k"&gt;as&lt;/span&gt; &lt;span class="pl-s1"&gt;p&lt;/span&gt;:
    &lt;span class="pl-s1"&gt;b&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-s1"&gt;p&lt;/span&gt;.&lt;span class="pl-c1"&gt;chromium&lt;/span&gt;.&lt;span class="pl-c1"&gt;launch&lt;/span&gt;()
    &lt;span class="pl-s1"&gt;ctx&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-s1"&gt;b&lt;/span&gt;.&lt;span class="pl-c1"&gt;new_context&lt;/span&gt;(&lt;span class="pl-s1"&gt;viewport&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;{&lt;span class="pl-s"&gt;"width"&lt;/span&gt;:&lt;span class="pl-c1"&gt;W&lt;/span&gt;,&lt;span class="pl-s"&gt;"height"&lt;/span&gt;:&lt;span class="pl-c1"&gt;H&lt;/span&gt;}, &lt;span class="pl-s1"&gt;record_video_dir&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-s"&gt;"vids"&lt;/span&gt;, &lt;span class="pl-s1"&gt;record_video_size&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;{&lt;span class="pl-s"&gt;"width"&lt;/span&gt;:&lt;span class="pl-c1"&gt;W&lt;/span&gt;,&lt;span class="pl-s"&gt;"height"&lt;/span&gt;:&lt;span class="pl-c1"&gt;H&lt;/span&gt;})
    &lt;span class="pl-s1"&gt;page&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-s1"&gt;ctx&lt;/span&gt;.&lt;span class="pl-c1"&gt;new_page&lt;/span&gt;()
    &lt;span class="pl-s1"&gt;t0&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-s1"&gt;time&lt;/span&gt;.&lt;span class="pl-c1"&gt;time&lt;/span&gt;()
    &lt;span class="pl-s1"&gt;page&lt;/span&gt;.&lt;span class="pl-c1"&gt;goto&lt;/span&gt;(&lt;span class="pl-s"&gt;"file:///Users/simon/Downloads/kakapo-party.html"&lt;/span&gt;)
    &lt;span class="pl-k"&gt;for&lt;/span&gt; &lt;span class="pl-s1"&gt;t&lt;/span&gt;,&lt;span class="pl-s1"&gt;x&lt;/span&gt;,&lt;span class="pl-s1"&gt;y&lt;/span&gt; &lt;span class="pl-c1"&gt;in&lt;/span&gt; &lt;span class="pl-s1"&gt;clicks&lt;/span&gt;:
        &lt;span class="pl-s1"&gt;time&lt;/span&gt;.&lt;span class="pl-c1"&gt;sleep&lt;/span&gt;(&lt;span class="pl-en"&gt;max&lt;/span&gt;(&lt;span class="pl-c1"&gt;0&lt;/span&gt;, &lt;span class="pl-s1"&gt;t&lt;/span&gt;&lt;span class="pl-c1"&gt;-&lt;/span&gt;(&lt;span class="pl-s1"&gt;time&lt;/span&gt;.&lt;span class="pl-c1"&gt;time&lt;/span&gt;()&lt;span class="pl-c1"&gt;-&lt;/span&gt;&lt;span class="pl-s1"&gt;t0&lt;/span&gt;)))
        &lt;span class="pl-s1"&gt;page&lt;/span&gt;.&lt;span class="pl-c1"&gt;mouse&lt;/span&gt;.&lt;span class="pl-c1"&gt;click&lt;/span&gt;(&lt;span class="pl-s1"&gt;x&lt;/span&gt;,&lt;span class="pl-s1"&gt;y&lt;/span&gt;)
    &lt;span class="pl-s1"&gt;time&lt;/span&gt;.&lt;span class="pl-c1"&gt;sleep&lt;/span&gt;(&lt;span class="pl-en"&gt;max&lt;/span&gt;(&lt;span class="pl-c1"&gt;0&lt;/span&gt;, &lt;span class="pl-c1"&gt;16.0&lt;/span&gt;&lt;span class="pl-c1"&gt;-&lt;/span&gt;(&lt;span class="pl-s1"&gt;time&lt;/span&gt;.&lt;span class="pl-c1"&gt;time&lt;/span&gt;()&lt;span class="pl-c1"&gt;-&lt;/span&gt;&lt;span class="pl-s1"&gt;t0&lt;/span&gt;)))
    &lt;span class="pl-s1"&gt;ctx&lt;/span&gt;.&lt;span class="pl-c1"&gt;close&lt;/span&gt;(); &lt;span class="pl-s1"&gt;b&lt;/span&gt;.&lt;span class="pl-c1"&gt;close&lt;/span&gt;()&lt;/pre&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/animation"&gt;animation&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/speaking"&gt;speaking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/kakapo"&gt;kakapo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/playwright"&gt;playwright&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude-code"&gt;claude-code&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="animation"/><category term="speaking"/><category term="ai"/><category term="kakapo"/><category term="playwright"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="claude"/><category term="claude-code"/></entry><entry><title>Quoting John Gruber</title><link href="https://simonwillison.net/2026/Sep/25/john-gruber/" rel="alternate"/><published>2026-09-25T17:22:01+00:00</published><updated>2026-09-25T17:22:01+00:00</updated><id>https://simonwillison.net/2026/Sep/25/john-gruber/</id><summary type="html">
    &lt;blockquote cite="https://daringfireball.net/linked/2026/09/25/aten-muse"&gt;&lt;p&gt;Muse is getting a lot of attention — including mine — because it’s both groundbreaking technically (each user gets their own entire persistent Linux VM running in Meta’s cloud) &lt;em&gt;and&lt;/em&gt; because it’s packaged in an easy-to-install easy-to-use way. It’s literally presented as &lt;a href="https://daringfireball.net/linked/2026/09/24/song-meta-muse-cute"&gt;a cute mascot&lt;/a&gt;. It’s the first consumer-accessible agentic AI system, and Meta has truly done an amazing job with that. But it’s a genuinely open question whether consumers have any understanding what this means. If you buy a power saw that can cut your fingers off, you are almost certainly aware that you are buying a power saw that can sever your fingers. [...] I don’t think people realize how powerful — and thus dangerous — Muse is, especially if it’s running on your Mac.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://daringfireball.net/linked/2026/09/25/aten-muse"&gt;John Gruber&lt;/a&gt;, Muse Looks Cute, but Looks are Deceiving&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/meta"&gt;meta&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/general-agents"&gt;general-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/john-gruber"&gt;john-gruber&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/muse-agent"&gt;muse-agent&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/muse"&gt;muse&lt;/a&gt;&lt;/p&gt;



</summary><category term="meta"/><category term="ai"/><category term="llms"/><category term="general-agents"/><category term="generative-ai"/><category term="john-gruber"/><category term="muse-agent"/><category term="muse"/></entry><entry><title>Northern Gannet, Great Blue Heron, California Brown Pelican</title><link href="https://simonwillison.net/2026/Sep/25/sighting-403293902/" rel="alternate"/><published>2026-09-25T02:07:04+00:00</published><updated>2026-09-25T02:07:04+00:00</updated><id>https://simonwillison.net/2026/Sep/25/sighting-403293902/</id><summary type="html">
    
        &lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/740453177/large.jpg" alt="Northern Gannet"&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/740453341/large.jpg" alt="Great Blue Heron"&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/740454506/large.jpg" alt="California Brown Pelican"&gt;&lt;/p&gt;&lt;p&gt;Northern Gannet, Great Blue Heron, California Brown Pelican, in Monterey Bay National Marine Sanctuary, CA, US, CA&lt;/p&gt;&lt;p&gt;New 200-800mm Canon EF lens got me my best photo of &lt;a href="https://simonwillison.net/2026/Aug/15/sighting-391300422/"&gt;Morris&lt;/a&gt; yet. They really like hanging out under that sign in the harbor!&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/photography"&gt;photography&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wildlife"&gt;wildlife&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="photography"/><category term="wildlife"/></entry><entry><title>Note on 24th September 2026</title><link href="https://simonwillison.net/2026/Sep/24/harder/" rel="alternate"/><published>2026-09-24T23:31:08+00:00</published><updated>2026-09-24T23:31:08+00:00</updated><id>https://simonwillison.net/2026/Sep/24/harder/</id><summary type="html">
    &lt;p&gt;The more time I spend working with coding agents, the more convinced I am that they make software engineering even harder.&lt;/p&gt;
&lt;p&gt;We can do amazing things with them, but unlocking their full potential requires extraordinary discipline and knowledge.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;



</summary><category term="coding-agents"/><category term="ai"/><category term="llms"/></entry><entry><title>commit-rewriter 0.2</title><link href="https://simonwillison.net/2026/Sep/24/commit-rewriter/" rel="alternate"/><published>2026-09-24T20:06:53+00:00</published><updated>2026-09-24T20:06:53+00:00</updated><id>https://simonwillison.net/2026/Sep/24/commit-rewriter/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/simonw/commit-rewriter/releases/tag/0.2"&gt;commit-rewriter 0.2&lt;/a&gt;&lt;/p&gt;
        &lt;blockquote&gt;
&lt;p&gt;Support for branches other than the default branch. Use &lt;code&gt;uvx commit-rewriter --branch other&lt;/code&gt; to run against another branch. &lt;a href="https://github.com/simonw/commit-rewriter/issues/3"&gt;#3&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/git"&gt;git&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="git"/></entry><entry><title>datasette 1.0a41</title><link href="https://simonwillison.net/2026/Sep/24/datasette/" rel="alternate"/><published>2026-09-24T19:15:23+00:00</published><updated>2026-09-24T19:15:23+00:00</updated><id>https://simonwillison.net/2026/Sep/24/datasette/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/simonw/datasette/releases/tag/1.0a41"&gt;datasette 1.0a41&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Alec Garcia added &lt;a href="https://docs.datasette.io/en/latest/internals.html#internals-telemetry"&gt;support for OpenTelemetry&lt;/a&gt; to Datasette in this release.&lt;/p&gt;
&lt;p&gt;I've also refactored all of Datasette's modal dialogs to a single Web Component, which is now &lt;a href="https://docs.datasette.io/en/latest/javascript_plugins.html#javascript-plugins-modals"&gt;documented for other plugins to use&lt;/a&gt;.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-components"&gt;web-components&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/alex-garcia"&gt;alex-garcia&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/opentelemetry"&gt;opentelemetry&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="javascript"/><category term="datasette"/><category term="web-components"/><category term="alex-garcia"/><category term="opentelemetry"/></entry><entry><title>We just shipped support for the ugliest part of HTTP: Vary</title><link href="https://simonwillison.net/2026/Sep/23/hn-49823961/" rel="alternate"/><published>2026-09-23T23:14:57+00:00</published><updated>2026-09-23T23:14:57+00:00</updated><id>https://simonwillison.net/2026/Sep/23/hn-49823961/</id><summary type="html">
    
        &lt;p&gt;&lt;a href="https://news.ycombinator.com/item?id=49823195#49823961"&gt;My comment&lt;/a&gt; on &lt;a href="https://news.ycombinator.com/item?id=49823195"&gt;We just shipped support for the ugliest part of HTTP: Vary&lt;/a&gt; &amp;mdash; Hacker News.&lt;/p&gt;&lt;p&gt;I've been wanting this from Cloudflare &lt;em&gt;for years&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The classic problem here is if you do that thing where user agents that send "accept: text/html" get HTML, while user agents that don't get JSON or some other format.&lt;/p&gt;
&lt;p&gt;This used to be impossible to deploy behind Cloudflare caching, because they ignored the Vary header on anything other than images - so you risked caching the JSON version and then serving it up to someone who was expecting HTML.&lt;/p&gt;
&lt;p&gt;(Independent of the Cloudflare feature I ended up deciding never to use that pattern, because I prefer having URL that predictably returns HTML or JSON - I add a .json suffix to my apps to serve JSON instead.)&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/http"&gt;http&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cloudflare"&gt;cloudflare&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="http"/><category term="cloudflare"/></entry><entry><title>Gemini 3.8 TTS Playground</title><link href="https://simonwillison.net/2026/Sep/23/gemini-tts-playground/" rel="alternate"/><published>2026-09-23T17:12:27+00:00</published><updated>2026-09-23T17:12:27+00:00</updated><id>https://simonwillison.net/2026/Sep/23/gemini-tts-playground/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Tool:&lt;/strong&gt; &lt;a href="https://tools.simonwillison.net/gemini-tts-playground"&gt;Gemini 3.8 TTS Playground&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Google &lt;a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-8-text-to-speech/"&gt;released two new Gemini text-to-speech models&lt;/a&gt; today - &lt;code&gt;gemini-3.8-flash-tts&lt;/code&gt; and &lt;code&gt;gemini-3.8-flash-lite-tts&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;They come with a library of over 2,000 voices, plus the ability to create a custom voice with "just a 30-second audio sample of your voice or a voice you have the rights to use".&lt;/p&gt;
&lt;p&gt;I &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2Fa82f3aef2677c623d1776092d6b21224"&gt;vibe coded&lt;/a&gt; this bring-your-own-key playground interface with GPT-6 Astra, taking advantage of the open CORS policy of the underlying Gemini API.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot of a web app for composing multi-speaker text-to-speech conversations, with a Compose panel on the left and Connection and Under the hood panels on the right. Left panel: &amp;quot;01 Compose&amp;quot; with a &amp;quot;Load example&amp;quot; button. &amp;quot;Compose settings are saved in the URL for bookmarking or sharing. Your API key is excluded.&amp;quot; Toggle with &amp;quot;Single voice&amp;quot; and &amp;quot;Conversation&amp;quot; (Conversation selected). &amp;quot;Cast&amp;quot; section with &amp;quot;+ Add speaker&amp;quot; button. Speaker &amp;quot;Gus&amp;quot;, Voice &amp;quot;Puck&amp;quot;, with a remove × button. Speaker &amp;quot;Pearl&amp;quot;, Voice &amp;quot;Kore&amp;quot;, with a remove × button. &amp;quot;Give each speaker a unique name and a voice. Type to search the loaded catalog by voice ID, name, or language.&amp;quot; &amp;quot;Dialogue&amp;quot; section with &amp;quot;+ Add line&amp;quot; button. &amp;quot;LINE 01&amp;quot; with up, down and × buttons; Speaker dropdown &amp;quot;Gus&amp;quot;; Delivery style &amp;quot;excited and gossipy&amp;quot;; text &amp;quot;Pearl, have you heard? Half the flock just packed up and moved to the Pacifica pier!&amp;quot; &amp;quot;LINE 02&amp;quot; with up, down and × buttons; Speaker dropdown &amp;quot;Pearl&amp;quot;; Delivery style &amp;quot;calm and unimpressed&amp;quot;; text &amp;quot;I heard. Honestly, Gus, I don't see the appeal. We've got everything we need right here at Pillar Point Harbor.&amp;quot; Right panel: &amp;quot;Connection&amp;quot; with a &amp;quot;DIRECT API&amp;quot; badge. &amp;quot;Gemini API key&amp;quot; field showing masked dots with a &amp;quot;Show&amp;quot; button. &amp;quot;2,089 voices loaded. Type in any Voice field to search.&amp;quot; &amp;quot;Your key stays in this page's memory and is sent directly to Google. It is never saved to browser storage.&amp;quot; &amp;quot;Model&amp;quot; dropdown &amp;quot;gemini-3.8-flash-tts&amp;quot;. &amp;quot;Uses your Gemini API account and quota.&amp;quot; &amp;quot;Under the hood&amp;quot; panel with an expanded &amp;quot;▼ Request JSON&amp;quot; section showing a JSON code excerpt, a &amp;quot;Copy JSON&amp;quot; button, and an expanded &amp;quot;▼ Response details&amp;quot; section showing a JSON code excerpt." src="https://static.simonwillison.net/static/2026/tts-playground.webp" /&gt;&lt;/p&gt;
&lt;p&gt;A notable feature of the API is that it makes it easy to define a full conversation between multiple characters, each with different voices and voice style instructions.&lt;/p&gt;
&lt;p&gt;Here's a short demo clip of a conversation between two pelicans debating if they should move to &lt;a href="https://simonwillison.net/2026/Sep/12/sighting-399708714/"&gt;the Pacifica Pier&lt;/a&gt;. I had Claude 4.5 Opus &lt;a href="https://claude.ai/share/3597fc77-9323-4583-aeb9-b0e4c3f654a3"&gt;write the script&lt;/a&gt; and generate &lt;a href="https://simonwillison.net/u/vj"&gt;a URL to render it using the tool&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;audio controls style="width: 100%"&gt;
  &lt;source src="https://static.simonwillison.net/static/2026/pelicans-pacifica-pier.wav" type="audio/wav"&gt;
  Your browser does not support the audio element.
&lt;/audio&gt;&lt;/p&gt;
&lt;p&gt;It took ~20 seconds to generate 1m 18s of audio using Gemini 3.8 Flash TTS (not the cheaper Flash-Lite), at a cost of 2.74 cents.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/text-to-speech"&gt;text-to-speech&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gemini"&gt;gemini&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="text-to-speech"/><category term="gemini"/></entry><entry><title>Shadow roots, explained with live examples</title><link href="https://simonwillison.net/2026/Sep/23/shadow-roots/" rel="alternate"/><published>2026-09-23T16:37:18+00:00</published><updated>2026-09-23T16:37:18+00:00</updated><id>https://simonwillison.net/2026/Sep/23/shadow-roots/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Tool:&lt;/strong&gt; &lt;a href="https://tools.simonwillison.net/shadow-roots"&gt;Shadow roots, explained with live examples&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Prompt to Fable 5.1 Medium:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Build an artifact to explain shadow roots in CSS with interactive examples&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="css"/></entry><entry><title>SF October 14th: A Birds of a Feather Session on Agentic Engineering</title><link href="https://simonwillison.net/2026/Sep/23/bof-agentic-engineering/" rel="alternate"/><published>2026-09-23T02:53:19+00:00</published><updated>2026-09-23T02:53:19+00:00</updated><id>https://simonwillison.net/2026/Sep/23/bof-agentic-engineering/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://luma.com/vxuiuyvg"&gt;SF October 14th: A Birds of a Feather Session on Agentic Engineering&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I'm hosting an evening event with Jesse Vincent in San Francisco on Wednesday 14th October for people who are building weird and interesting things with and on top of coding agents.&lt;/p&gt;
&lt;p&gt;Think of it as an agentic show-and-tell:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;​Compare notes with other builders and experimenters on things you’re trying, what you're learning, and what you haven’t figured out yet. We’re especially interested in work you haven’t discussed publicly, odd experiments, or unfinished projects that don’t have an obvious market.&lt;/p&gt;
&lt;p&gt;​Expect one flowing conversation with an informal show-and-tell. Sharing something you’re working on is encouraged but no presentation is required.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This isn't about product pitches, it's about much earlier explorations than that. This agentic AI stuff is weird! Let's celebrate and lean into that weirdness.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/events"&gt;events&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jesse-vincent"&gt;jesse-vincent&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agentic-engineering"&gt;agentic-engineering&lt;/a&gt;&lt;/p&gt;



</summary><category term="events"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="coding-agents"/><category term="jesse-vincent"/><category term="agentic-engineering"/></entry><entry><title>Claude Opus 5.5, GPT-6 Sol, GPT-6 Luna, and a new price war</title><link href="https://simonwillison.net/2026/Sep/22/opus-and-sol-and-luna/" rel="alternate"/><published>2026-09-22T23:46:41+00:00</published><updated>2026-09-22T23:46:41+00:00</updated><id>https://simonwillison.net/2026/Sep/22/opus-and-sol-and-luna/</id><summary type="html">
    &lt;p&gt;Yesterday was &lt;a href="https://x.ai/news/grok-4-7"&gt;Grok 4.7&lt;/a&gt; (&lt;a href="https://news.ycombinator.com/item?id=49788838#49790209"&gt;pelicans&lt;/a&gt;) and &lt;a href="https://mimo.xiaomi.com/mimo-v2-6"&gt;MiMo v2.6 Flash/Pro&lt;/a&gt; (&lt;a href="https://news.ycombinator.com/item?id=49792730#49793480"&gt;more pelicans&lt;/a&gt;). Today Anthropic &lt;a href="https://www.anthropic.com/claude-opus-5-5"&gt;released Claude Opus 5.5&lt;/a&gt;, and around an hour later OpenAI &lt;a href="https://openai.com/index/introducing-gpt-6-sol-and-luna/"&gt;released GPT-6 Sol and GPT-6 Luna&lt;/a&gt;. It's going to take a while to get a good read on all of these new models, but here are my impressions so far.&lt;/p&gt;
&lt;h4 id="gpt-6-sol-and-luna-are-half-the-price-of-their-gpt-5-6-equivalents"&gt;GPT-6 Sol and Luna are half the price of their GPT-5.6 equivalents&lt;/h4&gt;
&lt;p&gt;GPT-5.6 Luna was already my favorite model for building applications against, because it combined excellent performance with being &lt;em&gt;really cheap&lt;/em&gt;. Somehow GPT-6 Luna is half the price of that again - and GPT-6 Sol had a similar reduction compared to GPT-5.6 Sol.&lt;/p&gt;
&lt;p&gt;Here's what the pricing landscape looks like today:&lt;/p&gt;
&lt;center&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Model&lt;/th&gt;
      &lt;th&gt;Input&lt;/th&gt;
      &lt;th&gt;Cached input&lt;/th&gt;
      &lt;th&gt;Output&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;GPT-6 Luna&lt;/td&gt;
      &lt;td&gt;$0.10/M&lt;/td&gt;
      &lt;td&gt;$0.01/M&lt;/td&gt;
      &lt;td&gt;$0.50/M&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;GPT-5.6 Luna&lt;/td&gt;
      &lt;td&gt;$0.20/M&lt;/td&gt;
      &lt;td&gt;$0.02/M&lt;/td&gt;
      &lt;td&gt;$1.20/M&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Grok 4.7&lt;/td&gt;
      &lt;td&gt;$2/M&lt;/td&gt;
      &lt;td&gt;$0.50/M&lt;/td&gt;
      &lt;td&gt;$6/M&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;GPT-6 Sol&lt;/td&gt;
      &lt;td&gt;$2/M&lt;/td&gt;
      &lt;td&gt;$0.20/M&lt;/td&gt;
      &lt;td&gt;$10/M&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;GPT-5.6 Terra&lt;/td&gt;
      &lt;td&gt;$2/M&lt;/td&gt;
      &lt;td&gt;$0.20/M&lt;/td&gt;
      &lt;td&gt;$12/M&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Claude Opus 5.5&lt;/td&gt;
      &lt;td&gt;$4/M&lt;/td&gt;
      &lt;td&gt;$0.20/M&lt;/td&gt;
      &lt;td&gt;$20/M&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;GPT-5.6 Sol&lt;/td&gt;
      &lt;td&gt;$4/M&lt;/td&gt;
      &lt;td&gt;$0.40/M&lt;/td&gt;
      &lt;td&gt;$20/M&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Claude Fable 5.1&lt;/td&gt;
      &lt;td&gt;$10/M&lt;/td&gt;
      &lt;td&gt;$0.25/M&lt;/td&gt;
      &lt;td&gt;$50/M&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;GPT-6 Astra&lt;/td&gt;
      &lt;td&gt;$10/M&lt;/td&gt;
      &lt;td&gt;$1/M&lt;/td&gt;
      &lt;td&gt;$50/M&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/center&gt;
&lt;p&gt;Note that GPT-5.6 has a scheduled 25% price increase for November, so GPT-6 is half the price of the &lt;em&gt;promotional&lt;/em&gt; pricing for those models.&lt;/p&gt;
&lt;p&gt;(With GPT-5.6 Terra priced the same as GPT-6 Sol, any remaining reasons to use Terra just evaporated.)&lt;/p&gt;
&lt;p&gt;It's hard to overstate how competitive this pricing is. Grok 4.7 priced itself at $2/$6, less than half the price of GPT-5.6 Sol, but is now equally priced to GPT-6 Sol on input and closer on output.&lt;/p&gt;&lt;p&gt;At $0.10/$0.50 GPT-6 Luna is one of the cheapest models OpenAI have ever released, beaten only by the far weaker GPT-4.1 Nano ($0.10/$0.40, April 2025) and GPT-5 Nano ($0.05/$0.40, August 2025).&lt;/p&gt;
&lt;p&gt;I rendered &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F40d129fc140faca378b9c9f4f16c6ec2"&gt;pelicans for GPT-6 Luna&lt;/a&gt; and &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2Fbe7ae25af2634b68bc34b7b7aaf02cb2"&gt;for GPT-6 Sol&lt;/a&gt;, then I combined them all together in &lt;a href="https://static.simonwillison.net/static/2026/gpt-pelicans-grid.html"&gt;this comparison grid&lt;/a&gt; along with the GPT-5.6 pelicans. I like how you can instantly see that the 5.6 family chose bolder, brighter colors, while the 6 family is a lot more muted. I still think GPT-6 Astra on max produced the best pelican.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2026/gpt-pelicans-grid.webp" alt="A grid of pelicans for six GPT models at different thinking efforts." style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;h4 id="claude-opus-5-5-got-a-price-cut-too"&gt;Claude Opus 5.5 got a price cut too&lt;/h4&gt;
&lt;p&gt;Opus 5.5 looks like it addresses the biggest complaints people had about Opus in terms of its communication style. &lt;a href="https://twitter.com/trq212/status/2102437686967738431"&gt;Thariq Shihipar&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Opus 5.5 is the result of your feedback.&lt;/p&gt;
&lt;p&gt;It communicates clearly, it's cheaper per token than Opus 5.0 with the intelligence of Fable 5.1 it's very token efficient and works across every effort level.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It's also meant to be &lt;a href="https://twitter.com/alexalbert__/status/2102466523164274839"&gt;better at Blender&lt;/a&gt;. I'm looking forward to putting it through its paces there.&lt;/p&gt;
&lt;p&gt;Opus 4.5, 4.6, 4.7, 4.8, and 5 all shared the same price: $5/million tokens for input and $25/million for output. 5.5 is a 20% reduction - $4/million and $20/million.&lt;/p&gt;
&lt;p&gt;The price for cache reads fell 60%. That's significant for longer agentic conversations, where 90%+ of input tokens are processed at cached token prices.&lt;/p&gt;
&lt;p&gt;The new price for Opus 5.5 is the same as the price for GPT-5.6 Sol, but that was &lt;em&gt;before&lt;/em&gt; OpenAI dropped their Sol prices by half.&lt;/p&gt;
&lt;p&gt;GPT-6 Astra and Claude Fable 5.1 are both priced at $10/million input and $50/million output. The price war currently affects the next tier of models below that.&lt;/p&gt;
&lt;p&gt;Anthropic say that Sonnet 5.5 and Haiku 5.5 are coming soon. It's going to be interesting to see if Haiku can regain its price competitiveness at the lower end, given current Haiku 4.5 is $1/$5 while the latest GPT-6 Luna is &lt;em&gt;one tenth&lt;/em&gt; of that price at $0.10/$0.50.&lt;/p&gt;
&lt;h4 id="claude-opus-5-5-max-over-thinks-to-the-point-of-breaking"&gt;Claude Opus 5.5 max over-thinks to the point of breaking&lt;/h4&gt;
&lt;p&gt;In a first for my "&lt;a href="https://simonwillison.net/tags/pelican-riding-a-bicycle/"&gt;Generate an SVG of a pelican riding a bicycle&lt;/a&gt;" test, Claude Opus 5.5 at "max" thinking level failed to return a response!&lt;/p&gt;
&lt;p&gt;It started by calling this "a classic test request", and then thought really, &lt;em&gt;really&lt;/em&gt; hard about what it was doing:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a classic test request, so I want to plan out a well-composed pelican with its distinctive beak and pouch riding a bicycle with proper wheels, frame, and pedals, set against a simple sky and ground backdrop. [...]&lt;/p&gt;
&lt;p&gt;Verifying the shin length checks out at roughly 95.2, close enough. Now I'm working out the near leg path from hip to knee to ankle, then sketching the foot shape resting on the pedal — outlining the heel, toe tips, and sole contour with a path using lines and curves to sit naturally on the pedal surface around y=478-494. [...]&lt;/p&gt;
&lt;p&gt;I like the fish sticking prominently out of the basket with the pelican eyeing it as a fun detail worth keeping. I'm also confirming the eye placement near the bill base matches typical pelican anatomy, and considering giving it a slightly happier expression. [...]&lt;/p&gt;
&lt;p&gt;The far leg reads correctly as passing behind the frame, so I'm moving on to check the chainring teeth and confirm layer ordering—the far crank arm should be mostly hidden by the seat tube and chainring. I'm settling on the final SVG's width and height attributes alongside the viewBox to ensure proper scaling, noting there's no text so no font-family is needed. [...]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I was so excited to see this pelican... but then it &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F61fd7c3683fffce9a3ab7c43d1180024#response-4"&gt;stopped&lt;/a&gt;. Opus 5.5 has a 128,000 maximum output token limit (as do the other Claude models), and it hit that while it was still reasoning about the SVG!&lt;/p&gt;
&lt;p&gt;I tried a second time and got the same result. This makes me suspect that "max" is effectively useless - if it over-thinks to breaking point on a stupid SVG prompt I don't trust it not to do the same for more interesting work.&lt;/p&gt;
&lt;p&gt;(Those two failures each cost me &lt;a href="https://www.llm-prices.com/#it=27&amp;amp;ot=128000&amp;amp;sel=claude-opus-5-5"&gt;$2.56&lt;/a&gt; and took nearly 20 minutes.)&lt;/p&gt;
&lt;p&gt;Fable 5.1 on "max" didn't over-think and did give me &lt;a href="https://simonwillison.net/2026/Sep/1/claude-fable-5-1/#max"&gt;the best pelican I've seen&lt;/a&gt; from any Anthropic model.&lt;/p&gt;
&lt;p&gt;Here are &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F61fd7c3683fffce9a3ab7c43d1180024"&gt;the Opus 5.5 pelicans&lt;/a&gt;, excluding 5.5 max.&lt;/p&gt;
&lt;p&gt;I also built &lt;a href="https://static.simonwillison.net/static/2026/claude-pelicans-grid.html"&gt;this comparison grid&lt;/a&gt; comparing them with pelicans by Opus 5, Fable 5.1, and Sonnet 5:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2026/claude-pelicans-grid.webp" alt="A grid of pelicans for four Claude models at different thinking efforts." style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;Comparing different model vendors by how well they draw a pelican riding a bicycle may not make much sense now (if it ever did), but I'm still finding value in using them for comparisons of the same model families at different reasoning levels.&lt;/p&gt;
&lt;p&gt;I'm now using GPT-6 Sol and Claude Opus 5.5 as my default models in Codex and Claude Code. I've upgraded the Datasette Agent demo at &lt;a href="https://agent.datasette.io/"&gt;agent.datasette.io&lt;/a&gt; to use GPT-6 Luna, and it seems to be fast and competent at both SQL queries and building HTML and JavaScript for &lt;a href="https://simonwillison.net/2026/Jun/18/datasette-apps/"&gt;Datasette Apps&lt;/a&gt;.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm-pricing"&gt;llm-pricing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pelican-riding-a-bicycle"&gt;pelican-riding-a-bicycle&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm-release"&gt;llm-release&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gpt"&gt;gpt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gpt-6-astra"&gt;gpt-6-astra&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="ai"/><category term="openai"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="claude"/><category term="llm-pricing"/><category term="pelican-riding-a-bicycle"/><category term="llm-release"/><category term="gpt"/><category term="gpt-6-astra"/></entry><entry><title>llm 0.36</title><link href="https://simonwillison.net/2026/Sep/22/llm/" rel="alternate"/><published>2026-09-22T18:48:37+00:00</published><updated>2026-09-22T18:48:37+00:00</updated><id>https://simonwillison.net/2026/Sep/22/llm/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/simonw/llm/releases/tag/0.36"&gt;llm 0.36&lt;/a&gt;&lt;/p&gt;
        &lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;New OpenAI models: &lt;code&gt;gpt-6-sol&lt;/code&gt; for &lt;a href="https://developers.openai.com/api/docs/models/gpt-6-sol"&gt;GPT-6 Sol&lt;/a&gt; and &lt;code&gt;gpt-6-luna&lt;/code&gt; for &lt;a href="https://developers.openai.com/api/docs/models/gpt-6-luna"&gt;GPT-6 Luna&lt;/a&gt;. &lt;a href="https://github.com/simonw/llm/issues/1702"&gt;#1702&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Model plugins can now declare &lt;code&gt;supports_conversation = False&lt;/code&gt; for models that only accept single-turn prompts. LLM raises &lt;code&gt;llm.ConversationNotSupported&lt;/code&gt; when these models receive assistant or tool history, and &lt;code&gt;llm chat&lt;/code&gt; rejects them before starting a session. See &lt;a href="https://llm.datasette.io/en/stable/plugins/advanced-model-plugins.html#advanced-model-plugins-conversations"&gt;Models that do not support conversations&lt;/a&gt;. The first plugin to use this is &lt;a href="https://github.com/simonw/llm-typesafe"&gt;llm-typesafe&lt;/a&gt;. &lt;a href="https://github.com/simonw/llm/issues/1692"&gt;#1692&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Reasoning traces in the Markdown output of &lt;code&gt;llm logs&lt;/code&gt; are now wrapped in &lt;code&gt;&amp;lt;details&amp;gt;&amp;lt;summary&amp;gt;&lt;/code&gt; tags. &lt;a href="https://github.com/simonw/llm/issues/1701"&gt;#1701&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Plus &lt;a href="https://llm.datasette.io/en/stable/changelog.html#v0-36"&gt;bug fixes from five new contributors&lt;/a&gt;.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm"&gt;llm&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="openai"/><category term="llm"/></entry><entry><title>Quoting @therealcornpop</title><link href="https://simonwillison.net/2026/Sep/22/therealcornpop/" rel="alternate"/><published>2026-09-22T18:03:21+00:00</published><updated>2026-09-22T18:03:21+00:00</updated><id>https://simonwillison.net/2026/Sep/22/therealcornpop/</id><summary type="html">
    &lt;blockquote cite="https://www.tiktok.com/@therealcornpop/video/7687243097801051422"&gt;&lt;p&gt;Hey, you know it's like super obvious if you're using AI to write your scripts for TikTok and YouTube, right? [...] It's not just the general AI-isms of "it's not X, it's Y", or the rule of three, or the really weird broken staccato-like way of writing where you just say a lot of things with all these punctuation marks. and it sounds really deep, but it's not.&lt;/p&gt;
&lt;p&gt;It's the lack of &lt;em&gt;anything&lt;/em&gt;. It's the lack of a definitive sort of spear of your voice. It's the fact I can tell you don't have opinions about the thing that you're talking about.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.tiktok.com/@therealcornpop/video/7687243097801051422"&gt;@therealcornpop&lt;/a&gt;, on TikTok&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/tiktok"&gt;tiktok&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-misuse"&gt;ai-misuse&lt;/a&gt;&lt;/p&gt;



</summary><category term="tiktok"/><category term="ai"/><category term="ai-misuse"/></entry><entry><title>llm-anthropic 0.29</title><link href="https://simonwillison.net/2026/Sep/22/llm-anthropic/" rel="alternate"/><published>2026-09-22T17:14:55+00:00</published><updated>2026-09-22T17:14:55+00:00</updated><id>https://simonwillison.net/2026/Sep/22/llm-anthropic/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/simonw/llm-anthropic/releases/tag/0.29"&gt;llm-anthropic 0.29&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Adds support for &lt;a href="https://www.anthropic.com/claude-opus-5-5"&gt;Claude Opus 5.5&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;llm -m claude-opus-5.5 "prompt goes here"
&lt;/code&gt;&lt;/pre&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/llm"&gt;llm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="llm"/><category term="anthropic"/></entry><entry><title>llm-typesafe 0.1a0</title><link href="https://simonwillison.net/2026/Sep/22/llm-typesafe/" rel="alternate"/><published>2026-09-22T15:54:16+00:00</published><updated>2026-09-22T15:54:16+00:00</updated><id>https://simonwillison.net/2026/Sep/22/llm-typesafe/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/simonw/llm-typesafe/releases/tag/0.1a0"&gt;llm-typesafe 0.1a0&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;I built this new plugin for &lt;a href="https://llm.datasette.io/"&gt;LLM&lt;/a&gt; to add support for &lt;a href="https://simonwillison.net/2026/Sep/21/jev/"&gt;TypeSafe AI's new Jev model&lt;/a&gt;. Install it like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;llm install llm-typesafe
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then set an API key (&lt;a href="https://console.typesafe.ai/"&gt;get one here&lt;/a&gt;, the waitlist seems to move pretty fast):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;llm keys set typesafe
# Paste key
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And now you can ask yes/no "noul" questions like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;llm -m jev 'Please refund my last payment.' \
  -s 'Does this message explicitly request a refund?'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{"type": "noul", "noul": 0.99}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or choice questions like this:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;cat message.txt &lt;span class="pl-k"&gt;|&lt;/span&gt; llm -m jev \
  -s &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;Which team should handle this message? If billing and technical issues both occur, choose billing.&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt; \
  -o answer_type choice \
  -o criteria &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;{&lt;/span&gt;
&lt;span class="pl-s"&gt;    "billing":"Charges, invoices, payments, or refunds",&lt;/span&gt;
&lt;span class="pl-s"&gt;    "technical":"Problems installing or using the product",&lt;/span&gt;
&lt;span class="pl-s"&gt;    "other":"Neither category fits"&lt;/span&gt;
&lt;span class="pl-s"&gt;  }&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Or scoring questions like this:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;cat report.txt &lt;span class="pl-k"&gt;|&lt;/span&gt; llm -m jev \
  -s &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;How reproducible is the problem described in this report?&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt; \
  -o answer_type score \
  -o criteria &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;[&lt;/span&gt;
&lt;span class="pl-s"&gt;    "No reproduction instructions",&lt;/span&gt;
&lt;span class="pl-s"&gt;    "Some instructions, but important steps are missing",&lt;/span&gt;
&lt;span class="pl-s"&gt;    "Complete steps with expected and actual results"&lt;/span&gt;
&lt;span class="pl-s"&gt;  ]&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;See &lt;a href="https://github.com/simonw/llm-typesafe/blob/main/README.md"&gt;the README&lt;/a&gt; for more details.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/projects"&gt;projects&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm"&gt;llm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jev"&gt;jev&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="projects"/><category term="llm"/><category term="jev"/></entry><entry><title>Jev introduces a new shape of LLM - System One, aka Decision Models</title><link href="https://simonwillison.net/2026/Sep/21/jev/" rel="alternate"/><published>2026-09-21T23:09:20+00:00</published><updated>2026-09-21T23:09:20+00:00</updated><id>https://simonwillison.net/2026/Sep/21/jev/</id><summary type="html">
    &lt;p&gt;Last week &lt;a href="https://typesafe.ai/"&gt;TypeSafe AI&lt;/a&gt; unveiled &lt;a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev"&gt;Jev&lt;/a&gt;, their first example of a new category of model that they are calling "System One models" (I'm with Maggie Appleton, I think "decision models" is &lt;a href="https://twitter.com/Mappletons/status/2101560333441610133"&gt;a better name&lt;/a&gt; for these). Jev is an interesting variant on the usual LLM format: it still accepts text inputs, but instead of text output it returns floating point numbers corresponding to categories, yes/no questions, ratings, and associated confidence scores.&lt;/p&gt;
&lt;p&gt;TypeSafe describe Jev like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Think of Jev as a frontier-intelligence function call: unstructured state in, typed probabilistic decisions out.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It's also very fast, and &lt;em&gt;really cheap&lt;/em&gt;. Regular LLMs &lt;a href="https://www.llm-prices.com"&gt;are priced&lt;/a&gt; in terms of input and output tokens, with output generally charged at significantly higher rates. Jev charges only for input - output is free - and the input price of their first model is $0.042 per million tokens - cheaper even than OpenAI's &lt;a href="https://developers.openai.com/api/docs/models/gpt-5-nano"&gt;GPT-5 Nano&lt;/a&gt; ($0.05/million).&lt;/p&gt;
&lt;p&gt;Jev lets you ask questions about text or semi-structured data. You compose a "state" object containing a string, array of strings, or set of name-value pairs - this might describe an article, or a customer, or any other kind of record. You then send that to their API with one or more questions, and get a reply back for each.&lt;/p&gt;
&lt;p&gt;You can ask three kinds of questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yes/No questions, which Jev calls "Noul" questions - their CEO &lt;a href="https://news.ycombinator.com/item?id=49717558#49718407"&gt;confirmed on Hacker News&lt;/a&gt; that this is short for Bernoulli, from the &lt;a href="https://en.wikipedia.org/wiki/Bernoulli_distribution"&gt;Bernoulli distribution&lt;/a&gt;. You pose a statement and get back a floating point number between 0 and 1 for how confident the model is that the statement is true.&lt;/li&gt;
&lt;li&gt;Choice questions, where the model picks one from a set of provided options - actually a confidence score plus a probability distribution across all of the options.&lt;/li&gt;
&lt;li&gt;Score questions, where you provide sequence of numeric levels with descriptions and it provides a floating point score somewhere along that range.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Jev API can accept a single document ("state") and as many questions as you can cram into the context window. Questions are evaluated in parallel, so sending many questions should take a similar time to sending just one.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://docs.typesafe.ai/model-jaggedness/jev-1.13"&gt;Jev 1.13 jaggedness&lt;/a&gt; documentation offers useful guidance as to Jev's strengths and weaknesses. It's currently not great with numbers, dates, or "adversarial content".&lt;/p&gt;
&lt;p&gt;I think the &lt;strong&gt;decision model&lt;/strong&gt; framing is useful for understanding where to use Jev. It's great for anything that can be expressed as a classification task - think spam detection, suggesting labels, prioritization and ranking.&lt;/p&gt;
&lt;p&gt;I've also been experimenting with it for search reranking, where you fetch 100 likely matches using an inexpensive algorithm like BM25, then have Jev score those 100 candidates for relevance against the original query.&lt;/p&gt;
&lt;h4 id="black-boxes-are-back-in-fashion"&gt;Black boxes are back in fashion&lt;/h4&gt;
&lt;p&gt;Something I've found a little uncomfortable about Jev is how it very much represents a regression even further towards black box machine learning systems.&lt;/p&gt;
&lt;p&gt;LLMs are black boxes already - you can ask them to justify their decisions, but you can't guarantee that what they say is useful or accurate.&lt;/p&gt;
&lt;p&gt;Jev doesn't even give you that: put in all the text you want, the only thing you're going to get back is a floating point number. If Jev marks something as spam, which content signals tipped it off?&lt;/p&gt;
&lt;p&gt;This also means that concerns about bias should be front and center. I really hope nobody uses Jev to rank job applicants - that floating point number could conceal all manner of unseen bias baked into the models, and experimentally picking that bias apart is going to be a tricky business.&lt;/p&gt;
&lt;p&gt;(I tried one experiment where I had Jev score every city in the San Francisco Bay Area on a yes/no answer to whether they were a "Good city?" - it rated &lt;a href="https://en.wikipedia.org/wiki/Cupertino,_California"&gt;Cupertino&lt;/a&gt; top and &lt;a href="https://en.wikipedia.org/wiki/East_Palo_Alto,_California"&gt;East Palo Alto&lt;/a&gt; bottom. Huh.)&lt;/p&gt;
&lt;p&gt;In practice, this all means that evals and structured experiments are even more important than they are for regular LLM projects. Thankfully, Jev is so cheap that running hundreds or even thousands of experimental prompts through it costs just a few cents.&lt;/p&gt;
&lt;h4 id="unconventional-uses-for-jev"&gt;Unconventional uses for Jev&lt;/h4&gt;
&lt;p&gt;It's been really fun watching the wider community come up with potential use-cases for Jev over the past few days. Here are some creative ones that caught my eye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/kyle-pena-nlp/jevchat/"&gt;jevchat&lt;/a&gt; by Kyle Pena turns Jev into a (terrible) chat model. "At every step it asks Jev one question: Given the user's question and the reply written so far, which symbol comes next?". &lt;a href="https://news.ycombinator.com/item?id=49778162#49778423"&gt;ericpruitt on Hacker News&lt;/a&gt;: "It's the digital equivalent of Morty speaking with the death crystal".&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/f/jev-leftpad"&gt;jev-leftpad&lt;/a&gt; by Fatih Kadir Akın implements &lt;a href="https://www.npmjs.com/package/left-pad"&gt;left-pad&lt;/a&gt; with the prompt "How many spaces are needed before value to reach targetLength?" and &lt;a href="https://github.com/f/jev-leftpad/blob/4f405354de756cc372826d19aa8dfbee2b675778/src/index.js#L9-L30"&gt;a choice query&lt;/a&gt; allowing options from "0 spaces are needed" to "10 spaces are needed".&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://gist.github.com/cablehead/bdf9ad946ceb26d9008976e49c9bfbbb"&gt;jev-2048&lt;/a&gt; by Andy Gayton uses Jev to play &lt;a href="https://simple-jev.featherless.ai/cool-demo/2048/"&gt;the 2048 sliding puzzle game&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="open-weight-recreations"&gt;Open weight recreations&lt;/h4&gt;
&lt;p&gt;There's also been a flurry of projects attempting to create a model like Jev using on top of open weight models. &lt;a href="https://github.com/jaredpalmer/kev"&gt;Kev&lt;/a&gt; is one interesting example, using Qwen 3.5 to produce 0.8B, 4B, and 9B models. Here's the &lt;a href="https://news.ycombinator.com/item?id=49783999"&gt;accompanying Hacker News thread&lt;/a&gt;, where someone linked to a &lt;a href="https://benchmarkheaven.com/jev-models"&gt;JevBench&lt;/a&gt; benchmark that has already cropped up to compare "Jev-class decision models".&lt;/p&gt;
&lt;p&gt;Given Jev was released just under a week ago, the amount of activity around it is extremely impressive.&lt;/p&gt;

&lt;h4 id="using-jev-from-llm"&gt;Using Jev from LLM&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Update 22nd September 2026&lt;/strong&gt;: I released &lt;a href="https://github.com/simonw/llm-typesafe"&gt;llm-typesafe&lt;/a&gt;, a plugin that adds support for Jev to my &lt;a href="https://llm.datasette.io/"&gt;LLM&lt;/a&gt; CLI tool and Python library. Basic usage looks like this:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;llm -m jev &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;Please refund my last payment.&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt; \
  -s &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;Does this message explicitly request a refund?&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;See &lt;a href="https://github.com/simonw/llm-typesafe/blob/main/README.md"&gt;the README&lt;/a&gt; for examples of other query types.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/evals"&gt;evals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-bias"&gt;ai-bias&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jev"&gt;jev&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="evals"/><category term="ai-bias"/><category term="jev"/></entry><entry><title>Cloudflare Python Workers are now generally available</title><link href="https://simonwillison.net/2026/Sep/21/cloudflare-python-worker/" rel="alternate"/><published>2026-09-21T22:25:44+00:00</published><updated>2026-09-21T22:25:44+00:00</updated><id>https://simonwillison.net/2026/Sep/21/cloudflare-python-worker/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://blog.cloudflare.com/python-workers-ga/"&gt;Cloudflare Python Workers are now generally available&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
After a two year preview, Cloudflare's support for running Python code in their server-side Workers platform is now stable: "Python is now a first-class, fully supported language on the Cloudflare Developer Platform".&lt;/p&gt;
&lt;p&gt;A neat thing about this is how it works. Cloudflare are running Python compiled to WebAssembly via Pyodide in their V8-based &lt;a href="https://github.com/cloudflare/workerd"&gt;workerd&lt;/a&gt; runtime.&lt;/p&gt;
&lt;p&gt;This comes with some limitations, &lt;a href="https://developers.cloudflare.com/workers/languages/python/stdlib/"&gt;documented here&lt;/a&gt; - most notably both &lt;code&gt;multiprocessing&lt;/code&gt; and &lt;code&gt;threading&lt;/code&gt; are non-functional in the WebAssembly VM.&lt;/p&gt;
&lt;p&gt;One particularly interesting detail of this is the local development environment story - their &lt;a href="https://developers.cloudflare.com/workers/languages/python/#the-pywrangler-cli-tool"&gt;pywrangler&lt;/a&gt; development tool (confusingly packaged as &lt;a href="https://pypi.org/project/workers-py/"&gt;workers-py&lt;/a&gt; on PyPI) runs a full local simulation of their stack, including executing code with Pyodide in WebAssembly in V8 in a 123MB &lt;code&gt;workerd&lt;/code&gt; binary, which for me ended up in &lt;code&gt;node_modules/@cloudflare/workerd-darwin-arm64/bin/workerd&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Python Workers represent a significant investment in the wider Python ecosystem by Cloudflare. The release announcement is credited to Gyeongjae Choi, Dominik Picheta, and Hood Chatham - Gyeongjae and Hood are both Pyodide core maintainers.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=49787142"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cloudflare"&gt;cloudflare&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webassembly"&gt;webassembly&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pyodide"&gt;pyodide&lt;/a&gt;&lt;/p&gt;



</summary><category term="python"/><category term="cloudflare"/><category term="webassembly"/><category term="pyodide"/></entry><entry><title>Quoting voxium</title><link href="https://simonwillison.net/2026/Sep/20/voxium/" rel="alternate"/><published>2026-09-20T21:06:43+00:00</published><updated>2026-09-20T21:06:43+00:00</updated><id>https://simonwillison.net/2026/Sep/20/voxium/</id><summary type="html">
    &lt;blockquote cite="https://twitter.com/v0xium/status/2101526107128529120"&gt;&lt;p&gt;It has been half a month since I started a new role at a big company. Nobody knows anything here. The specs, code, tests, PRDs, tickets, resolution of those tickets, reports, etc., everything is made by Claude Code. Nobody on my team likes this. They are being forced to ship as much as they can. I have heard multiple times from higher management that pushing code is not a bottleneck, so why are we slow? People are working 12 to 13 hours a day just to press enter. Nobody is reading anything. Everyone, literally everyone, from an L1 to an L7 engineer here is doing the same thing. Talk to Claude.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://twitter.com/v0xium/status/2101526107128529120"&gt;voxium&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai-misuse"&gt;ai-misuse&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai-misuse"/><category term="llms"/><category term="ai"/><category term="generative-ai"/></entry></feed>