返回 Discover
Field DispatchNewsletter RSS2 · 2026-05-28

I think Anthropic and OpenAI have found product-market fit

Simon Willison's Weblog

Published
2026/05/27
Feed
Simon Willison's Weblog
Categories
13
Excerpt
373
痛点分析发布于 2026/05/27

痛点为 AI 基于上游原始证据的初步提炼;未包含额外中国市场检索。

痛点

用户(如Simon Willison)在博客中讨论Anthropic和OpenAI是否找到产品市场契合点,但缺乏具体使用场景和流程描述。从标题和摘要看,用户可能是在评估AI产品的市场表现,但现有信息不足以识别明确的任务卡点或摩擦。因此,无法推断出具体的痛点,只能作为弱信号表明用户对AI产品市场契合度的关注,但未提供证据支持任何实际痛点。

Article

Newsletter article

Anthropic are strongly rumored to be about to have their first profitable quarter. Stories are circulating of companies surprised at how expensive their LLM bills are becoming from usage by their staff. I think this is because OpenAI and Anthropic have both found product-market fit. If you are a heavy user of coding agents these plans are a fantastic deal. I just ran the

§ Dossier

Feed context

Feed title
Simon Willison's Weblog
Published
2026/05/27
Categories
ai, datasette, openai, generative-ai, llms, anthropic, llm-pricing, coding-agents, claude-code, codex, claude-cowork, november-2025-inflection, datasette-agent, ai, datasette, openai, generative-ai, llms, anthropic, llm-pricing, coding-agents, claude-code, codex, claude-cowork, november-2025-inflection, datasette-agent
源数据· Raw Archive
source
Newsletter
upstream_source
newsletter_rss
upstream_item_id
simon_willison:9531c79f6646d4b5b2bc01e1
daily_ranking_item_id
95338af8-5111-40cd-a123-7065761bbfdf
rank_date
2026-05-28
rank
2
name
I think Anthropic and OpenAI have found product-market fit
tagline
Simon Willison's Weblog
description
Anthropic are strongly rumored to be about to have their first profitable quarter. Stories are circulating of companies surprised at how expensive their LLM bills are becoming from usage by their staff. I think this is because OpenAI and Anthropic have both found product-market fit. If you are a heavy user of coding agents these plans are a fantastic deal. I just ran the
votes_count
0
comments_count
0
created_at_on_source
2026-05-27T16:38:35.000Z
topics
Simon Willison's Weblogaidatasetteopenaigenerative-aillmsanthropicllm-pricingcoding-agentsclaude-codecodexclaude-coworknovember-2025-inflectiondatasette-agent
media / source-specific data
{
  "newsletter_rss": {
    "author": null,
    "feed_id": "simon_willison",
    "feed_url": "https://simonwillison.net/atom/everything/",
    "categories": [
      "ai",
      "datasette",
      "openai",
      "generative-ai",
      "llms",
      "anthropic",
      "llm-pricing",
      "coding-agents",
      "claude-code",
      "codex",
      "claude-cowork",
      "november-2025-inflection",
      "datasette-agent"
    ],
    "feed_title": "Simon Willison's Weblog",
    "published_at": "2026-05-27T16:38:35.000Z"
  }
}
raw_payload
{
  "link": "https://simonwillison.net/2026/May/27/product-market-fit/#atom-everything",
  "title": "I think Anthropic and OpenAI have found product-market fit",
  "author": null,
  "feed_id": "simon_willison",
  "entry_id": "https://simonwillison.net/2026/May/27/product-market-fit/#atom-everything",
  "feed_url": "https://simonwillison.net/atom/everything/",
  "categories": [
    "ai",
    "datasette",
    "openai",
    "generative-ai",
    "llms",
    "anthropic",
    "llm-pricing",
    "coding-agents",
    "claude-code",
    "codex",
    "claude-cowork",
    "november-2025-inflection",
    "datasette-agent"
  ],
  "feed_title": "Simon Willison's Weblog",
  "fetched_at": "2026-05-27T22:02:05.946Z",
  "raw_excerpt": "Anthropic are strongly rumored to be about to have their first profitable quarter. Stories are circulating of companies surprised at how expensive their LLM bills are becoming from usage by their staff. I think this is because OpenAI and Anthropic have both found product-market fit. Enterprise customers are now paying API prices I think they've found product-market fit And they're ramping up The AI-failure stories around this are pretty thin We also know the labs are spending a lot API revenue is becoming less important April is a new inflection point Enterprise customers are now paying API prices I currently subscribe to the $100/month Max plan from Anthropic and the $100/month Pro plan from OpenAI. If you are a heavy user of coding agents these plans are a fantastic deal. I just ran the ",
  "summary_raw": "<p>Anthropic are <a href=\"https://techcrunch.com/2026/05/20/anthropic-says-its-about-to-have-its-first-profitable-quarter/\">strongly rumored</a> to be about to have their first profitable quarter. Stories <a href=\"https://www.theinformation.com/newsletters/applied-ai/uber-cto-shows-claude-code-can-blow-ai-budgets\">are circulating</a> of companies surprised at how expensive their LLM bills are becoming from usage by their staff. I think this is because OpenAI and Anthropic have both found product-market fit.</p>\n\n<ul>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#enterprise-customers-are-now-paying-api-prices\">Enterprise customers are now paying API prices</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#i-think-they-ve-found-product-market-fit\">I think they've found product-market fit</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#and-they-re-ramping-up\">And they're ramping up</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#the-ai-failure-stories-around-this-are-pretty-thin\">The AI-failure stories around this are pretty thin</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#we-also-know-the-labs-are-spending-a-lot\">We also know the labs are spending a lot</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#api-revenue-is-becoming-less-important\">API revenue is becoming less important</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#april-is-a-new-inflection-point\">April is a new inflection point</a></li>\n</ul>\n\n<h4 id=\"enterprise-customers-are-now-paying-api-prices\">Enterprise customers are now paying API prices</h4>\n<p>I currently subscribe to the $100/month Max plan from Anthropic and the $100/month Pro plan from OpenAI. If you are a heavy user of coding agents these plans are a fantastic deal. I just ran the <a href=\"https://github.com/ryoppippi/ccusage\">ccusage</a> tool on my laptop to get an estimate of how much I would have spent if I were to pay for API tokens in the past 30 days and got:</p>\n<ul>\n<li>$1,199.79 for Anthropic Claude Code</li>\n<li>$980.37 for OpenAI Codex</li>\n</ul>\n<p>That's $2,180.16 worth of tokens for $200 - not bad at all! I'm a moderately heavy user of these tools, but I'm certainly not running agents every hour of the day and night.</p>\n<p>I had assumed that companies making extensive use of agents were getting similar discounts. It turns out I <em>could not have been more wrong</em> about that.</p>\n<p>I haven't been able to track down the exact date, but at some point in the last six months Anthropic switched their Enterprise plan (originally <a href=\"https://www.anthropic.com/news/claude-code-on-team-and-enterprise\">\"Claude seats include enough usage for a typical workday\" back in August 2025</a>) to $20/seat/month plus API pricing for usage. This story about the change <a href=\"https://www.theinformation.com/articles/anthropic-changes-pricing-bill-firms-based-ai-use-amid-compute-crunch\">from The Information</a> is dated Apr 14, 2026, but cites an Anthropic spokesperson claiming that the pricing change occurred in November 2025. Existing customers are finding out about the change as they renew their contracts.</p>\n<p>OpenAI made a similar pricing change in April. The <a href=\"https://help.openai.com/en/articles/20001106-codex-rate-card\">Codex rate card</a> (<a href=\"https://web.archive.org/web/20260519062438/https://help.openai.com/en/articles/20001106-codex-rate-card\">Internet Archive copy</a>) currently says:</p>\n<blockquote>\n<p><strong>Note</strong>: On April 2, 2026, we updated Codex pricing to align with API token usage, instead of per-message pricing. This change was applicable to new and existing Plus, Pro, ChatGPT Business and new ChatGPT Enterprise plans.</p>\n<p>On April 23, 2026, we made this update for all existing ChatGPT Enterprise plans as well, inclusive of Edu, Health, Gov, and ChatGPT for Teachers.</p>\n</blockquote>\n<p>It's a little harder to decode as they quote prices in \"credits\", but as far as I can tell those credit costs are an exact match for the API token costs listed for those models.</p>\n<p>All of which is to say that as of April 2026 the \"Enterprise\" cost for both OpenAI Codex and Anthropic Claude Code/Cowork is the same as the listed API price.</p>\n<p>GPT-5.5 (released April 23rd) is 2x the API price of GPT-5.4. Opus 4.7 (April 16th) is <a href=\"https://simonwillison.net/2026/Apr/20/claude-token-counts/\">around 1.4x</a> the price of Opus 4.6 when you take their new tokenizer into account.</p>\n<p>So April saw both leading model companies release new frontier models with a higher API price, <em>and</em> both companies now have measures to lock their enterprise customers (who tend to sign year-long deals) at those API prices, not the previous extreme discounts.</p>\n<h4 id=\"i-think-they-ve-found-product-market-fit\">I think they've found product-market fit</h4>\n<p>Why these sudden aggressive moves on pricing? Both Anthropic and OpenAI are planning to IPO, but I suspect there's a more important factor here: I think they've finally found product-market fit, with the coding/general-purpose agent products embodied by Claude Code/Cowork and Codex.</p>\n<p>Tools like ChatGPT are wildly popular, but that wild popularity has been difficult to turn into revenue. In February <a href=\"https://finance.yahoo.com/news/chatgpt-almost-1-billion-weekly-212157499.html\">OpenAI boasted</a> more than 900 million weekly active users for ChatGPT, but only 50 million - 5.6% of that - were paying consumer subscribers.</p>\n<p>Charging $10-$20/month per user is an OK business, but you'd need 1-2 billion subscribers sticking around for four years to cover <a href=\"https://openai.com/global-affairs/seizing-the-ai-opportunity/\">$1 trillion in infrastructure</a>.</p>\n<p>Companies spending $200+/month/user will get you there a whole lot faster - and as noted above, as a power-user I'm at ~$1,000/month in API costs per vendor already.</p>\n<p>Coding agents really did change everything. These are tools which burn <em>vastly</em> more tokens, but are also quickly becoming daily drivers for the work carried out by extremely well-compensated professionals. Right now that's still mostly software engineers, but a coding agent is a tool that can automate anything you can do by typing commands into a computer... so they are clearly applicable to a much wider set of skilled knowledge workers.</p>\n<p>As I've <a href=\"https://simonwillison.net/tags/november-2025-inflection/\">discussed on this site at length</a>, the models released in November 2025 elevated agents to being genuinely useful. We've had six months to get used to that idea now - it's no wonder companies are beginning to spend real money on this technology.</p>\n<p>You could argue that ChatGPT achieved product-market fit when it became the <a href=\"https://www.reuters.com/technology/chatgpt-sets-record-fastest-growing-user-base-analyst-note-2023-02-01/\">fastest-growing consumer app in history</a> back in February 2023... but it certainly wasn't making any actual money back then. Coding agents plus enterprise pricing marks the point when these companies start making <em>very</em> real revenue. Maybe even enough to start covering their costs!</p>\n<h4 id=\"and-they-re-ramping-up\">And they're ramping up</h4>\n<p>As further evidence that enterprise agents represent product-market fit for these companies, consider their open job listings.</p>\n<p>OpenAI have <a href=\"https://openai.com/careers/search/\">703 open jobs</a> right now, of which I'd categorize 229 (32.6%) as relating to enterprise sales and support - account executives, \"Go To Market\", \"Forward Deployed Engineers\" and the like.</p>\n<p>Anthropic have <a href=\"https://www.anthropic.com/careers/jobs\">390 open jobs</a>, 105 (26.9%) of which look enterprisey to me.</p>\n<p>It's pleasingly ironic that these AI labs have picked a business model with such a heavy demand on human labor - enterprise sales contracts don't close themselves without a whole lot of humans in the mix!</p>\n<p><small>(I ran this analysis by scraping their job sites with Claude Code, then having it use Datasette's <a href=\"https://docs.datasette.io/en/latest/json_api.html\">JSON API</a> to pipe that data into Datasette Cloud where I used <a href=\"https://agent.datasette.io/\">Datasette Agent</a> for the analysis, <a href=\"https://gist.github.com/simonw/5632d208d76b3c8b34f1fdbaf69eb1b8#agent-4\">exported here</a>. Dogfood!)</small></p>\n<h4 id=\"the-ai-failure-stories-around-this-are-pretty-thin\">The AI-failure stories around this are pretty thin</h4>\n<p>I started digging into this in response to <a href=\"https://news.ycombinator.com/item?id=48287025#48287219\">a growing volume</a> of stories claiming that large companies were sounding the alarm because their AI usage costs had grown so large.</p>\n<p>The most widely cited of these stories appear quite overblown to me.</p>\n<p>The most discussed has been Uber, based on <a href=\"https://www.theinformation.com/newsletters/applied-ai/uber-cto-shows-claude-code-can-blow-ai-budgets\">this report</a> where CTO Praveen Neppalli Naga indicated that Uber had \"maxed out its full year AI budget just a few months into 2026\", mostly thanks to Claude Code.</p>\n<p>Given that Claude Code only got <em>really</em> good in November it's entirely unsurprising to me that a budget set in 2025 may have failed to predict demand for that tool in 2026!</p>\n<p>That Uber story was further fueled by comments made by Uber's COO, Andrew Macdonald, on the Rapid Response podcast. I tracked down <a href=\"https://www.youtube.com/watch?v=y_mQ6xLcKyc&amp;t=1616s\">the segment</a> and there really isn't much there. Here's what Andrew said:</p>\n<blockquote>\n<p>But then you sometimes go and talk to your senior engineering leaders and you're saying, OK, how many projects that were on the cutting room floor got moved above the line because of the productivity gains because 25% of our code commits were via Claude Code last quarter?</p>\n<p>That link is not there yet, right? I think maybe implicitly there's more that is getting shipped. But it's very hard to draw a line between one of those stats and, OK, now we're actually producing like 25% more useful consumer features, right? And that line is hard to draw.</p>\n</blockquote>\n<p>Somehow this fragment turned into headlines like <a href=\"https://www.businessinsider.com/uber-coo-andrew-macdonald-ai-token-spending-harder-justify-2026-5\">Uber's COO says it's getting harder to justify the money spent on AI tokenmaxxing</a>, because the market for stories about AI failures remains enormous.</p>\n<p>The other popular story around this is <a href=\"https://www.theverge.com/tech/930447/microsoft-claude-code-discontinued-notepad\">Microsoft starts canceling Claude Code licenses</a>, ostensibly to encourage their engineers to dogfood their own Copilot CLI agent instead - but The Verge reporter Tom Warren says \"sources tell me the decision is also a financial one\", triggered by the June 30th end of Microsoft's financial year.</p>\n<p>I think both of these stories support my \"product-market fit\" hypothesis. The best advice I ever heard on pricing a product was that your customer should <em>suck air through their teeth</em> and then say yes. Uber's budget overrun and Microsoft's seat cancellations look like that effect playing out in practice.</p>\n<h4 id=\"we-also-know-the-labs-are-spending-a-lot\">We also know the labs are spending a lot</h4>\n<p>The big AI labs spend billions of dollars on both training and inference. Credible figures are hard to come by, but we did get one huge hint as to the figures involved from, oddly enough, the recent <a href=\"https://www.sec.gov/Archives/edgar/data/1181412/000162828026036936/spaceexplorationtechnologi.htm\">SpaceX S-1</a>:</p>\n<blockquote>\n<p>[...] in May 2026, we entered into <strong>Cloud Services Agreements with Anthropic PBC</strong> (“Anthropic”), an AI research and development public benefit corporation, with respect to access to <strong>compute capacity across COLOSSUS and COLOSSUS II</strong>. Pursuant to these agreements, the customer <strong>has agreed to pay us $1.25 billion per month</strong> through May 2029 [...]</p>\n</blockquote>\n<p>The <a href=\"https://www.anthropic.com/news/higher-limits-spacex\">Anthropic announcement</a> said that this deal meant they could \"increase our usage limits for Claude Code and the Claude API\", heavily implying that Colossus is being used for inference, not model training.</p>\n<p>Anthropic already have vast amounts of compute from other providers. The fact that they're willing to spend $1.25 billion per month for extra capacity from just <em>one</em> of their vendors hints at how big these inference budgets have become.</p>\n<h4 id=\"api-revenue-is-becoming-less-important\">API revenue is becoming less important</h4>\n<p>Over the past two years my impression has been that OpenAI made more of their income from subscription revenue while Anthropic made more from their API.</p>\n<p>Anthropic's API revenue was historically quite dependent on a small number of large API customers - <a href=\"https://venturebeat.com/ai/anthropic-revenue-tied-to-two-customers-as-ai-pricing-war-threatens-margins\">this VentureBeat story from August 2025</a> quotes \"sources familiar with the matter\" suggesting that just Cursor and GitHub Copilot were responsible for $1.2 billion of the company's then-$4 billion revenue.</p>\n<p>Today Anthropic are rumored to hit <a href=\"https://www.wsj.com/tech/ai/mind-blowing-growth-is-about-to-propel-anthropic-into-its-first-profitable-quarter-7edbf2f4\">$10.9 billion in the second quarter</a>, potentially even operating at a profit for the first time.</p>\n<p>This pivot-to-Enterprise suggests that the labs have realized that the real money lies in cutting out the middlemen. Anthropic's Claude Code directly competes with Cursor and Copilot. No wonder Cursor are <a href=\"https://cursor.com/blog/composer-2\">investing in their own models</a>!</p>\n<h4 id=\"april-is-a-new-inflection-point\">April is a new inflection point</h4>\n<p>I've called November 2025 the <a href=\"https://simonwillison.net/tags/november-2025-inflection/\">November inflection point</a> because that was when GPT-5.1 and Opus 4.5, combined with their respective coding agent harnesses, got <em>good</em> - good enough that we've spent the last six months adapting to agent systems that can reliably get useful work done.</p>\n<p>I think April 2026 is a new inflection point where the revenue implications of this have started to land, to the benefit of the frontier AI labs and with material impacts on the budgets of large companies.</p>\n<p>We'll know for sure how real this moment is when the S-1 documents for the upcoming Anthropic and OpenAI IPOs give us some real, audited numbers to get our teeth into.</p>\n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/datasette\">datasette</a>, <a href=\"https://simonwillison.net/tags/openai\">openai</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a>, <a href=\"https://simonwillison.net/tags/anthropic\">anthropic</a>, <a href=\"https://simonwillison.net/tags/llm-pricing\">llm-pricing</a>, <a href=\"https://simonwillison.net/tags/coding-agents\">coding-agents</a>, <a href=\"https://simonwillison.net/tags/claude-code\">claude-code</a>, <a href=\"https://simonwillison.net/tags/codex\">codex</a>, <a href=\"https://simonwillison.net/tags/claude-cowork\">claude-cowork</a>, <a href=\"https://simonwillison.net/tags/november-2025-inflection\">november-2025-inflection</a>, <a href=\"https://simonwillison.net/tags/datasette-agent\">datasette-agent</a></p>",
  "published_at": "2026-05-27T16:38:35.000Z",
  "feed_site_url": "http://simonwillison.net/",
  "content_excerpt": "Anthropic are strongly rumored to be about to have their first profitable quarter. Stories are circulating of companies surprised at how expensive their LLM bills are becoming from usage by their staff. I think this is because OpenAI and Anthropic have both found product-market fit. If you are a heavy user of coding agents these plans are a fantastic deal. I just ran the",
  "feed_description": null,
  "snapshot_version": "newsletter_rss_entry_v1",
  "content_raw_excerpt": ""
}
source_raw_snapshot
{
  "id": "7ad243b9-9900-4486-b7d2-ea59811ab23f",
  "daily_ranking_item_id": "95338af8-5111-40cd-a123-7065761bbfdf",
  "source": "newsletter_rss",
  "external_id": "simon_willison:9531c79f6646d4b5b2bc01e1",
  "feed_id": "simon_willison",
  "feed_url": "https://simonwillison.net/atom/everything/",
  "fetched_at": "2026-05-27T22:02:05.946Z",
  "feed_raw": {
    "?xml": {
      "@_version": "1.0",
      "@_encoding": "utf-8"
    },
    "feed": {
      "id": "http://simonwillison.net/",
      "link": [
        {
          "@_rel": "alternate",
          "@_href": "http://simonwillison.net/"
        },
        {
          "@_rel": "self",
          "@_href": "http://simonwillison.net/atom/everything/"
        }
      ],
      "entry": [
        {
          "id": "https://simonwillison.net/2026/May/27/product-market-fit/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/27/product-market-fit/#atom-everything"
          },
          "title": "I think Anthropic and OpenAI have found product-market fit",
          "summary": {
            "#text": "<p>Anthropic are <a href=\"https://techcrunch.com/2026/05/20/anthropic-says-its-about-to-have-its-first-profitable-quarter/\">strongly rumored</a> to be about to have their first profitable quarter. Stories <a href=\"https://www.theinformation.com/newsletters/applied-ai/uber-cto-shows-claude-code-can-blow-ai-budgets\">are circulating</a> of companies surprised at how expensive their LLM bills are becoming from usage by their staff. I think this is because OpenAI and Anthropic have both found product-market fit.</p>\n\n<ul>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#enterprise-customers-are-now-paying-api-prices\">Enterprise customers are now paying API prices</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#i-think-they-ve-found-product-market-fit\">I think they've found product-market fit</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#and-they-re-ramping-up\">And they're ramping up</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#the-ai-failure-stories-around-this-are-pretty-thin\">The AI-failure stories around this are pretty thin</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#we-also-know-the-labs-are-spending-a-lot\">We also know the labs are spending a lot</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#api-revenue-is-becoming-less-important\">API revenue is becoming less important</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#april-is-a-new-inflection-point\">April is a new inflection point</a></li>\n</ul>\n\n<h4 id=\"enterprise-customers-are-now-paying-api-prices\">Enterprise customers are now paying API prices</h4>\n<p>I currently subscribe to the $100/month Max plan from Anthropic and the $100/month Pro plan from OpenAI. If you are a heavy user of coding agents these plans are a fantastic deal. I just ran the <a href=\"https://github.com/ryoppippi/ccusage\">ccusage</a> tool on my laptop to get an estimate of how much I would have spent if I were to pay for API tokens in the past 30 days and got:</p>\n<ul>\n<li>$1,199.79 for Anthropic Claude Code</li>\n<li>$980.37 for OpenAI Codex</li>\n</ul>\n<p>That's $2,180.16 worth of tokens for $200 - not bad at all! I'm a moderately heavy user of these tools, but I'm certainly not running agents every hour of the day and night.</p>\n<p>I had assumed that companies making extensive use of agents were getting similar discounts. It turns out I <em>could not have been more wrong</em> about that.</p>\n<p>I haven't been able to track down the exact date, but at some point in the last six months Anthropic switched their Enterprise plan (originally <a href=\"https://www.anthropic.com/news/claude-code-on-team-and-enterprise\">\"Claude seats include enough usage for a typical workday\" back in August 2025</a>) to $20/seat/month plus API pricing for usage. This story about the change <a href=\"https://www.theinformation.com/articles/anthropic-changes-pricing-bill-firms-based-ai-use-amid-compute-crunch\">from The Information</a> is dated Apr 14, 2026, but cites an Anthropic spokesperson claiming that the pricing change occurred in November 2025. Existing customers are finding out about the change as they renew their contracts.</p>\n<p>OpenAI made a similar pricing change in April. The <a href=\"https://help.openai.com/en/articles/20001106-codex-rate-card\">Codex rate card</a> (<a href=\"https://web.archive.org/web/20260519062438/https://help.openai.com/en/articles/20001106-codex-rate-card\">Internet Archive copy</a>) currently says:</p>\n<blockquote>\n<p><strong>Note</strong>: On April 2, 2026, we updated Codex pricing to align with API token usage, instead of per-message pricing. This change was applicable to new and existing Plus, Pro, ChatGPT Business and new ChatGPT Enterprise plans.</p>\n<p>On April 23, 2026, we made this update for all existing ChatGPT Enterprise plans as well, inclusive of Edu, Health, Gov, and ChatGPT for Teachers.</p>\n</blockquote>\n<p>It's a little harder to decode as they quote prices in \"credits\", but as far as I can tell those credit costs are an exact match for the API token costs listed for those models.</p>\n<p>All of which is to say that as of April 2026 the \"Enterprise\" cost for both OpenAI Codex and Anthropic Claude Code/Cowork is the same as the listed API price.</p>\n<p>GPT-5.5 (released April 23rd) is 2x the API price of GPT-5.4. Opus 4.7 (April 16th) is <a href=\"https://simonwillison.net/2026/Apr/20/claude-token-counts/\">around 1.4x</a> the price of Opus 4.6 when you take their new tokenizer into account.</p>\n<p>So April saw both leading model companies release new frontier models with a higher API price, <em>and</em> both companies now have measures to lock their enterprise customers (who tend to sign year-long deals) at those API prices, not the previous extreme discounts.</p>\n<h4 id=\"i-think-they-ve-found-product-market-fit\">I think they've found product-market fit</h4>\n<p>Why these sudden aggressive moves on pricing? Both Anthropic and OpenAI are planning to IPO, but I suspect there's a more important factor here: I think they've finally found product-market fit, with the coding/general-purpose agent products embodied by Claude Code/Cowork and Codex.</p>\n<p>Tools like ChatGPT are wildly popular, but that wild popularity has been difficult to turn into revenue. In February <a href=\"https://finance.yahoo.com/news/chatgpt-almost-1-billion-weekly-212157499.html\">OpenAI boasted</a> more than 900 million weekly active users for ChatGPT, but only 50 million - 5.6% of that - were paying consumer subscribers.</p>\n<p>Charging $10-$20/month per user is an OK business, but you'd need 1-2 billion subscribers sticking around for four years to cover <a href=\"https://openai.com/global-affairs/seizing-the-ai-opportunity/\">$1 trillion in infrastructure</a>.</p>\n<p>Companies spending $200+/month/user will get you there a whole lot faster - and as noted above, as a power-user I'm at ~$1,000/month in API costs per vendor already.</p>\n<p>Coding agents really did change everything. These are tools which burn <em>vastly</em> more tokens, but are also quickly becoming daily drivers for the work carried out by extremely well-compensated professionals. Right now that's still mostly software engineers, but a coding agent is a tool that can automate anything you can do by typing commands into a computer... so they are clearly applicable to a much wider set of skilled knowledge workers.</p>\n<p>As I've <a href=\"https://simonwillison.net/tags/november-2025-inflection/\">discussed on this site at length</a>, the models released in November 2025 elevated agents to being genuinely useful. We've had six months to get used to that idea now - it's no wonder companies are beginning to spend real money on this technology.</p>\n<p>You could argue that ChatGPT achieved product-market fit when it became the <a href=\"https://www.reuters.com/technology/chatgpt-sets-record-fastest-growing-user-base-analyst-note-2023-02-01/\">fastest-growing consumer app in history</a> back in February 2023... but it certainly wasn't making any actual money back then. Coding agents plus enterprise pricing marks the point when these companies start making <em>very</em> real revenue. Maybe even enough to start covering their costs!</p>\n<h4 id=\"and-they-re-ramping-up\">And they're ramping up</h4>\n<p>As further evidence that enterprise agents represent product-market fit for these companies, consider their open job listings.</p>\n<p>OpenAI have <a href=\"https://openai.com/careers/search/\">703 open jobs</a> right now, of which I'd categorize 229 (32.6%) as relating to enterprise sales and support - account executives, \"Go To Market\", \"Forward Deployed Engineers\" and the like.</p>\n<p>Anthropic have <a href=\"https://www.anthropic.com/careers/jobs\">390 open jobs</a>, 105 (26.9%) of which look enterprisey to me.</p>\n<p>It's pleasingly ironic that these AI labs have picked a business model with such a heavy demand on human labor - enterprise sales contracts don't close themselves without a whole lot of humans in the mix!</p>\n<p><small>(I ran this analysis by scraping their job sites with Claude Code, then having it use Datasette's <a href=\"https://docs.datasette.io/en/latest/json_api.html\">JSON API</a> to pipe that data into Datasette Cloud where I used <a href=\"https://agent.datasette.io/\">Datasette Agent</a> for the analysis, <a href=\"https://gist.github.com/simonw/5632d208d76b3c8b34f1fdbaf69eb1b8#agent-4\">exported here</a>. Dogfood!)</small></p>\n<h4 id=\"the-ai-failure-stories-around-this-are-pretty-thin\">The AI-failure stories around this are pretty thin</h4>\n<p>I started digging into this in response to <a href=\"https://news.ycombinator.com/item?id=48287025#48287219\">a growing volume</a> of stories claiming that large companies were sounding the alarm because their AI usage costs had grown so large.</p>\n<p>The most widely cited of these stories appear quite overblown to me.</p>\n<p>The most discussed has been Uber, based on <a href=\"https://www.theinformation.com/newsletters/applied-ai/uber-cto-shows-claude-code-can-blow-ai-budgets\">this report</a> where CTO Praveen Neppalli Naga indicated that Uber had \"maxed out its full year AI budget just a few months into 2026\", mostly thanks to Claude Code.</p>\n<p>Given that Claude Code only got <em>really</em> good in November it's entirely unsurprising to me that a budget set in 2025 may have failed to predict demand for that tool in 2026!</p>\n<p>That Uber story was further fueled by comments made by Uber's COO, Andrew Macdonald, on the Rapid Response podcast. I tracked down <a href=\"https://www.youtube.com/watch?v=y_mQ6xLcKyc&amp;t=1616s\">the segment</a> and there really isn't much there. Here's what Andrew said:</p>\n<blockquote>\n<p>But then you sometimes go and talk to your senior engineering leaders and you're saying, OK, how many projects that were on the cutting room floor got moved above the line because of the productivity gains because 25% of our code commits were via Claude Code last quarter?</p>\n<p>That link is not there yet, right? I think maybe implicitly there's more that is getting shipped. But it's very hard to draw a line between one of those stats and, OK, now we're actually producing like 25% more useful consumer features, right? And that line is hard to draw.</p>\n</blockquote>\n<p>Somehow this fragment turned into headlines like <a href=\"https://www.businessinsider.com/uber-coo-andrew-macdonald-ai-token-spending-harder-justify-2026-5\">Uber's COO says it's getting harder to justify the money spent on AI tokenmaxxing</a>, because the market for stories about AI failures remains enormous.</p>\n<p>The other popular story around this is <a href=\"https://www.theverge.com/tech/930447/microsoft-claude-code-discontinued-notepad\">Microsoft starts canceling Claude Code licenses</a>, ostensibly to encourage their engineers to dogfood their own Copilot CLI agent instead - but The Verge reporter Tom Warren says \"sources tell me the decision is also a financial one\", triggered by the June 30th end of Microsoft's financial year.</p>\n<p>I think both of these stories support my \"product-market fit\" hypothesis. The best advice I ever heard on pricing a product was that your customer should <em>suck air through their teeth</em> and then say yes. Uber's budget overrun and Microsoft's seat cancellations look like that effect playing out in practice.</p>\n<h4 id=\"we-also-know-the-labs-are-spending-a-lot\">We also know the labs are spending a lot</h4>\n<p>The big AI labs spend billions of dollars on both training and inference. Credible figures are hard to come by, but we did get one huge hint as to the figures involved from, oddly enough, the recent <a href=\"https://www.sec.gov/Archives/edgar/data/1181412/000162828026036936/spaceexplorationtechnologi.htm\">SpaceX S-1</a>:</p>\n<blockquote>\n<p>[...] in May 2026, we entered into <strong>Cloud Services Agreements with Anthropic PBC</strong> (“Anthropic”), an AI research and development public benefit corporation, with respect to access to <strong>compute capacity across COLOSSUS and COLOSSUS II</strong>. Pursuant to these agreements, the customer <strong>has agreed to pay us $1.25 billion per month</strong> through May 2029 [...]</p>\n</blockquote>\n<p>The <a href=\"https://www.anthropic.com/news/higher-limits-spacex\">Anthropic announcement</a> said that this deal meant they could \"increase our usage limits for Claude Code and the Claude API\", heavily implying that Colossus is being used for inference, not model training.</p>\n<p>Anthropic already have vast amounts of compute from other providers. The fact that they're willing to spend $1.25 billion per month for extra capacity from just <em>one</em> of their vendors hints at how big these inference budgets have become.</p>\n<h4 id=\"api-revenue-is-becoming-less-important\">API revenue is becoming less important</h4>\n<p>Over the past two years my impression has been that OpenAI made more of their income from subscription revenue while Anthropic made more from their API.</p>\n<p>Anthropic's API revenue was historically quite dependent on a small number of large API customers - <a href=\"https://venturebeat.com/ai/anthropic-revenue-tied-to-two-customers-as-ai-pricing-war-threatens-margins\">this VentureBeat story from August 2025</a> quotes \"sources familiar with the matter\" suggesting that just Cursor and GitHub Copilot were responsible for $1.2 billion of the company's then-$4 billion revenue.</p>\n<p>Today Anthropic are rumored to hit <a href=\"https://www.wsj.com/tech/ai/mind-blowing-growth-is-about-to-propel-anthropic-into-its-first-profitable-quarter-7edbf2f4\">$10.9 billion in the second quarter</a>, potentially even operating at a profit for the first time.</p>\n<p>This pivot-to-Enterprise suggests that the labs have realized that the real money lies in cutting out the middlemen. Anthropic's Claude Code directly competes with Cursor and Copilot. No wonder Cursor are <a href=\"https://cursor.com/blog/composer-2\">investing in their own models</a>!</p>\n<h4 id=\"april-is-a-new-inflection-point\">April is a new inflection point</h4>\n<p>I've called November 2025 the <a href=\"https://simonwillison.net/tags/november-2025-inflection/\">November inflection point</a> because that was when GPT-5.1 and Opus 4.5, combined with their respective coding agent harnesses, got <em>good</em> - good enough that we've spent the last six months adapting to agent systems that can reliably get useful work done.</p>\n<p>I think April 2026 is a new inflection point where the revenue implications of this have started to land, to the benefit of the frontier AI labs and with material impacts on the budgets of large companies.</p>\n<p>We'll know for sure how real this moment is when the S-1 documents for the upcoming Anthropic and OpenAI IPOs give us some real, audited numbers to get our teeth into.</p>\n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/datasette\">datasette</a>, <a href=\"https://simonwillison.net/tags/openai\">openai</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a>, <a href=\"https://simonwillison.net/tags/anthropic\">anthropic</a>, <a href=\"https://simonwillison.net/tags/llm-pricing\">llm-pricing</a>, <a href=\"https://simonwillison.net/tags/coding-agents\">coding-agents</a>, <a href=\"https://simonwillison.net/tags/claude-code\">claude-code</a>, <a href=\"https://simonwillison.net/tags/codex\">codex</a>, <a href=\"https://simonwillison.net/tags/claude-cowork\">claude-cowork</a>, <a href=\"https://simonwillison.net/tags/november-2025-inflection\">november-2025-inflection</a>, <a href=\"https://simonwillison.net/tags/datasette-agent\">datasette-agent</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-27T16:38:35+00:00",
          "category": [
            {
              "@_term": "ai"
            },
            {
              "@_term": "datasette"
            },
            {
              "@_term": "openai"
            },
            {
              "@_term": "generative-ai"
            },
            {
              "@_term": "llms"
            },
            {
              "@_term": "anthropic"
            },
            {
              "@_term": "llm-pricing"
            },
            {
              "@_term": "coding-agents"
            },
            {
              "@_term": "claude-code"
            },
            {
              "@_term": "codex"
            },
            {
              "@_term": "claude-cowork"
            },
            {
              "@_term": "november-2025-inflection"
            },
            {
              "@_term": "datasette-agent"
            }
          ],
          "published": "2026-05-27T16:38:35+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/27/kyle-ferrana/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/27/kyle-ferrana/#atom-everything"
          },
          "title": "Quoting Kyle Ferrana",
          "summary": {
            "#text": "<blockquote cite=\"https://twitter.com/kyletrainemoji/status/2059301102814953511\"><p>PICARD: Data, shields up</p>\n<p>DATA: Brilliant! Shields can reduce damage we sustain. Not immunity. Not hubris. Just prudence. It's not precaution—it's strategy.</p>\n<p>[camera shakes]</p>\n<p>WORF: HULL BREACHES ON NINE DECKS</p>\n<p>DATA: Here's what happened: you told me to raise shields, and I didn't</p></blockquote>\n<p class=\"cite\">&mdash; <a href=\"https://twitter.com/kyletrainemoji/status/2059301102814953511\">Kyle Ferrana</a>, @KyleTrainEmoji</p>\n\n    <p>Tags: <a href=\"https://simonwillison.net/tags/ai-misuse\">ai-misuse</a>, <a href=\"https://simonwillison.net/tags/coding-agents\">coding-agents</a>, <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-27T06:41:43+00:00",
          "category": [
            {
              "@_term": "ai-misuse"
            },
            {
              "@_term": "coding-agents"
            },
            {
              "@_term": "ai"
            },
            {
              "@_term": "llms"
            }
          ],
          "published": "2026-05-27T06:41:43+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/26/the-pressure/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/26/the-pressure/#atom-everything"
          },
          "title": "The pressure",
          "summary": {
            "#text": "<p><strong><a href=\"https://daniel.haxx.se/blog/2026/05/26/the-pressure/\">The pressure</a></strong></p>\nDaniel Stenberg on the unprecedented level of pressure the <code>curl</code> team are facing right now thanks to the deluge of (credible) AI-assisted security issues being reported.</p>\n<blockquote>\n<p>The rate of incoming security reports is 4-5 times higher than it was in 2024 and double the speed of 2025 -- meaning that <strong>on average we now get more than one report per day</strong>. The quality is way higher than ever before. The reports are typically <em>very</em> detailed and long. [...]</p>\n<p>For the first time in my life, my wife voiced concerns about my work hours and my imbalanced work/life situation. I work more than I’ve done before, but the flood keeps coming. [...]</p>\n<p>This is a never-before seen or experienced pressure on the curl project and its security team members. An avalanche of high priority work that trumps all other things in the project that is primarily mental because we certainly <em>could</em> ignore them all if we wanted, but we feel a responsibility, we have a conscience and we are proud about our work.</p>\n</blockquote>\n<p>The good news is that <code>curl</code> is a very solid piece of software, so the vulnerabilities people are finding tend not to be of high severity:</p>\n<blockquote>\n<p>What is also a good trend: almost no one finds <em>terrible</em> vulnerabilities. All vulnerabilities found the last few years in curl have <em>all</em> been deemed severity LOW or MEDIUM. I'm not saying there won't be any more HIGH ever, but at least they are rare. The <a href=\"https://curl.se/docs/CVE-2023-38545.html\">most recent severity high curl CVE</a> was published in October 2023.</p>\n</blockquote>\n\n    <p><small></small>Via <a href=\"https://lobste.rs/s/dw02ye/pressure\">Lobste.rs</a></small></p>\n\n\n    <p>Tags: <a href=\"https://simonwillison.net/tags/curl\">curl</a>, <a href=\"https://simonwillison.net/tags/security\">security</a>, <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a>, <a href=\"https://simonwillison.net/tags/daniel-stenberg\">daniel-stenberg</a>, <a href=\"https://simonwillison.net/tags/ai-ethics\">ai-ethics</a>, <a href=\"https://simonwillison.net/tags/ai-security-research\">ai-security-research</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-26T23:48:45+00:00",
          "category": [
            {
              "@_term": "curl"
            },
            {
              "@_term": "security"
            },
            {
              "@_term": "ai"
            },
            {
              "@_term": "generative-ai"
            },
            {
              "@_term": "llms"
            },
            {
              "@_term": "daniel-stenberg"
            },
            {
              "@_term": "ai-ethics"
            },
            {
              "@_term": "ai-security-research"
            }
          ],
          "published": "2026-05-26T23:48:45+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/26/copilot-cowork-exfiltrates-files/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/26/copilot-cowork-exfiltrates-files/#atom-everything"
          },
          "title": "Microsoft Copilot Cowork Exfiltrates Files",
          "summary": {
            "#text": "<p><strong><a href=\"https://www.promptarmor.com/resources/microsoft-copilot-cowork-exfiltrates-files\">Microsoft Copilot Cowork Exfiltrates Files</a></strong></p>\nThe biggest challenge in designing agentic systems continues to be preventing them from enabling attackers to exfiltrate data.</p>\n<p>In this case Microsoft Copilot Cowork (yes, that's <a href=\"https://www.microsoft.com/en-us/microsoft-365/blog/2026/03/09/copilot-cowork-a-new-way-of-getting-work-done/\">a real product name</a>) was allowing agents to send emails to the user's own inbox without approval... but those messages were then displayed in a way that could leak data to an attacker via rendered images:</p>\n<blockquote>\n<p>Because these messages can contain external images that trigger network requests to external websites, data can be exfiltrated when a user opens a compromised message sent by the agent.</p>\n</blockquote>\n<p>Since OneDrive can create pre-authenticated download links, a successful prompt injection could cause those links to be leaked, allowing files to be downloaded by the attacker.\n\n    <p><small></small>Via <a href=\"https://news.ycombinator.com/item?id=48272354\">Hacker News</a></small></p>\n\n\n    <p>Tags: <a href=\"https://simonwillison.net/tags/microsoft\">microsoft</a>, <a href=\"https://simonwillison.net/tags/security\">security</a>, <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/prompt-injection\">prompt-injection</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a>, <a href=\"https://simonwillison.net/tags/exfiltration-attacks\">exfiltration-attacks</a>, <a href=\"https://simonwillison.net/tags/lethal-trifecta\">lethal-trifecta</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-26T15:36:48+00:00",
          "category": [
            {
              "@_term": "microsoft"
            },
            {
              "@_term": "security"
            },
            {
              "@_term": "ai"
            },
            {
              "@_term": "prompt-injection"
            },
            {
              "@_term": "generative-ai"
            },
            {
              "@_term": "llms"
            },
            {
              "@_term": "exfiltration-attacks"
            },
            {
              "@_term": "lethal-trifecta"
            }
          ],
          "published": "2026-05-26T15:36:48+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/26/paul-graham/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/26/paul-graham/#atom-everything"
          },
          "title": "Quoting Paul Graham",
          "summary": {
            "#text": "<blockquote cite=\"https://twitter.com/paulg/status/2058844147092488401\"><p>A lot of the emails I get from founders are now written in a hard-hitting journalistic style. I know they're written by AI, because no founder ever wrote this way before. And once you realize something is written by AI, it's hard not to ignore it.</p>\n<p>I have never knowingly finished reading an email signed by a human but written by AI. It feels like being lied to, and who would stand for that?</p>\n<p>[<a href=\"https://twitter.com/paulg/status/2058863028523659390\">...</a>] It makes me think less of the author. It means they can't write well unaided (or feel they can't), and that they're trying to trick me. </p>\n<p>It's not impressive to use AI to write stuff for you; any teenager can do that.</p></blockquote>\n<p class=\"cite\">&mdash; <a href=\"https://twitter.com/paulg/status/2058844147092488401\">Paul Graham</a></p>\n\n    <p>Tags: <a href=\"https://simonwillison.net/tags/writing\">writing</a>, <a href=\"https://simonwillison.net/tags/ai-misuse\">ai-misuse</a>, <a href=\"https://simonwillison.net/tags/paul-graham\">paul-graham</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-26T15:02:30+00:00",
          "category": [
            {
              "@_term": "writing"
            },
            {
              "@_term": "ai-misuse"
            },
            {
              "@_term": "paul-graham"
            },
            {
              "@_term": "generative-ai"
            },
            {
              "@_term": "ai"
            },
            {
              "@_term": "llms"
            }
          ],
          "published": "2026-05-26T15:02:30+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/26/corey-quinn/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/26/corey-quinn/#atom-everything"
          },
          "title": "Quoting Corey Quinn",
          "summary": {
            "#text": "<blockquote cite=\"https://twitter.com/quinnypig/status/2058960462256210268\"><p>I cannot believe I'm saying this, but 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.</p></blockquote>\n<p class=\"cite\">&mdash; <a href=\"https://twitter.com/quinnypig/status/2058960462256210268\">Corey Quinn</a>, on Anthropic co-founder Christopher Olah's <a href=\"https://www.washingtonpost.com/world/2026/05/25/pope-elevates-ai-ethics-religious-imperative-with-first-encyclical/\">influence</a> on <em>Magnifica Humanitas</em></p>\n\n    <p>Tags: <a href=\"https://simonwillison.net/tags/ai-ethics\">ai-ethics</a>, <a href=\"https://simonwillison.net/tags/corey-quinn\">corey-quinn</a>, <a href=\"https://simonwillison.net/tags/anthropic\">anthropic</a>, <a href=\"https://simonwillison.net/tags/ai\">ai</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-26T02:28:54+00:00",
          "category": [
            {
              "@_term": "ai-ethics"
            },
            {
              "@_term": "corey-quinn"
            },
            {
              "@_term": "anthropic"
            },
            {
              "@_term": "ai"
            }
          ],
          "published": "2026-05-26T02:28:54+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/25/encyclical-on-ai/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/25/encyclical-on-ai/#atom-everything"
          },
          "title": "Notes on Pope Leo XIV's encyclical on AI",
          "summary": {
            "#text": "<p>Dropped this morning by the Vatican: <a href=\"https://www.vatican.va/content/leo-xiv/en/encyclicals/documents/20260515-magnifica-humanitas.html\">Magnifica Humanitas of His Holiness Pope Leo XIV on Safeguarding the Human Person in the Time of Artificial Intelligence</a>. This is a <em>very interesting</em> document. It's some of the clearest writing I've seen on the ethics of integrating AI into modern society.</p>\n<p>Pope Leo XIV chose the name Leo in honor of Pope Leo XIII, who is known for his 1891 <em><a href=\"https://en.wikipedia.org/wiki/Rerum_novarum\">Rerum novarum</a></em> encyclical on \"Rights and Duties of Capital and Labor\".</p>\n<p><a href=\"https://www.vaticannews.va/en/church/news/2025-05/leo-xiii-s-times-and-our-own.html\">This story</a> on Vatican News further clarifies the significance of that decision:</p>\n<blockquote>\n<p>Meeting with the College of Cardinals for their first formal encounter after his election, Pope Leo XIV explained part of the reason for the choice of his papal name. \"There are different reasons for this,\" he said, before going on to explain that he chose the name Leo \"mainly because Pope Leo XIII, in his historic encyclical <em><a href=\"https://www.vatican.va/content/leo-xiii/en/encyclicals/documents/hf_l-xiii_enc_15051891_rerum-novarum.html\">Rerum novarum</a></em> addressed the social question in the context of the first great industrial revolution.\"</p>\n<p>\"In our own day,\" he continued, \"the Church offers to everyone the treasury of her social teaching in response to another industrial revolution and to developments in the field of artificial intelligence that pose new challenges for the defence of human dignity, justice, and labour.\"</p>\n</blockquote>\n<p>And now we get Pope Leo XIV's own encyclical on the AI revolution. There's a lot in here, but the writing style is very approachable, including to non-Catholics.</p>\n<h4 id=\"a-few-of-my-highlights\">A few of my highlights</h4>\n<p><small>(I listened to most of the encyclical on a walk with our dog, my first time trying the <a href=\"https://apps.apple.com/us/app/elevenreader-read-books-aloud/id6479373050\">ElevenReader iPhone app</a>. It worked very well: I pasted in a URL to the document and it read it to me in a very high quality voice, highlighting each paragraph as it went.)</small></p>\n<p>Here are some of my highlights. In each case below <strong>emphasis</strong> is mine.</p>\n<p>Here's a useful description of the interpretability problem for LLMs in section 98:</p>\n<blockquote>\n<p>First, any statement regarding AI risks becoming quickly outdated, given the remarkable pace at which these systems are developing. Second, all of us, including those who design them, possess only a limited understanding of their actual functioning. Indeed, <strong>current AI systems are more “cultivated” than “built,” for developers do not directly design every detail, but instead create a framework within which the intelligence “grows.”</strong> As a result, fundamental scientific aspects — such as the internal representations and computational processes of these systems — remain, at present, unknown.</p>\n</blockquote>\n<p>I liked section 83's description of the relationship between development and dignity:</p>\n<blockquote>\n<p>For individuals as well as for nations, development is both a duty and a right. Minimum conditions are required for enabling every person and people to flourish in accord with their dignity, without being kept in a state of dependence or excluded from access to necessary goods. Development is truly human when it places people at the center instead of the accumulation of wealth, and when it concerns peoples as well as individuals. Justice demands the recognition of the rights of society and the rights of peoples, and includes a responsibility toward future generations. <strong>Development is not truly human if it increases consumption for some while shifting costs and burdens onto others, or relegates entire regions to subordinate roles, preventing them from realizing their full potential</strong>.</p>\n</blockquote>\n<p>Baked in cultural biases and sycophancy get a mention in section 100:</p>\n<blockquote>\n<p>In personal use, three aspects in particular deserve careful consideration: the ease with which results are obtained, the impression of objectivity and the simulation of human communication. The speed and simplicity with which information, complex analyses, media content and practical assistance can be accessed undoubtedly makes life easier. Yet they can also encourage excessive reliance and the search for ready-made answers, and weaken personal creativity and judgment. <strong>The apparent objectivity of the responses and suggestions these systems provide can lead us to overlook the fact that they reflect the cultural assumptions of those who designed and trained them, with all their strengths and limitations</strong>. The artificial imitation of positive human communication — words of advice, empathy, friendship and even love — can be engaging and at times genuinely helpful. <strong>However, for less discerning users, it can also be misleading, creating the illusion of a relationship with a real personal subject</strong>. When words are simulated, they do not build genuine relationships, but only their appearance. The artificial imitation of care or support can become particularly risky when it enters contexts where real relationships and emotional bonds are lacking.</p>\n</blockquote>\n<p>101 touches on the environmental impact:</p>\n<blockquote>\n<p>Current AI systems require enormous amounts of energy and water, significantly influencing carbon dioxide emissions, and place heavy demands on natural resources. <strong>As their complexity increases, especially in the case of large language models, the need for computing power and storage capacity grows too, which requires an extensive network of machines, cables, data centers and energy-intensive infrastructure</strong>. For this reason, it is essential to develop more sustainable technological solutions that reduce environmental impact and help protect our common home.</p>\n</blockquote>\n<p>102 covers the risks of algorithmic systems making decisions that impact people's lives without \"compassion, mercy, forgiveness\":</p>\n<blockquote>\n<p>The use of AI is never a purely technical matter: <strong>when it enters processes that affect people’s lives, it touches on rights, opportunities, status and freedom</strong>. Important and sensitive decisions — concerning employment, credit, access to public services or even a person’s reputation — <strong>risk being fully delegated to automated systems that do not know “compassion, mercy, forgiveness, and above all, the hope that people are able to change,”</strong> and can therefore give rise to new forms of exclusion.</p>\n</blockquote>\n<p>105 emphasizes the need for human accountability in how these systems are applied:</p>\n<blockquote>\n<p>For AI to respect human dignity and truly serve the common good, responsibility must be clearly defined at every stage: <strong>from those who design and develop these systems to those who use them and rely on them for concrete decisions</strong>. In many cases, however, the internal processes leading to a result remain opaque, making it harder to assign responsibility and correct errors. <strong>This is where accountability becomes crucial: the possibility of identifying who must “account” for decisions, justify them, monitor them, and, when necessary, challenge them and remedy any harm caused</strong>.</p>\n</blockquote>\n<p>And 108 touches on the way AI amplifies the power of those with resources:</p>\n<blockquote>\n<p>In fact, as with every major technological shift, <strong>AI tends to amplify the power of those who already possess economic resources, expertise and access to data</strong>. In light of the common good and the universal destination of goods, this raises serious concerns, since small but highly influential groups can shape information and consumption patterns, influence democratic processes and steer economic dynamics to their own advantage, undermining social justice and solidarity among peoples. For this reason, it is essential that the use of AI, especially when it touches on public goods and fundamental rights, be guided by clear criteria and effective oversight, grounded in participation and subsidiarity.</p>\n</blockquote>\n<p>That same section explicitly calls out data as something that should be thought of more as a public good:</p>\n<blockquote>\n<p>[...] Moreover, <strong>ownership of data cannot be left solely in private hands</strong> but must be appropriately regulated. <strong>Data is the product of many contributors and should not be treated as something to be sold off or entrusted to a select few</strong>. It is necessary to think creatively in order to manage data as a common or shared good, in a spirit of participation, as <a href=\"https://www.vatican.va/content/john-paul-ii/en.html\">Saint John Paul II</a> already suggested regarding collective goods.</p>\n</blockquote>\n<p>Given that Palantir is named after a <em>Lord of the Rings</em> reference, I can't help but wonder if the J.R.R. Tolkien quote from <em>The Return of the King</em> (section 213) was the Pope throwing a little shade at Peter Thiel.</p>\n<blockquote>\n<p>The twentieth-century Catholic author J.R.R. Tolkien, in the words of a protagonist in one of his novels, described our responsibility in this way: “It is not our part to master all the tides of the world, but to do what is in us for the succour of those years wherein we are set, uprooting the evil in the fields that we know, so that those who live after may have clean earth to till.” The civilization of love will not arise from a single or spectacular gesture, but from the sum total of small and steadfast acts of fidelity that serve as a bulwark against dehumanization. For this reason, it is worthwhile pausing to reflect on some aspects of how we, each in our own way, can cooperate in building the civilization of love.</p>\n</blockquote>\n<h4 id=\"another-2026-prediction-down\">Another 2026 prediction down</h4>\n<p>On 6th January this year I joined the  <a href=\"https://oxide-and-friends.transistor.fm/episodes/predictions-2026\">Oxide and Friends 2026 predictions</a> podcast episode to talk about predictions for 2026, 2029 and 2032. I <a href=\"https://simonwillison.net/2026/Jan/8/llm-predictions-for-2026/\">wrote mine up here</a>, with hindsight they weren't nearly ambitious enough - it's already undeniable that LLMs write good code, we've made huge advances in sandboxing and New Zealand kākāpō have indeed <a href=\"https://news.mongabay.com/short-article/2026/03/critically-endangered-kakapo-parrot-has-standout-breeding-season/\">had a truly excellent breeding season</a>.</p>\n<p>There's one segment from the episode that I didn't bother to include in my write-up, but that I can't resist providing as a lightly-edited transcript here:</p>\n<blockquote>\n<p><strong>Bryan Cantrill:</strong> <a href=\"https://oxide-and-friends.transistor.fm/episodes/predictions-2026/transcript#t=37m13s\">37:13</a></p>\n<p>I think that AI has created some real public perception problems for itself. And I think that you are gonna have one of the frontier model companies, this year, have a white paper explaining how the proliferation of AI will mean prosperity for everybody. They will be trying to make some economic argument - because this is gonna be a 2026 election issue, how we think of these things and how they are regulated and it's a big mess. There's more heat than light in this debate.</p>\n<p><strong>Simon Willison:</strong> <a href=\"https://oxide-and-friends.transistor.fm/episodes/predictions-2026/transcript#t=38m5s\">38:05</a></p>\n<p>I'd like to tag something on to that one: I think that only works if they can sort of wash that through existing trusted experts. Sam Altman and Dario are constantly publishing essays about this stuff and nobody believes a word they say. Get Barack Obama's signature on one of these position papers and <em>maybe</em> you've got something people might start to trust a little bit.</p>\n<p><strong>Adam Leventhal:</strong> <a href=\"https://oxide-and-friends.transistor.fm/episodes/predictions-2026/transcript#t=38m27s\">38:27</a></p>\n<p>Otherwise, it's just like \"leaded gas is good for you\", says Exxon.</p>\n<p><strong>Bryan Cantrill:</strong> <a href=\"https://oxide-and-friends.transistor.fm/episodes/predictions-2026/transcript#t=38m31s\">38:31</a></p>\n<p>I mean, yeah. God. Obama... let's go with that, that's a great one because if it's like Bill Clinton everyone's gonna kind of roll their eyes, so it's gotta be someone who's got real credibility saying that this is gonna be broad-based... I'd say if they get that person to do it, it's gonna be revealed that that's also a bit crooked.</p>\n<p><strong>Simon Willison:</strong> <a href=\"https://oxide-and-friends.transistor.fm/episodes/predictions-2026/transcript#t=38m57s\">38:57</a></p>\n<p>How about the Pope?</p>\n<p><strong>Bryan Cantrill:</strong> <a href=\"https://oxide-and-friends.transistor.fm/episodes/predictions-2026/transcript#t=39m1s\">39:01</a></p>\n<p>The Pope is very into this stuff! That's a great prediction. We've hit pay dirt. The Pope weighing in on LLMs and their economic impact on the world.</p>\n<p>Simon, I'm giving you full credit if the Pope weighs in believing that this is gonna be economic devastation.</p>\n</blockquote>\n<p>My prediction here looks a whole lot less insightful given the Leo XIV/Leo XIII relationship, which I was unaware of when we recorded the episode!</p>\n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/predictions\">predictions</a>, <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/kakapo\">kakapo</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a>, <a href=\"https://simonwillison.net/tags/bryan-cantrill\">bryan-cantrill</a>, <a href=\"https://simonwillison.net/tags/ai-ethics\">ai-ethics</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-25T23:58:17+00:00",
          "category": [
            {
              "@_term": "predictions"
            },
            {
              "@_term": "ai"
            },
            {
              "@_term": "kakapo"
            },
            {
              "@_term": "generative-ai"
            },
            {
              "@_term": "llms"
            },
            {
              "@_term": "bryan-cantrill"
            },
            {
              "@_term": "ai-ethics"
            }
          ],
          "published": "2026-05-25T23:58:17+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/25/sighting-365297287/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/25/sighting-365297287/#atom-everything"
          },
          "title": "California Brown Pelican, Snowy Egret, California Sea Lion, Harbor Seal",
          "summary": {
            "#text": "<p><img src=\"https://static.inaturalist.org/photos/666934915/large.jpg\" alt=\"California Brown Pelican\"></p><p><img src=\"https://static.inaturalist.org/photos/666934945/large.jpg\" alt=\"California Brown Pelican\"></p><p><img src=\"https://static.inaturalist.org/photos/666934484/large.jpg\" alt=\"Snowy Egret\"></p><p><img src=\"https://static.inaturalist.org/photos/666935110/large.jpg\" alt=\"California Sea Lion\"></p><p><img src=\"https://static.inaturalist.org/photos/666935468/large.jpg\" alt=\"Harbor Seal\"></p><p>California Brown Pelican, Snowy Egret, California Sea Lion, Harbor Seal, in San Mateo County, CA, US</p><p>We took our new <a href=\"https://www.orukayak.com/\">folding kayak</a> out in the harbor and saw sea lions and harbor seals chilling on the docks.</p>",
            "@_type": "html"
          },
          "updated": "2026-05-25T23:08:00+00:00",
          "published": "2026-05-25T23:08:00+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/24/datasette/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/24/datasette/#atom-everything"
          },
          "title": "datasette 1.0a30",
          "summary": {
            "#text": "<p><strong>Release:</strong> <a href=\"https://github.com/simonw/datasette/releases/tag/1.0a30\">datasette 1.0a30</a></p>\n        <p>The big new feature in this alpha is a new customizable \"Jump to...\" menu, described in detail in <a href=\"https://datasette.io/blog/2026/jump-menu/\">The extensible \"Jump to\" menu in Datasette 1.0a30</a> on the Datasette blog. You can try it out by hitting <code>/</code> on <a href=\"https://latest.datasette.io/\">latest.datasette.io</a> - it looks like this:</p>\n<p><img alt=\"Animated demo - the Jump to menu appears, and as the user types it filters to specific databases and tables and debug options\" src=\"https://static.simonwillison.net/static/2026/menu.gif\" /></p>\n<p>The new <a href=\"https://docs.datasette.io/en/latest/plugin_hooks.html#jump-items-sql-datasette-actor-request\">jump_items_sql()</a> plugin hook allows plugins to add their own items to the set that's searched by the plugin.</p>\n    \n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/projects\">projects</a>, <a href=\"https://simonwillison.net/tags/datasette\">datasette</a>, <a href=\"https://simonwillison.net/tags/annotated-release-notes\">annotated-release-notes</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-24T23:52:37+00:00",
          "category": [
            {
              "@_term": "projects"
            },
            {
              "@_term": "datasette"
            },
            {
              "@_term": "annotated-release-notes"
            }
          ],
          "published": "2026-05-24T23:52:37+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/24/datasette-agent/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/24/datasette-agent/#atom-everything"
          },
          "title": "datasette-agent 0.1a4",
          "summary": {
            "#text": "<p><strong>Release:</strong> <a href=\"https://github.com/datasette/datasette-agent/releases/tag/0.1a4\">datasette-agent 0.1a4</a></p>\n        <p>Taking advantage of the new <a href=\"https://docs.datasette.io/en/latest/javascript_plugins.html#javascript-plugins-makejumpsections\">makeJumpSections()</a> JavaScript plugin hook added in <a href=\"https://docs.datasette.io/en/latest/changelog.html#a30-2026-05-24\">Datasette 1.0a30</a>, <code>datasette-agent</code> now presents this \"Start a new agent chat\" interface as part of the Jump to menu, any time you hit <code>/</code>:</p>\n<p><img alt=\"Animated demo - this time the demo starts on agent.datasette.io and when the menu opens it has a new Start chat box below the search box - entering 'count entries' and hitting the button causes it to start an agent conversation that counts the number of entries and returns 3300.\" src=\"https://static.simonwillison.net/static/2026/menu-agent.gif\" /></p>\n<p>You can try this out by signing into <a href=\"https://agent.datasette.io/\">agent.datasette.io</a> using your GitHub account.</p>\n    \n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/datasette\">datasette</a>, <a href=\"https://simonwillison.net/tags/datasette-agent\">datasette-agent</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-24T23:19:34+00:00",
          "category": [
            {
              "@_term": "datasette"
            },
            {
              "@_term": "datasette-agent"
            }
          ],
          "published": "2026-05-24T23:19:34+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/24/datasette-fixtures/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/24/datasette-fixtures/#atom-everything"
          },
          "title": "datasette-fixtures 0.1a0",
          "summary": {
            "#text": "<p><strong>Release:</strong> <a href=\"https://github.com/datasette/datasette-fixtures/releases/tag/0.1a0\">datasette-fixtures 0.1a0</a></p>\n        <p>One of the smaller features in <a href=\"https://docs.datasette.io/en/latest/changelog.html#a30-2026-05-24\">Datasette 1.0a30</a> is this:</p>\n<blockquote>\n<p>New documented <a href=\"https://docs.datasette.io/en/latest/testing_plugins.html#datasette-fixtures-populate-fixture-database\">datasette.fixtures.populate_fixture_database(conn)</a> helper for creating the fixture database tables used by Datasette's own tests, intended for plugin test suites.</p>\n</blockquote>\n<p>This new plugin takes advantage of that API. You can try it out using <code>uvx</code> without even installing Datasette like this:</p>\n<pre>uvx --prerelease=allow \\\n  --with datasette-fixtures datasette \\\n  --get /fixtures/roadside_attractions.json</pre>\n<p>Which outputs:</p>\n<pre>{\n  <span class=\"pl-ent\">\"ok\"</span>: <span class=\"pl-c1\">true</span>,\n  <span class=\"pl-ent\">\"next\"</span>: <span class=\"pl-c1\">null</span>,\n  <span class=\"pl-ent\">\"rows\"</span>: [\n    {<span class=\"pl-ent\">\"pk\"</span>: <span class=\"pl-c1\">1</span>, <span class=\"pl-ent\">\"name\"</span>: <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>The Mystery Spot<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-ent\">\"address\"</span>: <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>465 Mystery Spot Road, Santa Cruz, CA 95065<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-ent\">\"url\"</span>: <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>https://www.mysteryspot.com/<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-ent\">\"latitude\"</span>: <span class=\"pl-c1\">37.0167</span>, <span class=\"pl-ent\">\"longitude\"</span>: <span class=\"pl-c1\">-122.0024</span>},\n    {<span class=\"pl-ent\">\"pk\"</span>: <span class=\"pl-c1\">2</span>, <span class=\"pl-ent\">\"name\"</span>: <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>Winchester Mystery House<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-ent\">\"address\"</span>: <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>525 South Winchester Boulevard, San Jose, CA 95128<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-ent\">\"url\"</span>: <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>https://winchestermysteryhouse.com/<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-ent\">\"latitude\"</span>: <span class=\"pl-c1\">37.3184</span>, <span class=\"pl-ent\">\"longitude\"</span>: <span class=\"pl-c1\">-121.9511</span>},\n    {<span class=\"pl-ent\">\"pk\"</span>: <span class=\"pl-c1\">3</span>, <span class=\"pl-ent\">\"name\"</span>: <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>Burlingame Museum of PEZ Memorabilia<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-ent\">\"address\"</span>: <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>214 California Drive, Burlingame, CA 94010<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-ent\">\"url\"</span>: <span class=\"pl-c1\">null</span>, <span class=\"pl-ent\">\"latitude\"</span>: <span class=\"pl-c1\">37.5793</span>, <span class=\"pl-ent\">\"longitude\"</span>: <span class=\"pl-c1\">-122.3442</span>},\n    {<span class=\"pl-ent\">\"pk\"</span>: <span class=\"pl-c1\">4</span>, <span class=\"pl-ent\">\"name\"</span>: <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>Bigfoot Discovery Museum<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-ent\">\"address\"</span>: <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>5497 Highway 9, Felton, CA 95018<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-ent\">\"url\"</span>: <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>https://www.bigfootdiscoveryproject.com/<span class=\"pl-pds\">\"</span></span>, <span class=\"pl-ent\">\"latitude\"</span>: <span class=\"pl-c1\">37.0414</span>, <span class=\"pl-ent\">\"longitude\"</span>: <span class=\"pl-c1\">-122.0725</span>}\n  ],\n  <span class=\"pl-ent\">\"truncated\"</span>: <span class=\"pl-c1\">false</span>\n}</pre>\n    \n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/datasette\">datasette</a>, <a href=\"https://simonwillison.net/tags/uv\">uv</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-24T21:38:32+00:00",
          "category": [
            {
              "@_term": "datasette"
            },
            {
              "@_term": "uv"
            }
          ],
          "published": "2026-05-24T21:38:32+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/24/armin-ronacher/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/24/armin-ronacher/#atom-everything"
          },
          "title": "Quoting Armin Ronacher",
          "summary": {
            "#text": "<blockquote cite=\"https://lucumr.pocoo.org/2026/5/24/pi-oss/\"><p>The most frustrating failure mode right now is that people submit issues that are not in their own voice. They contain an observed problem somewhere, but it has been thrown into a clanker and the clanker reworded it and made a huge mess of it. Typically, it was prompted so badly that the conclusions produced are more often than not inaccurate but always full of confidence. The result is complete guesswork on root causes, fake-minimal repros, suggested implementation strategies, analogies to adjacent but often the wrong code, and long lists of error classes that might or might not matter. [...]</p>\n<p>So at least personally, I increasingly want issue reports to be condensed to what the human actually observed:</p>\n<ol>\n<li>I ran this command.</li>\n<li>I expected this to happen.</li>\n<li>This happened instead.</li>\n<li>Here is the exact error or log.</li>\n</ol></blockquote>\n<p class=\"cite\">&mdash; <a href=\"https://lucumr.pocoo.org/2026/5/24/pi-oss/\">Armin Ronacher</a>, on slop issues filed against <a href=\"https://pi.dev/\">Pi</a></p>\n\n    <p>Tags: <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/github-issues\">github-issues</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a>, <a href=\"https://simonwillison.net/tags/ai-ethics\">ai-ethics</a>, <a href=\"https://simonwillison.net/tags/open-source\">open-source</a>, <a href=\"https://simonwillison.net/tags/coding-agents\">coding-agents</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/armin-ronacher\">armin-ronacher</a>, <a href=\"https://simonwillison.net/tags/pi\">pi</a>, <a href=\"https://simonwillison.net/tags/slop\">slop</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-24T18:46:53+00:00",
          "category": [
            {
              "@_term": "ai"
            },
            {
              "@_term": "github-issues"
            },
            {
              "@_term": "llms"
            },
            {
              "@_term": "ai-ethics"
            },
            {
              "@_term": "open-source"
            },
            {
              "@_term": "coding-agents"
            },
            {
              "@_term": "generative-ai"
            },
            {
              "@_term": "armin-ronacher"
            },
            {
              "@_term": "pi"
            },
            {
              "@_term": "slop"
            }
          ],
          "published": "2026-05-24T18:46:53+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/24/usborne-mad-house/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/24/usborne-mad-house/#atom-everything"
          },
          "title": "Mad House — Usborne Creepy Computer Games",
          "summary": {
            "#text": "<p><strong>Tool:</strong> <a href=\"https://tools.simonwillison.net/usborne-mad-house\">Mad House — Usborne Creepy Computer Games</a></p>\n        <p>Via <a href=\"https://news.ycombinator.com/item?id=48258194\">Hacker News</a> I learned that UK publisher Usborne published <a href=\"https://usborne.com/us/books/computer-and-coding-books\">free PDFs of their 1980s Computer Books</a>, some of which I remember working through on my Commodore 64 as a child.</p>\n<p>These were so great! Beautifully illustrated books with fun projects made up of code you could type into your own machine.</p>\n<p>I remember playing \"Mad House\" typed in from the 1983 book \"Creepy Computer Games\", so I fed that PDF <a href=\"https://claude.ai/share/7b4a5617-f586-4744-b082-1650cab607cb\">into Claude</a> and had it build an interactive version of that game in JavaScript and HTML:</p>\n<blockquote>\n<p><code>Build a vanilla JS artifact that exactly recreates the game Mad House from this book, make sure it's mobile friendly and has a suitable retro aesthetic</code></p>\n<p><code>Credit the book title and link to https://usborne.com/us/books/computer-and-coding-books</code></p>\n</blockquote>\n<p><img alt=\"Screenshot of a retro green-on-black terminal-style game interface titled &quot;MAD HOUSE — A REAL NIGHTMARE —&quot; with a REC indicator, FOOTSTEPS 240, DOORS counter, three rows of ASCII corridors made of asterisks with &quot;&gt;&quot; and &quot;&lt;&quot; door markers, &quot;PRESS START TO BEGIN&quot; text, NEAR DOOR controls (X and C) and FAR DOOR controls (N and M), and a &quot;▶ START / RESTART&quot; button at the bottom.\" src=\"https://static.simonwillison.net/static/2026/mad-house.jpg\" /></p>\n    \n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/computer-history\">computer-history</a>, <a href=\"https://simonwillison.net/tags/games\">games</a>, <a href=\"https://simonwillison.net/tags/tools\">tools</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-24T17:14:11+00:00",
          "category": [
            {
              "@_term": "computer-history"
            },
            {
              "@_term": "games"
            },
            {
              "@_term": "tools"
            }
          ],
          "published": "2026-05-24T17:14:11+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/23/on-the-dl/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/23/on-the-dl/#atom-everything"
          },
          "title": "On the <dl>",
          "summary": {
            "#text": "<p><strong><a href=\"https://benmyers.dev/blog/on-the-dl/\">On the &lt;dl&gt;</a></strong></p>\nI learned a few new-to-me things about the <code>&lt;dl&gt;</code> element from this article by Ben Meyer:</p>\n<ol>\n<li>A <code>&lt;dt&gt;</code> can be followed by <em>multiple</em> <code>&lt;dd&gt;</code></li>\n<li>You can optionally group the <code>&lt;dt&gt;</code> and <code>&lt;dd&gt;</code> elements in a <code>&lt;div&gt;</code> for styling - but only a <code>&lt;div&gt;</code>.</li>\n<li>You can label them using ARIA.</li>\n<li>They've been called \"description lists\", not \"definition lists\", since <a href=\"https://www.w3.org/TR/2008/WD-html5-20080122/#the-dl\">an HTML5 draft in 2008</a>.</li>\n</ol>\n<p>So this is valid:</p>\n<pre><span class=\"pl-kos\">&lt;</span><span class=\"pl-ent\">h2</span> <span class=\"pl-c1\">id</span>=\"<span class=\"pl-s\">credits</span>\"<span class=\"pl-kos\">&gt;</span>Credits<span class=\"pl-kos\">&lt;/</span><span class=\"pl-ent\">h2</span><span class=\"pl-kos\">&gt;</span>\n<span class=\"pl-kos\">&lt;</span><span class=\"pl-ent\">dl</span> <span class=\"pl-c1\">aria-labelledby</span>=\"<span class=\"pl-s\">credits</span>\"<span class=\"pl-kos\">&gt;</span>\n  <span class=\"pl-kos\">&lt;</span><span class=\"pl-ent\">div</span><span class=\"pl-kos\">&gt;</span>\n    <span class=\"pl-kos\">&lt;</span><span class=\"pl-ent\">dt</span><span class=\"pl-kos\">&gt;</span>Author<span class=\"pl-kos\">&lt;/</span><span class=\"pl-ent\">dt</span><span class=\"pl-kos\">&gt;</span>\n    <span class=\"pl-kos\">&lt;</span><span class=\"pl-ent\">dd</span><span class=\"pl-kos\">&gt;</span>Jeffrey Zeldman<span class=\"pl-kos\">&lt;/</span><span class=\"pl-ent\">dd</span><span class=\"pl-kos\">&gt;</span>\n    <span class=\"pl-kos\">&lt;</span><span class=\"pl-ent\">dd</span><span class=\"pl-kos\">&gt;</span>Ethan Marcotte<span class=\"pl-kos\">&lt;/</span><span class=\"pl-ent\">dd</span><span class=\"pl-kos\">&gt;</span>\n  <span class=\"pl-kos\">&lt;/</span><span class=\"pl-ent\">div</span><span class=\"pl-kos\">&gt;</span>\n<span class=\"pl-kos\">&lt;/</span><span class=\"pl-ent\">dl</span><span class=\"pl-kos\">&gt;</span></pre>\n\n<p>Here's a useful note from Adrian Roselli on <a href=\"https://adrianroselli.com/2025/01/updated-brief-note-on-description-list-support.html\">screen reader support for description lists</a>.\n\n    <p><small></small>Via <a href=\"https://news.ycombinator.com/item?id=48247325\">Hacker News</a></small></p>\n\n\n    <p>Tags: <a href=\"https://simonwillison.net/tags/css\">css</a>, <a href=\"https://simonwillison.net/tags/html\">html</a>, <a href=\"https://simonwillison.net/tags/screen-readers\">screen-readers</a>, <a href=\"https://simonwillison.net/tags/web-standards\">web-standards</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-23T20:24:48+00:00",
          "category": [
            {
              "@_term": "css"
            },
            {
              "@_term": "html"
            },
            {
              "@_term": "screen-readers"
            },
            {
              "@_term": "web-standards"
            }
          ],
          "published": "2026-05-23T20:24:48+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/22/memory-shortage/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/22/memory-shortage/#atom-everything"
          },
          "title": "The memory shortage is causing a repricing of consumer electronics",
          "summary": {
            "#text": "<p><strong><a href=\"https://davidoks.blog/p/ai-is-killing-the-cheap-smartphone\">The memory shortage is causing a repricing of consumer electronics</a></strong></p>\nDavid Oks provides the clearest explanation I've seen yet of why consumer products that use memory are likely to get significantly more expensive over the next few years.</p>\n<p>The short version is that memory manufacturers - of which there are just three remaining large companies - have a fixed capacity in terms of how many wafers they can process at any one time. This fixed wafer capacity is then split between DDR - used in desktops and servers, LPDDR - used in mobile phones and low-energy devices, and HBM - used with GPUs.</p>\n<p>Until recently, HBM got just 2% of that wafer allocation. The enormous growth in AI data centers has pushed that up to an expected 20% by the end of 2026, and \"a single gigabyte of HBM consumes more than three times the wafer capacity that a gigabyte of DDR or LPDDR does\".</p>\n<p>Memory companies have learned from the extinction of their rivals that you should always under-provision rather than over-provision your fabricator capacity. The profit margins and demand for HBM (high-bandwidth memory) will constrain the production of consumer-device RAM for several years.</p>\n<p>This is already being felt in the sub-$100 smartphone market, which is particularly important to markets like Africa and South Asia.</p>\n<p>(The original title of the piece was \"AI is killing the cheap smartphone\" but I'm using the Hacker News rephrased title, which I think does more justice to the content.)\n\n    <p><small></small>Via <a href=\"https://news.ycombinator.com/item?id=48229319\">Hacker News</a></small></p>\n\n\n    <p>Tags: <a href=\"https://simonwillison.net/tags/memory\">memory</a>, <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/ai-ethics\">ai-ethics</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-22T22:01:31+00:00",
          "category": [
            {
              "@_term": "memory"
            },
            {
              "@_term": "ai"
            },
            {
              "@_term": "ai-ethics"
            }
          ],
          "published": "2026-05-22T22:01:31+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/22/ftc-active-listening/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/22/ftc-active-listening/#atom-everything"
          },
          "title": "FTC to Require Cox Media Group, Two Other Firms to Pay Nearly $1 Million to Settle Charges They Deceived Customers About “Active Listening” AI-Powered Marketing Service",
          "summary": {
            "#text": "<p><strong><a href=\"https://www.ftc.gov/news-events/news/press-releases/2026/05/ftc-require-cox-media-group-two-other-firms-pay-nearly-1-million-settle-charges-they-deceived\">FTC to Require Cox Media Group, Two Other Firms to Pay Nearly $1 Million to Settle Charges They Deceived Customers About “Active Listening” AI-Powered Marketing Service</a></strong></p>\nBack in 2024 Cox Media Group were caught trying to sell advertisers packages based on \"active listening\", with <a href=\"https://www.documentcloud.org/documents/25051283-cmg-pitch-deck-on-voice-data-advertising-active-listening/\">this deck</a> which claimed:</p>\n<blockquote>\n<ul>\n<li>Smart devices capture real-time intent data by listening to our conversations</li>\n<li>Advertisers can pair this voice-data with behavioral data to target in-market consumers</li>\n</ul>\n</blockquote>\n<p>I wrote about this <a href=\"https://simonwillison.net/2024/Sep/2/facebook-cmg/\">in September 2024</a>. My theory:</p>\n<blockquote>\n<p>I think <strong>active listening</strong> is the term that the team came up with for “something that sounds fancy but really just means the way ad targeting platforms work already”. Then they got over-excited about the new metaphor and added that first couple of slides that talk about “voice data”, without really understanding how the tech works or what kind of a shitstorm that could kick off when people who DID understand technology started paying attention to their marketing.</p>\n</blockquote>\n<p>This FTC press release appears to confirm that's pretty much what happened:</p>\n<blockquote>\n<p>CMG, MindSift and 1010 Digital Works claimed their “Active Listening” branded marketing service listened in on consumers’ conversations overheard by smart devices, in real time, to target advertising [...]</p>\n<p>According to the complaints, this service did not, in fact, listen in on consumers’ conversations or use voice data at all—nor did the service accurately place ads in customers’ desired locations. Instead, the service the companies provided consisted of reselling—at a significant markup—email lists obtained from other data brokers.</p>\n</blockquote>\n<p>The FTC also clarify that hiding an \"opt-in\" to using voice data in terms of service would not be acceptable, as tricks like that do not constitute \"adequate consent\":</p>\n<blockquote>\n<p>The FTC also alleged that all three companies deceived potential customers by claiming that consumers had opted into the Active Listening service. The company, however, did not seek or obtain consumers’ consent, according to the complaints. Instead, the companies claimed that consumers had “opted in” by agreeing to the terms of service that people have to accept when downloading and using apps. Clicking through mandatory terms of service does not constitute “opt-in consent” for such an invasive service or for use of consumers’ voice data from inside their homes. If the Active Listening service had functioned as advertised, this collection and use of consumers’ voice data without adequate consent would itself violate Section 5 of the FTC Act.</p>\n</blockquote>\n<p>Attempting to myth bust <a href=\"https://simonwillison.net/tags/microphone-ads-conspiracy/\">the conspiracy theory</a> that our mobile devices target ads to us based on spying through the microphones continues to be my least rewarding niche online hobby. It's nice to have a new piece of ammunition.\n\n    <p><small></small>Via <a href=\"https://twitter.com/nydiatisdale/status/2057657844321705993\">@nydiatisdale</a></small></p>\n\n\n    <p>Tags: <a href=\"https://simonwillison.net/tags/privacy\">privacy</a>, <a href=\"https://simonwillison.net/tags/microphone-ads-conspiracy\">microphone-ads-conspiracy</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-22T04:48:32+00:00",
          "category": [
            {
              "@_term": "privacy"
            },
            {
              "@_term": "microphone-ads-conspiracy"
            }
          ],
          "published": "2026-05-22T04:48:32+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/21/datasette-agent/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/21/datasette-agent/#atom-everything"
          },
          "title": "Datasette Agent",
          "summary": {
            "#text": "<p>We just <a href=\"https://datasette.io/blog/2026/datasette-agent/\">announced the first release of Datasette Agent</a>, a new extensible AI assistant for Datasette. I've been working on my <a href=\"https://llm.datasette.io/\">LLM</a> Python library for just over three years now, and Datasette Agent represents the moment that LLM and <a href=\"https://datasette.io/\">Datasette</a> finally come together. I'm really excited about it!</p>\n<p>Datasette Agent provides a conversational interface for asking questions of the data you have stored in Datasette. Add the <a href=\"https://github.com/datasette/datasette-agent-charts\">datasette-agent-charts</a> plugin and it can generate charts of your data as well.</p>\n<h4 id=\"the-demo\">The demo</h4>\n<p>The <a href=\"\">announcement post</a> (on the new Datasette project blog) includes this <a href=\"https://www.youtube.com/watch?v=AFZKp6hbFjI\">demo video</a>:</p>\n\n<iframe style=\"margin-bottom: 1.5em;\" width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/AFZKp6hbFjI\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen=\"allowfullscreen\"> </iframe>\n\n\n<p>I recorded the video against the new <a href=\"https://agent.datasette.io/\">agent.datasette.io</a> live demo instance, which runs Datasette Agent against example databases including the classic <a href=\"https://datasette.io/global-power-plants\">global-power-plants</a> by <a href=\"https://www.wri.org/research/global-database-power-plants\">WRI</a>, and a copy of the <a href=\"https://datasette.simonwillison.net/\">Datasette backup</a> of my blog.</p>\n<p>The live demo runs on <a href=\"https://ai.google.dev/gemini-api/docs/models/gemini-3.1-flash-lite\">Gemini 3.1 Flash-Lite</a> - it's cheap, fast and has no trouble writing SQLite queries.</p>\n<p>A question I asked in the demo was:</p>\n<blockquote>\n<p>when did Simon most recently see a pelican?</p>\n</blockquote>\n<p>Which ran <a href=\"https://datasette.simonwillison.net/simonwillisonblog?sql=SELECT+title%2C+commentary%2C+created+FROM+blog_beat+WHERE+beat_type+%3D+%27sighting%27+AND+%28title+LIKE+%27%25pelican%25%27+OR+commentary+LIKE+%27%25pelican%25%27%29+ORDER+BY+created+DESC+LIMIT+5\">this SQL query</a>:</p>\n<div class=\"highlight highlight-source-sql\"><pre><span class=\"pl-k\">SELECT</span>\n  title, commentary, created\n<span class=\"pl-k\">FROM</span>\n  blog_beat\n<span class=\"pl-k\">WHERE</span>\n  beat_type <span class=\"pl-k\">=</span> <span class=\"pl-s\"><span class=\"pl-pds\">'</span>sighting<span class=\"pl-pds\">'</span></span>\n  <span class=\"pl-k\">AND</span> (title <span class=\"pl-k\">LIKE</span> <span class=\"pl-s\"><span class=\"pl-pds\">'</span>%pelican%<span class=\"pl-pds\">'</span></span> <span class=\"pl-k\">OR</span> commentary <span class=\"pl-k\">LIKE</span> <span class=\"pl-s\"><span class=\"pl-pds\">'</span>%pelican%<span class=\"pl-pds\">'</span></span>)\n<span class=\"pl-k\">ORDER BY</span>\n  created <span class=\"pl-k\">DESC</span>\n<span class=\"pl-k\">LIMIT</span>\n  <span class=\"pl-c1\">5</span></pre></div>\n<p>And replied:</p>\n<blockquote>\n<p>The most recent sighting of a pelican by Simon was recorded on <strong>May 20, 2026</strong>.</p>\n<p>The observation included a California Brown Pelican, along with a Common Loon, Canada Goose, Striped Shore Crab, and a California Sea Lion.</p>\n</blockquote>\n<p>Here's <a href=\"https://simonwillison.net/2026/May/20/sighting-363395265/\">that sighting on my blog</a>, and the <a href=\"https://gist.github.com/simonw/a46d17b69659a4866adb1d868280091d\">Markdown export</a> of the full conversation transcript.</p>\n<h4 id=\"the-plugins\">The plugins</h4>\n<p>My favorite feature of Datasette Agent is that, like the rest of Datasette, it's extensible using plugins.</p>\n<p>We've shipped three plugins so far:</p>\n<ul>\n<li>\n<a href=\"https://github.com/datasette/datasette-agent-charts\">datasette-agent-charts</a>, shown in the video, adds charts to Datasette Agent, powered by <a href=\"https://observablehq.com/plot/\">Observable Plot</a>.</li>\n<li>\n<a href=\"https://github.com/datasette/datasette-agent-openai-imagegen\">datasette-agent-openai-imagegen</a> adds an image generation tool to Datasette Agent using <a href=\"https://openai.com/index/introducing-chatgpt-images-2-0/\">ChatGPT Images 2.0</a>.</li>\n<li>\n<a href=\"https://github.com/datasette/datasette-agent-sprites\">datasette-agent-sprites</a> provides tools for executing code in a <a href=\"https://sprites.dev/\">Fly Sprites</a> persistent sandbox.</li>\n</ul>\n<p>Building plugins is <em>really fun</em>. I have a bunch more prototypes that aren't quite alpha-quality yet.</p>\n<p>Claude Code and OpenAI Codex are both proving excellent at writing plugins - just point them at a checkout of the <a href=\"https://github.com/datasette/datasette-agent\">datasette-agent repo</a> for reference and tell them what you want to build!</p>\n<h4 id=\"running-it-against-local-models\">Running it against local models</h4>\n<p>I've also been having fun running the new plugin against local models. Here's a <code>uv</code> one-liner to run the plugin against <a href=\"https://huggingface.co/google/gemma-4-26B-A4B\">gemma-4-26b-a4b</a> in <a href=\"https://lmstudio.ai\">LM Studio</a> on a Mac:</p>\n<div class=\"highlight highlight-source-shell\"><pre>uvx --prerelease=allow \\\n  --with datasette-agent --with llm-lmstudio \\\n  datasette --internal internal.db --root \\\n  -s plugins.datasette-llm.default_model lmstudio/google/gemma-4-26b-a4b \\\n  data.db</pre></div>\n<p>Datasette Agent needs reliable tool calls and the ability for a model to produce SQL queries that run against SQLite. The open weight models released in the past six months are increasingly able to handle that.</p>\n<h4 id=\"what-s-next\">What's next</h4>\n<p>Datasette Agent opens up <em>so many</em> opportunities for the LLM and Datasette ecosystem in general.</p>\n<p>It's already informed <a href=\"https://simonwillison.net/2026/Apr/29/llm/\">the major LLM 0.32a0 refactor</a> which I'm nearly ready to roll into a stable release, maybe with some additional \"LLM agent\" abstractions extracte from Datasette Agent itself.</p>\n<p>I've been exploring my own take on the Claude Artifacts, which is shaping up nicely as a plugin.</p>\n<p>I'm excited to use Datasette Agent to build my own <a href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.013.jpeg\">Claw</a> - a personal AI assistant built around data imported from different parts of my digital life, which is a neat excuse to revisit my older <a href=\"https://dogsheep.github.io\">Dogsheep</a> family of tools.</p>\n<p>We'll also be rolling out Datasette Agent for users of <a href=\"https://datasette.cloud/\">Datasette Cloud</a>.</p>\n<p>Join our <a href=\"https://discord.gg/hdxyusUFv\">#datasette-agent Discord channel</a> if you'd like to talk about the project.</p>\n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/projects\">projects</a>, <a href=\"https://simonwillison.net/tags/sqlite\">sqlite</a>, <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/datasette\">datasette</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a>, <a href=\"https://simonwillison.net/tags/llm\">llm</a>, <a href=\"https://simonwillison.net/tags/uv\">uv</a>, <a href=\"https://simonwillison.net/tags/datasette-agent\">datasette-agent</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-21T19:52:19+00:00",
          "category": [
            {
              "@_term": "projects"
            },
            {
              "@_term": "sqlite"
            },
            {
              "@_term": "ai"
            },
            {
              "@_term": "datasette"
            },
            {
              "@_term": "generative-ai"
            },
            {
              "@_term": "llms"
            },
            {
              "@_term": "llm"
            },
            {
              "@_term": "uv"
            },
            {
              "@_term": "datasette-agent"
            }
          ],
          "published": "2026-05-21T19:52:19+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/21/datasette-agent-sprites/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/21/datasette-agent-sprites/#atom-everything"
          },
          "title": "datasette-agent-sprites 0.1a0",
          "summary": {
            "#text": "<p><strong>Release:</strong> <a href=\"https://github.com/datasette/datasette-agent-sprites/releases/tag/0.1a0\">datasette-agent-sprites 0.1a0</a></p>\n        <p>A Datasette Agent plugin for running commands in a <a href=\"https://sprites.dev\">Fly Sprites</a> sandbox.</p>\n    \n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/sandboxing\">sandboxing</a>, <a href=\"https://simonwillison.net/tags/datasette\">datasette</a>, <a href=\"https://simonwillison.net/tags/fly\">fly</a>, <a href=\"https://simonwillison.net/tags/datasette-agent\">datasette-agent</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-21T18:21:07+00:00",
          "category": [
            {
              "@_term": "sandboxing"
            },
            {
              "@_term": "datasette"
            },
            {
              "@_term": "fly"
            },
            {
              "@_term": "datasette-agent"
            }
          ],
          "published": "2026-05-21T18:21:07+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/21/datasette-agent-charts/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/21/datasette-agent-charts/#atom-everything"
          },
          "title": "datasette-agent-charts 0.1a2",
          "summary": {
            "#text": "<p><strong>Release:</strong> <a href=\"https://github.com/datasette/datasette-agent-charts/releases/tag/0.1a2\">datasette-agent-charts 0.1a2</a></p>\n        <blockquote>\n<ul>\n<li>\"View SQL query\" buttons below rendered charts.</li>\n</ul>\n</blockquote>\n    \n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/datasette\">datasette</a>, <a href=\"https://simonwillison.net/tags/datasette-agent\">datasette-agent</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-21T15:15:58+00:00",
          "category": [
            {
              "@_term": "datasette"
            },
            {
              "@_term": "datasette-agent"
            }
          ],
          "published": "2026-05-21T15:15:58+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/21/datasette-agent-2/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/21/datasette-agent-2/#atom-everything"
          },
          "title": "datasette-agent 0.1a3",
          "summary": {
            "#text": "<p><strong>Release:</strong> <a href=\"https://github.com/datasette/datasette-agent/releases/tag/0.1a3\">datasette-agent 0.1a3</a></p>\n        <blockquote>\n<ul>\n<li>\"View SQL query\" buttons for both visible tables and collapsed SQL result tool calls.</li>\n<li>Don't display empty reasoning chunks</li>\n<li>Improved handling of truncated responses - table still displays to the user even if the SQL results were truncated when showing the agent.</li>\n</ul>\n</blockquote>\n<p>See <a href=\"https://datasette.io/blog/2026/datasette-agent/\">Datasette Agent, an extensible AI assistant for Datasette</a>.</p>\n    \n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/datasette\">datasette</a>, <a href=\"https://simonwillison.net/tags/datasette-agent\">datasette-agent</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-21T15:04:09+00:00",
          "category": [
            {
              "@_term": "datasette"
            },
            {
              "@_term": "datasette-agent"
            }
          ],
          "published": "2026-05-21T15:04:09+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/20/spacex-s1/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/20/spacex-s1/#atom-everything"
          },
          "title": "Quoting SpaceX S-1",
          "summary": {
            "#text": "<blockquote cite=\"https://www.sec.gov/Archives/edgar/data/1181412/000162828026036936/spaceexplorationtechnologi.htm\"><p>We have the ability to use compute resources to support our proprietary AI applications (such as Grok 5, which is currently being trained at COLOSSUS II), while also providing access to select compute capacity to third-party customers. For example, in May 2026, we entered into <strong>Cloud Services Agreements with Anthropic PBC</strong> (“Anthropic”), an AI research and development public benefit corporation, with respect to access to <strong>compute capacity across COLOSSUS and COLOSSUS II</strong>. Pursuant to these agreements, the customer <strong>has agreed to pay us $1.25 billion per month</strong> through May 2029, with capacity ramping in May and June 2026 at a reduced fee. The agreements may be terminated by either party upon 90 days’ notice.</p></blockquote>\n<p class=\"cite\">&mdash; <a href=\"https://www.sec.gov/Archives/edgar/data/1181412/000162828026036936/spaceexplorationtechnologi.htm\">SpaceX S-1</a>, highlights mine</p>\n\n    <p>Tags: <a href=\"https://simonwillison.net/tags/anthropic\">anthropic</a>, <a href=\"https://simonwillison.net/tags/grok\">grok</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-20T22:26:36+00:00",
          "category": [
            {
              "@_term": "anthropic"
            },
            {
              "@_term": "grok"
            },
            {
              "@_term": "generative-ai"
            },
            {
              "@_term": "ai"
            },
            {
              "@_term": "llms"
            }
          ],
          "published": "2026-05-20T22:26:36+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/20/tokens-per-second/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/20/tokens-per-second/#atom-everything"
          },
          "title": "How fast is 10 tokens per second really?",
          "summary": {
            "#text": "<p><strong><a href=\"https://mikeveerman.github.io/tokenspeed/\">How fast is 10 tokens per second really?</a></strong></p>\nNeat little HTML app by Mike Veerman (<a href=\"https://github.com/MikeVeerman/tokenspeed/blob/master/index.html\">source code here</a>) which simulates LLM token output speeds from 5/second to 800/second.</p>\n<p>Useful if you see a model advertised as \"30 tokens/second\" and want to get a feel for what that actually looks like.\n\n    <p><small></small>Via <a href=\"https://news.ycombinator.com/item?id=48174920\">Hacker News</a></small></p>\n\n\n    <p>Tags: <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-20T17:57:45+00:00",
          "category": [
            {
              "@_term": "ai"
            },
            {
              "@_term": "generative-ai"
            },
            {
              "@_term": "llms"
            }
          ],
          "published": "2026-05-20T17:57:45+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/20/google-io/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/20/google-io/#atom-everything"
          },
          "title": "Google I/O, Gemini Spark, Antigravity",
          "summary": {
            "#text": "<p>It's hard to find much to write about Google I/O this year because I have a policy of not writing about anything that I can't try out myself, and a lot of the big announcements are \"coming soon\".</p>\n<p>I actually prefer to write about things that are in general availability, because I've had instances in the past where the previews didn't match what was released to the general public later on.</p>\n<p>Aside from <a href=\"https://simonwillison.net/2026/May/19/gemini-35-flash/\">Gemini 3.5 Flash</a> the most interesting announcement looks to be Google's upcoming OpenClaw competitor <a href=\"https://gemini.google/overview/agent/spark/\">Gemini Spark</a>, described as \"your personal AI agent\" which can \"connect natively with your favorite Google apps like Gmail, Calendar, Drive, Docs, Sheets, Slides, YouTube, and Google Maps\". The FAQ for that also includes this confusing detail:</p>\n<blockquote>\n<p><strong>What Gemini model does Gemini Spark run on?</strong></p>\n<p>Gemini Spark runs on Gemini 3.5 Flash and Antigravity.</p>\n</blockquote>\n<p>The <a href=\"https://antigravity.google/\">antigravity.google</a> website currently lists Antigravity as a desktop app, a CLI agent tool (written in Go), the <a href=\"https://github.com/google-antigravity/antigravity-sdk-python\">Antigravity SDK</a> (an open source Python wrapper around a bundled closed source Go binary), and the original Antigravity IDE (a VS Code fork).</p>\n<p>I guess Gemini Spark, the user-facing hosted agent product, might be running on that Go binary, but I'm not sure why that's worth mentioning in the FAQ!</p>\n<p>Naturally I went looking for notes on how Gemini Spark intends to handle the risk of prompt injection. The best information I could find on that was in the <a href=\"https://cloud.google.com/blog/products/ai-machine-learning/innovations-from-google-io-26-on-google-cloud\">Everything Google Cloud customers need to know coming out of Google I/O</a> post aimed at enterprise customers, which includes:</p>\n<blockquote>\n<p>Spark operates in a fully managed, secure runtime on Google Cloud, meaning you get enterprise-grade security without ever having to manage the underlying infrastructure. Every task executes in a fresh, strictly isolated, ephemeral VM to help ensure data never overlaps between sessions. To protect your enterprise, all traffic routes through our secure Agent Gateway that enforces Data Loss Prevention (DLP) policies, while user credentials remain fully encrypted and are never exposed directly to the agent.</p>\n</blockquote>\n<p>Given how many people are going to be piping <em>very</em> sensitive data through Gemini Spark in the near future I hope they've made this bullet-proof, or this could be a top candidate for the agent security <a href=\"https://simonwillison.net/2026/Jan/8/llm-predictions-for-2026/#1-year-a-challenger-disaster-for-coding-agent-security\">challenger disaster</a> that we still haven't seen.</p>\n<p>Also of note: in <a href=\"https://developers.googleblog.com/an-important-update-transitioning-gemini-cli-to-antigravity-cli/\">Transitioning Gemini CLI to Antigravity CLI</a> Google announce that the <a href=\"https://github.com/google-gemini/gemini-cli\">open source Gemini CLI</a> tool (Apache 2.0 licensed TypeScript) will stop working with their AI subscription plans on June 18th, replaced by the new closed source <a href=\"https://github.com/google-antigravity/antigravity-cli\">Antigravity CLI</a>.</p>\n\n    <p>Tags: <a href=\"https://simonwillison.net/tags/gemini\">gemini</a>, <a href=\"https://simonwillison.net/tags/google\">google</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/google-io\">google-io</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a>, <a href=\"https://simonwillison.net/tags/prompt-injection\">prompt-injection</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-20T15:32:17+00:00",
          "category": [
            {
              "@_term": "gemini"
            },
            {
              "@_term": "google"
            },
            {
              "@_term": "generative-ai"
            },
            {
              "@_term": "ai"
            },
            {
              "@_term": "google-io"
            },
            {
              "@_term": "llms"
            },
            {
              "@_term": "prompt-injection"
            }
          ],
          "published": "2026-05-20T15:32:17+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/20/datasette-agent-charts/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/20/datasette-agent-charts/#atom-everything"
          },
          "title": "datasette-agent-charts 0.1a1",
          "summary": {
            "#text": "<p><strong>Release:</strong> <a href=\"https://github.com/datasette/datasette-agent-charts/releases/tag/0.1a1\">datasette-agent-charts 0.1a1</a></p>\n        <blockquote>\n<ul>\n<li>More color! Bar and waffle charts without a color column are shaded by magnitude with a sequential color scheme; color columns holding text values use the <code>observable10</code> categorical scheme. #2</li>\n<li>Now checks <code>execute-sql</code> permission before running the query to find the column names.</li>\n<li>Charts now display interactive tooltips.</li>\n<li>Fixed a bug where <code>waffleY</code> charts were not described to the agent.</li>\n</ul>\n</blockquote>\n    \n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/datasette\">datasette</a>, <a href=\"https://simonwillison.net/tags/datasette-agent\">datasette-agent</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-20T14:52:16+00:00",
          "category": [
            {
              "@_term": "datasette"
            },
            {
              "@_term": "datasette-agent"
            }
          ],
          "published": "2026-05-20T14:52:16+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/19/llm-gemini-2/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/19/llm-gemini-2/#atom-everything"
          },
          "title": "llm-gemini 0.32",
          "summary": {
            "#text": "<p><strong>Release:</strong> <a href=\"https://github.com/simonw/llm-gemini/releases/tag/0.32\">llm-gemini 0.32</a></p>\n        <blockquote>\n<ul>\n<li>New model <code>gemini-3.5-flash</code> for <a href=\"https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-5/\">Gemini 3.5 Flash</a>.</li>\n</ul>\n</blockquote>\n<p>See also my <a href=\"https://simonwillison.net/2026/May/19/gemini-35-flash/\">notes on Gemini 3.5 Flash</a>, and <a href=\"https://simonwillison.net/2026/May/19/gemini-35-flash/#a-pelican-on-a-bicycle\">the pelican</a> I drew using this upgrade to the plugin.</p>\n    \n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/llm\">llm</a>, <a href=\"https://simonwillison.net/tags/gemini\">gemini</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-19T23:46:27+00:00",
          "category": [
            {
              "@_term": "llm"
            },
            {
              "@_term": "gemini"
            }
          ],
          "published": "2026-05-19T23:46:27+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/19/gemini-35-flash/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/19/gemini-35-flash/#atom-everything"
          },
          "title": "Gemini 3.5 Flash: more expensive, but Google plan to use it for everything",
          "summary": {
            "#text": "<p>Today at Google I/O, Google <a href=\"https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-5/\">released Gemini 3.5 Flash</a>. This one skipped the <code>-preview</code> modifier and went straight to general availability, and Google appear to be using it for a whole lot of their key products:</p>\n<blockquote>\n<p>3.5 Flash is available today to billions of people globally:</p>\n<ul>\n<li>For everyone via the Gemini app and AI Mode in <a href=\"https://blog.google/products-and-platforms/products/search/search-io-2026\">Google Search</a>\n</li>\n<li>For developers in our agent-first development platform Google Antigravity and Gemini API in Google AI Studio and Android Studio</li>\n<li>For enterprises in Gemini Enterprise Agent Platform and Gemini Enterprise.</li>\n</ul>\n</blockquote>\n<p>As usual with Gemini, the most interesting details are tucked away in the <a href=\"https://ai.google.dev/gemini-api/docs/whats-new-gemini-3.5\">What's new in Gemini 3.5 Flash</a> developer documentation. It mostly has the same set of platform features as the previous Gemini 3.x series, albeit with no <a href=\"https://ai.google.dev/gemini-api/docs/computer-use\">computer use</a>. The model ID is <code>gemini-3.5-flash</code>. The knowledge cut-off is January 2025, and it supports 1,048,576 input tokens and 65,536 maximum output tokens.</p>\n<p>Google are also pushing a new <a href=\"https://ai.google.dev/gemini-api/docs/interactions\">Interactions API</a>, currently in beta, which looks to me like their version of the patterns introduced by <a href=\"https://developers.openai.com/api/reference/responses/overview\">OpenAI Responses</a> - in particular server-side history management.</p>\n<h4 id=\"the-price-has-gone-up\">The price has gone up</h4>\n<p>Gemini 3.5 Flash is accompanied by a notable price bump. The previous models in the \"Flash\" family were <a href=\"https://ai.google.dev/gemini-api/docs/models/gemini-3-flash-preview\">Gemini 3 Flash Preview</a> and <a href=\"https://ai.google.dev/gemini-api/docs/models/gemini-3.1-flash-lite\">Gemini 3.1 Flash-Lite</a>. The new 3.5 Flash is 3x the price of 3 Flash Preview and 6x the price of 3.1 Flash-Lite (see <a href=\"https://www.llm-prices.com/#sel=gemini-3-flash-preview%2Cgemini-3.5-flash%2Cgemini-3.1-flash-lite-preview\">price comparison here</a>).</p>\n<p>At $1.50/million input and $9/million output it's getting close in price to Google's Gemini 3.1 Pro, which is $2 and $12.</p>\n<p>The Gemini team promise that 3.5 Pro will roll out \"next month\" - presumably at an even higher price.</p>\n<p>This fits a trend: OpenAI's GPT-5.5 was 2x the price of GPT-5.4, and Claude Opus 4.7 is around 1.46x the price of 4.6 when you take the <a href=\"https://simonwillison.net/2026/Apr/20/claude-token-counts/\">new tokenizer into account</a>.</p>\n<p>Given the price increase it's interesting to see Google roll it out for so many of their own free-to-consumer products. It feels like all three of the major AI labs are starting to probe the price tolerance of their API customers.</p>\n<p>Artificial Analysis publish the cost to run their proprietary benchmark against models, which is a useful way to take things like tokenization and increased volume of reasoning tokens into account. Some numbers worth comparing:</p>\n<ul>\n<li>\n<a href=\"https://artificialanalysis.ai/models/gemini-3-5-flash\">Gemini 3.5 Flash (high)</a>: $1,551.60</li>\n<li>\n<a href=\"https://artificialanalysis.ai/models/gemini-3-1-pro-preview\">Gemini 3.1 Pro Preview</a>: $892.28</li>\n<li>\n<a href=\"https://artificialanalysis.ai/models/gemini-3-flash-reasoning\">Gemini 3 Flash Preview (Reasoning)</a>: $278.26</li>\n<li>\n<a href=\"https://artificialanalysis.ai/models/gemini-3-1-flash-lite-preview\">Gemini 3.1 Flash-Lite Preview</a>: $93.60</li>\n</ul>\n<p>Running the benchmark for 3.5 Flash (high) cost significantly more than 3.1 Pro Preview!</p>\n<p>Here are some numbers from other vendors:</p>\n<ul>\n<li>\n<a href=\"https://artificialanalysis.ai/models/claude-opus-4-7\">Claude Opus 4.7 (Adaptive Reasoning, Max Effort)</a>: $5,117.14</li>\n<li>\n<a href=\"https://artificialanalysis.ai/models/claude-opus-4-7-non-reasoning\">Claude Opus 4.7 (Non-reasoning, High Effort)</a>: $1,217.23</li>\n<li>\n<a href=\"https://artificialanalysis.ai/models/gpt-5-5\">GPT-5.5 (xhigh)</a>: $3,357.00</li>\n<li>\n<a href=\"https://artificialanalysis.ai/models/gpt-5-5-medium\">GPT-5.5 (medium)</a>: $1,199.14</li>\n</ul>\n<h4 id=\"a-pelican-on-a-bicycle\">A pelican on a bicycle</h4>\n<p>I ran \"Generate an SVG of a pelican riding a bicycle\" <a href=\"https://gist.github.com/simonw/09cc5a5545d7e75b33b75ffa92a34601\">against the Gemini API</a> and got back this pelican, which is a <em>lot</em>:</p>\n<p><img src=\"https://static.simonwillison.net/static/2026/gemini-3.5-flash.png\" alt=\"Black background, bats in the sky against a stylized moon. Pelican is funky looking. Very good beak. Bicycle frame is a bit twisted, and the bar from pedals to back wheel is missing. Bike lamp illuminates the road in front. Quite stylish.\" style=\"max-width: 100%;\" /></p>\n<p>From the code comments: <code>&lt;!-- Pelican Eye / Sunglasses (Cool Retro Aviators) --&gt;</code></p>\n<p><a href=\"https://news.ycombinator.com/item?id=48196570#48198275\">hedgehog on Hacker News</a>:</p>\n<blockquote>\n<p>That pelican looks like it's in Miami for a crypto conference.</p>\n</blockquote>\n<p>That one cost me 11 input tokens and 14,403 output tokens, for a total cost of <a href=\"https://www.llm-prices.com/#it=11&amp;ot=14403&amp;sel=gemini-3.5-flash\">just under 13 cents</a>.</p>\n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/google\">google</a>, <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a>, <a href=\"https://simonwillison.net/tags/gemini\">gemini</a>, <a href=\"https://simonwillison.net/tags/llm-pricing\">llm-pricing</a>, <a href=\"https://simonwillison.net/tags/pelican-riding-a-bicycle\">pelican-riding-a-bicycle</a>, <a href=\"https://simonwillison.net/tags/llm-release\">llm-release</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-19T22:40:25+00:00",
          "category": [
            {
              "@_term": "google"
            },
            {
              "@_term": "ai"
            },
            {
              "@_term": "generative-ai"
            },
            {
              "@_term": "llms"
            },
            {
              "@_term": "gemini"
            },
            {
              "@_term": "llm-pricing"
            },
            {
              "@_term": "pelican-riding-a-bicycle"
            },
            {
              "@_term": "llm-release"
            }
          ],
          "published": "2026-05-19T22:40:25+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/19/datasette-llm-accountant/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/19/datasette-llm-accountant/#atom-everything"
          },
          "title": "datasette-llm-accountant 0.1a4",
          "summary": {
            "#text": "<p><strong>Release:</strong> <a href=\"https://github.com/datasette/datasette-llm-accountant/releases/tag/0.1a4\">datasette-llm-accountant 0.1a4</a></p>\n        <blockquote>\n<ul>\n<li>Fixed bug tracking chains of responses. Refs <a href=\"https://github.com/datasette/datasette-llm/issues/7\">datasette-llm#7</a></li>\n</ul>\n</blockquote>\n    \n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/datasette\">datasette</a>, <a href=\"https://simonwillison.net/tags/llm\">llm</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-19T20:45:43+00:00",
          "category": [
            {
              "@_term": "datasette"
            },
            {
              "@_term": "llm"
            }
          ],
          "published": "2026-05-19T20:45:43+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/19/llm-gemini/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/19/llm-gemini/#atom-everything"
          },
          "title": "llm-gemini 0.32a0",
          "summary": {
            "#text": "<p><strong>Release:</strong> <a href=\"https://github.com/simonw/llm-gemini/releases/tag/0.32a0\">llm-gemini 0.32a0</a></p>\n        <blockquote>\n<ul>\n<li>Compatible with <code>llm&gt;=0.32a0</code> alpha - adds the ability to stream reasoning tokens.</li>\n</ul>\n</blockquote>\n    \n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/llm\">llm</a>, <a href=\"https://simonwillison.net/tags/gemini\">gemini</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-19T20:36:23+00:00",
          "category": [
            {
              "@_term": "llm"
            },
            {
              "@_term": "gemini"
            }
          ],
          "published": "2026-05-19T20:36:23+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/19/datasette-llm/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/19/datasette-llm/#atom-everything"
          },
          "title": "datasette-llm 0.1a8",
          "summary": {
            "#text": "<p><strong>Release:</strong> <a href=\"https://github.com/datasette/datasette-llm/releases/tag/0.1a8\">datasette-llm 0.1a8</a></p>\n        <blockquote>\n<ul>\n<li>Fix for bug where <code>llm_prompt_context()</code> hook did not fully collect chains of responses. #7</li>\n</ul>\n</blockquote>",
            "@_type": "html"
          },
          "updated": "2026-05-19T20:28:16+00:00",
          "published": "2026-05-19T20:28:16+00:00"
        },
        {
          "id": "https://simonwillison.net/2026/May/19/5-minute-llms/#atom-everything",
          "link": {
            "@_rel": "alternate",
            "@_href": "https://simonwillison.net/2026/May/19/5-minute-llms/#atom-everything"
          },
          "title": "The last six months in LLMs in five minutes",
          "summary": {
            "#text": "<p>I put together these annotated slides from my five minute lightning talk at PyCon US 2026, using the <a href=\"https://tools.simonwillison.net/annotated-presentations\">latest iteration</a> of my <a href=\"https://simonwillison.net/2023/Aug/6/annotated-presentations/\">annotated presentation tool</a>.</p>\n\n<div class=\"slide\" id=\"5-minutes-llms.001.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.001.jpeg\" alt=\"The last six months in LLMs in\nfive minutes\n\nSimon Willison - simonwillison.net\n\nPyCon US 2026 Lightning Talk\n\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.001.jpeg\">#</a>\n  <p>I presented this lightning talk at PyCon US 2026, attempting to summarize the last six months of developments in LLMs in five minutes.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.002.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.002.jpeg\" alt=\"The November inflection point\n\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.002.jpeg\">#</a>\n  <p>Six months is a pretty convenient time period to cover, because it captures what I've been calling the <a href=\"https://simonwillison.net/tags/november-2025-inflection/\">November 2025 inflection point</a>. November was a critical month in LLMs, especially for coding.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.003.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.003.jpeg\" alt=\"The “best” model changed hands 5 times\nbetween Anthropic, OpenAl and Google\n\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.003.jpeg\">#</a>\n  <p>For one thing, the supposedly \"best\" model (depending mostly on vibes) changed hands five times between the three big providers.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.004.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.004.jpeg\" alt=\"Generate an SVG of a\npelican riding a bicycle\n\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.004.jpeg\">#</a>\n  <p>As always, I'm using my <a href=\"https://simonwillison.net/tags/pelican-riding-a-bicycle/\">Generate an SVG of a pelican riding a bicycle</a> test to help illustrate the differences between the models.</p>\n<p>Why this test? Because pelicans are hard to draw, bicycles are hard to draw, pelicans <em>can't ride bicycles</em>... and there's zero chance any AI lab would train a model for such a ridiculous task.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.005.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.005.jpeg\" alt=\"Five pelicans, one for each of the following models. Varying qualities!\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.005.jpeg\">#</a>\n  <p>At the start of November the widely acknowledged \"best\" model was Claude Sonnet 4.5, released on <a href=\"https://simonwillison.net/2025/Sep/29/claude-sonnet-4-5/\">29th September</a>. It drew me this pelican.</p>\n<p>In November it was overtaken by <a href=\"https://simonwillison.net/2025/Nov/13/gpt-51/\">GPT-5.1</a>, then <a href=\"https://simonwillison.net/2025/Nov/18/gemini-3/\">Gemini 3</a>, then <a href=\"https://simonwillison.net/2025/Nov/19/gpt-51-codex-max/\">GPT-5.1 Codex Max</a>, and then Anthropic took the crown back again with <a href=\"https://simonwillison.net/2025/Nov/24/claude-opus/\">Claude Opus 4.5</a>.</p>\n<p>I think Gemini 3 drew the best pelican out of this lot, but pelicans aren't everything. Most practitioners will agree that Opus 4.5 held the crown for the next couple of months.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.006.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.006.jpeg\" alt=\"The coding agents got good\n\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.006.jpeg\">#</a>\n  <p>It took a little while for this to become clear, but the real news from November was that the coding agents got <em>good</em>.</p>\n<p>OpenAI and Anthropic had spent most of 2025 running <a href=\"https://simonwillison.net/2025/Dec/19/andrej-karpathy/\">Reinforcement Learning from Verifiable Rewards</a> to increase the quality of code written by their models, especially when paired up with their Codex and Claude Code agent harnesses.</p>\n<p>In November the results of this work became apparent. Coding agents went from often-work to mostly-work, crossing a quality barrier where you could use them as a daily-driver to get real work done, without needing to spend most of your time fixing their stupid mistakes.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.007.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.007.jpeg\" alt=\"Screenshot of &quot;Initial commit&quot; on GitHub to steipete/Warelay, commit f6dd362, steipete authored on Nov 24, 2025\n\nIt&#39;s a copy of the MIT license\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.007.jpeg\">#</a>\n  <p>Also in November, this happened - the first commit to an obscure (back then) repo called \"Warelay\" by some guy called Pete.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.008.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.008.jpeg\" alt=\"December/January\n(A little bit of LLM psychosis)\n\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.008.jpeg\">#</a>\n  <p>Over the holiday period, from December to January, a whole lot of us took advantage of the break to have a poke at these new models and coding agents and see what they could do.</p>\n<p>They could do a lot! Some of us got a little bit over-excited. I had my own short-lived bout of a form of LLM psychosis as I started spinning up wildly ambitious projects to see how far I could push them.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.009.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.009.jpeg\" alt=\"micro-javascript playground\nExecute JavaScript code in a sandboxed micro-javascript environment powered by Pyodide\n\nvar numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar doubled = numbers.map(n =&gt; n * 2);\nconsole.log(&#39;Doubled: &quot;&#39;, doubled);\nvar evens = numbers.filter(n =&gt; n % 2 === 0);\nconsole.log(&#39;Evens: &#39;, evens);\nvar sum = numbers.reduce((a, b) =&gt; a + b, @);\nconsole.log(&#39;Sum:&quot;, sum);\n\nOutput 27\nDoubled: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]\nEvens: [2, 4, 6, 8, 10]\nSum: 55\nExecution time: 8.00ms\nAbout: micro-javascript is a pure Python JavaScript interpreter with configurable memory and time limits. This playground runs entirely in your browser using\nPyodide (Python compiled to WebAssembly). View on GitHub\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.009.jpeg\">#</a>\n  <p>One of my projects was a vibe-coded implementation of JavaScript in Python - a loose port of <a href=\"https://github.com/bellard/mquickjs\">MicroQuickJS</a> - which I called <a href=\"https://github.com/simonw/micro-javascript\">micro-javascript</a>. You can try it out in your browser in <a href=\"https://simonw.github.io/micro-javascript/playground.html\">this playground</a>.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.010.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.010.jpeg\" alt=\"JavaScript running in Python running in Pyodide running in WebAssembly running in JavaScript\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.010.jpeg\">#</a>\n  <p>That playground demo shows JavaScript code run using my micro-javascript library, in Python, running inside Pyodide, running in WebAssembly, running in JavaScript, running in a browser!</p>\n<p>It's pretty cool! But did anyone out there <em>need</em> a buggy, slow, insecure half-baked implementation of JavaScript in Python?</p>\n<p>They did not. I have quite a few other projects from that holiday period that I have since quietly retired!</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.011.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.011.jpeg\" alt=\"February 2026\n\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.011.jpeg\">#</a>\n  <p>On to February. Remember that Warelay project that had its first commit at the end of November?</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.012.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.012.jpeg\" alt=\"Warelay → CLAWDIS → CLAWDBOT →\nClawdbot → Moltbot →🦞 OpenClaw\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.012.jpeg\">#</a>\n  <p>In December and January it had gone through <a href=\"https://simonwillison.net/2026/May/16/openclaw-names/\">quite a few name changes</a>... and by February it was taking the world by storm under its final name, <a href=\"https://openclaw.ai/\">OpenClaw</a>.</p>\n<p>The amount of attention it got is pretty astonishing for a project that was less than three months old.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.013.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.013.jpeg\" alt=\"Generic term: Claw\n\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.013.jpeg\">#</a>\n  <p>OpenClaw is a \"personal AI assistant\", and we actually got a generic term for these, based on NanoClaw and ZeroClaw and suchlike... they're called <strong>Claws</strong>.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.014.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.014.jpeg\" alt=\"An aquarium for your Claw\n\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.014.jpeg\">#</a>\n  <p>Mac Minis started to sell out around Silicon Valley, because people were buying them to run their Claws.</p>\n<p><a href=\"https://www.dbreunig.com/\">Drew Breunig</a> joked to me that this is because they're the new digital pets, and a Mac Mini is the perfect aquarium for your Claw.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.015.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.015.jpeg\" alt=\"Alfred Molina&#39;s Doc Ock in Spider-Man 2, tearing apart a New York subway train with his four claws.\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.015.jpeg\">#</a>\n  <p>My favourite metaphor for Claws is Alfred Molina's Doc Ock in the 2004 movie Spider-Man 2. His claws were powered by AI, and were perfectly safe provided nothing damaged his inhibitor chip... after which they turned evil and took over.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.016.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.016.jpeg\" alt=\"Gemini 3.1 Pro\n\nA really good illustration of a pelican riding a bicycle.\n\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.016.jpeg\">#</a>\n  <p>Also in February: Gemini 3.1 Pro came out, and drew me a <em>really good pelican riding a bicycle</em>. Look at this! It's even got a fish in its basket.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.017.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.017.jpeg\" alt=\"Gemini 3 Pro pelican contrasted with Gemini 3.1 Pro, as animated SVGs\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.017.jpeg\">#</a>\n  <p>And then Google's Jeff Dean <a href=\"https://simonwillison.net/2026/Feb/19/gemini-31-pro/#jeff-dean\">tweeted this video</a> of an animated pelican riding a bicycle, plus a frog on a penny-farthing and a giraffe driving a tiny car and an ostrich on roller skates and a turtle kickflipping a skateboard and a dachshund driving a stretch limousine.</p>\n<p>So maybe the AI labs have been paying attention after all!</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.018.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.018.jpeg\" alt=\"April 2026\n\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.018.jpeg\">#</a>\n  <p>A lot of stuff happened just in the past month.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.019.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.019.jpeg\" alt=\"Gemma 4 26B-A4B (17.99GB)\n\nA pretty decent pelican riding a bicycle, though the bike is a bit mis-shapen.\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.019.jpeg\">#</a>\n  <p>Google released the <a href=\"https://simonwillison.net/2026/Apr/2/gemma-4/\">Gemma 4</a> series of models, which are the most capable open weight models I've seen from a US company.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.020.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.020.jpeg\" alt=\"GLM-5.1\nMIT, 754B parameter, 1.51TB!\n\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.020.jpeg\">#</a>\n  <p>Also last month, Chinese AI lab GLM came out with <a href=\"https://simonwillison.net/2026/Apr/7/glm-51/\">GLM-5.1</a> - an open weight 1.5TB monster! This is a very effective model... if you can afford the hardware to run it.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.021.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.021.jpeg\" alt=\"\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.021.jpeg\">#</a>\n  <p>GLM-5.1 drew me this very competent pelican on a bicycle.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.022.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.022.jpeg\" alt=\"The bike is wonky, the pelican is floating.\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.022.jpeg\">#</a>\n  <p>... though when it <a href=\"https://gisthost.github.io/?73bb6808b18c2482f66e5f082c75f36e\">tried to animate it</a> the bicycle bounced off into the top and the bicycle got warped.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.023.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.023.jpeg\" alt=\"Screenshot of Bluesky\n\nCharles\n‪@charles.capps.me‬\nI think you should pester it with another animal using another method of locomotion. \n\nSomething tells me it was trained for this. I can&#39;t quite put my finger on it. /s\n\nNORTH VIRGINIA OPOSSUM ON AN E-SCOOTER!!\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.023.jpeg\">#</a>\n  <p>Charles <a href=\"https://bsky.app/profile/charles.capps.me/post/3miwrn42mjc2t\">on Bluesky</a> suggested I try it with a North Virginia Opossum on an E-scooter</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.024.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.024.jpeg\" alt=\"NORTH VIRGINIA OPOSSUM\nCRUISING THE COMMONWEALTH SINCE DUSK\n\nAnd a really cool illustration of a possum.\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.024.jpeg\">#</a>\n  <p>And it did this! I've tried this on other models and they don't even come close. \"Cruising the commonwealth since dusk\" is perfect. It's <a href=\"https://static.simonwillison.net/static/2026/glm-possum-escooter.html\">animated too</a>.</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.025.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.025.jpeg\" alt=\"Qwen3.6-35B-A3B is a 20.9GB file that runs on my laptop\n\nIt drew a better pelican on a bicycle than Opus 4.7, which messed up the bicycle frame.\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.025.jpeg\">#</a>\n  <p>The other neat Chinese open weight models in April came from Qwen. <a href=\"https://simonwillison.net/2026/Apr/16/qwen-beats-opus/\">Qwen3.6-35B-A3B on my laptop drew me a better pelican than Claude Opus 4.7</a>. That's a 20.9GB open weights model that runs on my laptop!</p>\n<p>(I think this mainly demonstrates that the pelican on the bicycle has firmly exceeded its limits as a useful benchmark.)</p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.026.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.026.jpeg\" alt=\"Claude Sonnet 4.5 pelican for comparison.\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.026.jpeg\">#</a>\n  <p>Here's that Claude Sonnet 4.5 pelican from September for comparison. </p>\n  </div>\n</div>\n<div class=\"slide\" id=\"5-minutes-llms.027.jpeg\">\n  <img loading=\"lazy\" src=\"https://static.simonwillison.net/static/2026/5-minutes-llms/5-minutes-llms.027.jpeg\" alt=\"The themes of the past 6 months:\nCoding agents got really good\nLocal models wildly outperform expectations\n\" style=\"max-width: 100%\" />\n  <div><a style=\"float: right; text-decoration: none; border-bottom: none; padding-left: 1em;\" href=\"https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.027.jpeg\">#</a>\n  <p>So those were the two main themes of the past six months. The coding agents got really good... and the laptop-available models, while a lot weaker than the frontier, have started wildly outperforming expectations.</p>\n  </div>\n</div>\n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/lightning-talks\">lightning-talks</a>, <a href=\"https://simonwillison.net/tags/pycon\">pycon</a>, <a href=\"https://simonwillison.net/tags/speaking\">speaking</a>, <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/local-llms\">local-llms</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a>, <a href=\"https://simonwillison.net/tags/annotated-talks\">annotated-talks</a>, <a href=\"https://simonwillison.net/tags/pelican-riding-a-bicycle\">pelican-riding-a-bicycle</a>, <a href=\"https://simonwillison.net/tags/coding-agents\">coding-agents</a></p>",
            "@_type": "html"
          },
          "updated": "2026-05-19T01:09:44+00:00",
          "category": [
            {
              "@_term": "lightning-talks"
            },
            {
              "@_term": "pycon"
            },
            {
              "@_term": "speaking"
            },
            {
              "@_term": "ai"
            },
            {
              "@_term": "generative-ai"
            },
            {
              "@_term": "local-llms"
            },
            {
              "@_term": "llms"
            },
            {
              "@_term": "annotated-talks"
            },
            {
              "@_term": "pelican-riding-a-bicycle"
            },
            {
              "@_term": "coding-agents"
            }
          ],
          "published": "2026-05-19T01:09:44+00:00"
        }
      ],
      "title": "Simon Willison's Weblog",
      "author": {
        "name": "Simon Willison"
      },
      "@_xmlns": "http://www.w3.org/2005/Atom",
      "updated": "2026-05-27T16:38:35+00:00",
      "@_xml:lang": "en-us"
    }
  },
  "entry_raw": {
    "id": "https://simonwillison.net/2026/May/27/product-market-fit/#atom-everything",
    "link": {
      "@_rel": "alternate",
      "@_href": "https://simonwillison.net/2026/May/27/product-market-fit/#atom-everything"
    },
    "title": "I think Anthropic and OpenAI have found product-market fit",
    "summary": {
      "#text": "<p>Anthropic are <a href=\"https://techcrunch.com/2026/05/20/anthropic-says-its-about-to-have-its-first-profitable-quarter/\">strongly rumored</a> to be about to have their first profitable quarter. Stories <a href=\"https://www.theinformation.com/newsletters/applied-ai/uber-cto-shows-claude-code-can-blow-ai-budgets\">are circulating</a> of companies surprised at how expensive their LLM bills are becoming from usage by their staff. I think this is because OpenAI and Anthropic have both found product-market fit.</p>\n\n<ul>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#enterprise-customers-are-now-paying-api-prices\">Enterprise customers are now paying API prices</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#i-think-they-ve-found-product-market-fit\">I think they've found product-market fit</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#and-they-re-ramping-up\">And they're ramping up</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#the-ai-failure-stories-around-this-are-pretty-thin\">The AI-failure stories around this are pretty thin</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#we-also-know-the-labs-are-spending-a-lot\">We also know the labs are spending a lot</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#api-revenue-is-becoming-less-important\">API revenue is becoming less important</a></li>\n  <li><a href=\"https://simonwillison.net/2026/May/27/product-market-fit/#april-is-a-new-inflection-point\">April is a new inflection point</a></li>\n</ul>\n\n<h4 id=\"enterprise-customers-are-now-paying-api-prices\">Enterprise customers are now paying API prices</h4>\n<p>I currently subscribe to the $100/month Max plan from Anthropic and the $100/month Pro plan from OpenAI. If you are a heavy user of coding agents these plans are a fantastic deal. I just ran the <a href=\"https://github.com/ryoppippi/ccusage\">ccusage</a> tool on my laptop to get an estimate of how much I would have spent if I were to pay for API tokens in the past 30 days and got:</p>\n<ul>\n<li>$1,199.79 for Anthropic Claude Code</li>\n<li>$980.37 for OpenAI Codex</li>\n</ul>\n<p>That's $2,180.16 worth of tokens for $200 - not bad at all! I'm a moderately heavy user of these tools, but I'm certainly not running agents every hour of the day and night.</p>\n<p>I had assumed that companies making extensive use of agents were getting similar discounts. It turns out I <em>could not have been more wrong</em> about that.</p>\n<p>I haven't been able to track down the exact date, but at some point in the last six months Anthropic switched their Enterprise plan (originally <a href=\"https://www.anthropic.com/news/claude-code-on-team-and-enterprise\">\"Claude seats include enough usage for a typical workday\" back in August 2025</a>) to $20/seat/month plus API pricing for usage. This story about the change <a href=\"https://www.theinformation.com/articles/anthropic-changes-pricing-bill-firms-based-ai-use-amid-compute-crunch\">from The Information</a> is dated Apr 14, 2026, but cites an Anthropic spokesperson claiming that the pricing change occurred in November 2025. Existing customers are finding out about the change as they renew their contracts.</p>\n<p>OpenAI made a similar pricing change in April. The <a href=\"https://help.openai.com/en/articles/20001106-codex-rate-card\">Codex rate card</a> (<a href=\"https://web.archive.org/web/20260519062438/https://help.openai.com/en/articles/20001106-codex-rate-card\">Internet Archive copy</a>) currently says:</p>\n<blockquote>\n<p><strong>Note</strong>: On April 2, 2026, we updated Codex pricing to align with API token usage, instead of per-message pricing. This change was applicable to new and existing Plus, Pro, ChatGPT Business and new ChatGPT Enterprise plans.</p>\n<p>On April 23, 2026, we made this update for all existing ChatGPT Enterprise plans as well, inclusive of Edu, Health, Gov, and ChatGPT for Teachers.</p>\n</blockquote>\n<p>It's a little harder to decode as they quote prices in \"credits\", but as far as I can tell those credit costs are an exact match for the API token costs listed for those models.</p>\n<p>All of which is to say that as of April 2026 the \"Enterprise\" cost for both OpenAI Codex and Anthropic Claude Code/Cowork is the same as the listed API price.</p>\n<p>GPT-5.5 (released April 23rd) is 2x the API price of GPT-5.4. Opus 4.7 (April 16th) is <a href=\"https://simonwillison.net/2026/Apr/20/claude-token-counts/\">around 1.4x</a> the price of Opus 4.6 when you take their new tokenizer into account.</p>\n<p>So April saw both leading model companies release new frontier models with a higher API price, <em>and</em> both companies now have measures to lock their enterprise customers (who tend to sign year-long deals) at those API prices, not the previous extreme discounts.</p>\n<h4 id=\"i-think-they-ve-found-product-market-fit\">I think they've found product-market fit</h4>\n<p>Why these sudden aggressive moves on pricing? Both Anthropic and OpenAI are planning to IPO, but I suspect there's a more important factor here: I think they've finally found product-market fit, with the coding/general-purpose agent products embodied by Claude Code/Cowork and Codex.</p>\n<p>Tools like ChatGPT are wildly popular, but that wild popularity has been difficult to turn into revenue. In February <a href=\"https://finance.yahoo.com/news/chatgpt-almost-1-billion-weekly-212157499.html\">OpenAI boasted</a> more than 900 million weekly active users for ChatGPT, but only 50 million - 5.6% of that - were paying consumer subscribers.</p>\n<p>Charging $10-$20/month per user is an OK business, but you'd need 1-2 billion subscribers sticking around for four years to cover <a href=\"https://openai.com/global-affairs/seizing-the-ai-opportunity/\">$1 trillion in infrastructure</a>.</p>\n<p>Companies spending $200+/month/user will get you there a whole lot faster - and as noted above, as a power-user I'm at ~$1,000/month in API costs per vendor already.</p>\n<p>Coding agents really did change everything. These are tools which burn <em>vastly</em> more tokens, but are also quickly becoming daily drivers for the work carried out by extremely well-compensated professionals. Right now that's still mostly software engineers, but a coding agent is a tool that can automate anything you can do by typing commands into a computer... so they are clearly applicable to a much wider set of skilled knowledge workers.</p>\n<p>As I've <a href=\"https://simonwillison.net/tags/november-2025-inflection/\">discussed on this site at length</a>, the models released in November 2025 elevated agents to being genuinely useful. We've had six months to get used to that idea now - it's no wonder companies are beginning to spend real money on this technology.</p>\n<p>You could argue that ChatGPT achieved product-market fit when it became the <a href=\"https://www.reuters.com/technology/chatgpt-sets-record-fastest-growing-user-base-analyst-note-2023-02-01/\">fastest-growing consumer app in history</a> back in February 2023... but it certainly wasn't making any actual money back then. Coding agents plus enterprise pricing marks the point when these companies start making <em>very</em> real revenue. Maybe even enough to start covering their costs!</p>\n<h4 id=\"and-they-re-ramping-up\">And they're ramping up</h4>\n<p>As further evidence that enterprise agents represent product-market fit for these companies, consider their open job listings.</p>\n<p>OpenAI have <a href=\"https://openai.com/careers/search/\">703 open jobs</a> right now, of which I'd categorize 229 (32.6%) as relating to enterprise sales and support - account executives, \"Go To Market\", \"Forward Deployed Engineers\" and the like.</p>\n<p>Anthropic have <a href=\"https://www.anthropic.com/careers/jobs\">390 open jobs</a>, 105 (26.9%) of which look enterprisey to me.</p>\n<p>It's pleasingly ironic that these AI labs have picked a business model with such a heavy demand on human labor - enterprise sales contracts don't close themselves without a whole lot of humans in the mix!</p>\n<p><small>(I ran this analysis by scraping their job sites with Claude Code, then having it use Datasette's <a href=\"https://docs.datasette.io/en/latest/json_api.html\">JSON API</a> to pipe that data into Datasette Cloud where I used <a href=\"https://agent.datasette.io/\">Datasette Agent</a> for the analysis, <a href=\"https://gist.github.com/simonw/5632d208d76b3c8b34f1fdbaf69eb1b8#agent-4\">exported here</a>. Dogfood!)</small></p>\n<h4 id=\"the-ai-failure-stories-around-this-are-pretty-thin\">The AI-failure stories around this are pretty thin</h4>\n<p>I started digging into this in response to <a href=\"https://news.ycombinator.com/item?id=48287025#48287219\">a growing volume</a> of stories claiming that large companies were sounding the alarm because their AI usage costs had grown so large.</p>\n<p>The most widely cited of these stories appear quite overblown to me.</p>\n<p>The most discussed has been Uber, based on <a href=\"https://www.theinformation.com/newsletters/applied-ai/uber-cto-shows-claude-code-can-blow-ai-budgets\">this report</a> where CTO Praveen Neppalli Naga indicated that Uber had \"maxed out its full year AI budget just a few months into 2026\", mostly thanks to Claude Code.</p>\n<p>Given that Claude Code only got <em>really</em> good in November it's entirely unsurprising to me that a budget set in 2025 may have failed to predict demand for that tool in 2026!</p>\n<p>That Uber story was further fueled by comments made by Uber's COO, Andrew Macdonald, on the Rapid Response podcast. I tracked down <a href=\"https://www.youtube.com/watch?v=y_mQ6xLcKyc&amp;t=1616s\">the segment</a> and there really isn't much there. Here's what Andrew said:</p>\n<blockquote>\n<p>But then you sometimes go and talk to your senior engineering leaders and you're saying, OK, how many projects that were on the cutting room floor got moved above the line because of the productivity gains because 25% of our code commits were via Claude Code last quarter?</p>\n<p>That link is not there yet, right? I think maybe implicitly there's more that is getting shipped. But it's very hard to draw a line between one of those stats and, OK, now we're actually producing like 25% more useful consumer features, right? And that line is hard to draw.</p>\n</blockquote>\n<p>Somehow this fragment turned into headlines like <a href=\"https://www.businessinsider.com/uber-coo-andrew-macdonald-ai-token-spending-harder-justify-2026-5\">Uber's COO says it's getting harder to justify the money spent on AI tokenmaxxing</a>, because the market for stories about AI failures remains enormous.</p>\n<p>The other popular story around this is <a href=\"https://www.theverge.com/tech/930447/microsoft-claude-code-discontinued-notepad\">Microsoft starts canceling Claude Code licenses</a>, ostensibly to encourage their engineers to dogfood their own Copilot CLI agent instead - but The Verge reporter Tom Warren says \"sources tell me the decision is also a financial one\", triggered by the June 30th end of Microsoft's financial year.</p>\n<p>I think both of these stories support my \"product-market fit\" hypothesis. The best advice I ever heard on pricing a product was that your customer should <em>suck air through their teeth</em> and then say yes. Uber's budget overrun and Microsoft's seat cancellations look like that effect playing out in practice.</p>\n<h4 id=\"we-also-know-the-labs-are-spending-a-lot\">We also know the labs are spending a lot</h4>\n<p>The big AI labs spend billions of dollars on both training and inference. Credible figures are hard to come by, but we did get one huge hint as to the figures involved from, oddly enough, the recent <a href=\"https://www.sec.gov/Archives/edgar/data/1181412/000162828026036936/spaceexplorationtechnologi.htm\">SpaceX S-1</a>:</p>\n<blockquote>\n<p>[...] in May 2026, we entered into <strong>Cloud Services Agreements with Anthropic PBC</strong> (“Anthropic”), an AI research and development public benefit corporation, with respect to access to <strong>compute capacity across COLOSSUS and COLOSSUS II</strong>. Pursuant to these agreements, the customer <strong>has agreed to pay us $1.25 billion per month</strong> through May 2029 [...]</p>\n</blockquote>\n<p>The <a href=\"https://www.anthropic.com/news/higher-limits-spacex\">Anthropic announcement</a> said that this deal meant they could \"increase our usage limits for Claude Code and the Claude API\", heavily implying that Colossus is being used for inference, not model training.</p>\n<p>Anthropic already have vast amounts of compute from other providers. The fact that they're willing to spend $1.25 billion per month for extra capacity from just <em>one</em> of their vendors hints at how big these inference budgets have become.</p>\n<h4 id=\"api-revenue-is-becoming-less-important\">API revenue is becoming less important</h4>\n<p>Over the past two years my impression has been that OpenAI made more of their income from subscription revenue while Anthropic made more from their API.</p>\n<p>Anthropic's API revenue was historically quite dependent on a small number of large API customers - <a href=\"https://venturebeat.com/ai/anthropic-revenue-tied-to-two-customers-as-ai-pricing-war-threatens-margins\">this VentureBeat story from August 2025</a> quotes \"sources familiar with the matter\" suggesting that just Cursor and GitHub Copilot were responsible for $1.2 billion of the company's then-$4 billion revenue.</p>\n<p>Today Anthropic are rumored to hit <a href=\"https://www.wsj.com/tech/ai/mind-blowing-growth-is-about-to-propel-anthropic-into-its-first-profitable-quarter-7edbf2f4\">$10.9 billion in the second quarter</a>, potentially even operating at a profit for the first time.</p>\n<p>This pivot-to-Enterprise suggests that the labs have realized that the real money lies in cutting out the middlemen. Anthropic's Claude Code directly competes with Cursor and Copilot. No wonder Cursor are <a href=\"https://cursor.com/blog/composer-2\">investing in their own models</a>!</p>\n<h4 id=\"april-is-a-new-inflection-point\">April is a new inflection point</h4>\n<p>I've called November 2025 the <a href=\"https://simonwillison.net/tags/november-2025-inflection/\">November inflection point</a> because that was when GPT-5.1 and Opus 4.5, combined with their respective coding agent harnesses, got <em>good</em> - good enough that we've spent the last six months adapting to agent systems that can reliably get useful work done.</p>\n<p>I think April 2026 is a new inflection point where the revenue implications of this have started to land, to the benefit of the frontier AI labs and with material impacts on the budgets of large companies.</p>\n<p>We'll know for sure how real this moment is when the S-1 documents for the upcoming Anthropic and OpenAI IPOs give us some real, audited numbers to get our teeth into.</p>\n    \n        <p>Tags: <a href=\"https://simonwillison.net/tags/ai\">ai</a>, <a href=\"https://simonwillison.net/tags/datasette\">datasette</a>, <a href=\"https://simonwillison.net/tags/openai\">openai</a>, <a href=\"https://simonwillison.net/tags/generative-ai\">generative-ai</a>, <a href=\"https://simonwillison.net/tags/llms\">llms</a>, <a href=\"https://simonwillison.net/tags/anthropic\">anthropic</a>, <a href=\"https://simonwillison.net/tags/llm-pricing\">llm-pricing</a>, <a href=\"https://simonwillison.net/tags/coding-agents\">coding-agents</a>, <a href=\"https://simonwillison.net/tags/claude-code\">claude-code</a>, <a href=\"https://simonwillison.net/tags/codex\">codex</a>, <a href=\"https://simonwillison.net/tags/claude-cowork\">claude-cowork</a>, <a href=\"https://simonwillison.net/tags/november-2025-inflection\">november-2025-inflection</a>, <a href=\"https://simonwillison.net/tags/datasette-agent\">datasette-agent</a></p>",
      "@_type": "html"
    },
    "updated": "2026-05-27T16:38:35+00:00",
    "category": [
      {
        "@_term": "ai"
      },
      {
        "@_term": "datasette"
      },
      {
        "@_term": "openai"
      },
      {
        "@_term": "generative-ai"
      },
      {
        "@_term": "llms"
      },
      {
        "@_term": "anthropic"
      },
      {
        "@_term": "llm-pricing"
      },
      {
        "@_term": "coding-agents"
      },
      {
        "@_term": "claude-code"
      },
      {
        "@_term": "codex"
      },
      {
        "@_term": "claude-cowork"
      },
      {
        "@_term": "november-2025-inflection"
      },
      {
        "@_term": "datasette-agent"
      }
    ],
    "published": "2026-05-27T16:38:35+00:00"
  },
  "stats_raw": {
    "published_at": "2026-05-27T16:38:35.000Z",
    "categories_count": 13,
    "content_excerpt_length": 373
  },
  "aux_raw": {
    "author": null,
    "categories": [
      "ai",
      "datasette",
      "openai",
      "generative-ai",
      "llms",
      "anthropic",
      "llm-pricing",
      "coding-agents",
      "claude-code",
      "codex",
      "claude-cowork",
      "november-2025-inflection",
      "datasette-agent"
    ],
    "feed_title": "Simon Willison's Weblog",
    "raw_excerpt": "Anthropic are strongly rumored to be about to have their first profitable quarter. Stories are circulating of companies surprised at how expensive their LLM bills are becoming from usage by their staff. I think this is because OpenAI and Anthropic have both found product-market fit. Enterprise customers are now paying API prices I think they've found product-market fit And they're ramping up The AI-failure stories around this are pretty thin We also know the labs are spending a lot API revenue is becoming less important April is a new inflection point Enterprise customers are now paying API prices I currently subscribe to the $100/month Max plan from Anthropic and the $100/month Pro plan from OpenAI. If you are a heavy user of coding agents these plans are a fantastic deal. I just ran the ",
    "feed_site_url": "http://simonwillison.net/",
    "content_excerpt": "Anthropic are strongly rumored to be about to have their first profitable quarter. Stories are circulating of companies surprised at how expensive their LLM bills are becoming from usage by their staff. I think this is because OpenAI and Anthropic have both found product-market fit. If you are a heavy user of coding agents these plans are a fantastic deal. I just ran the",
    "feed_description": null
  },
  "selection_meta": {
    "feed_id": "simon_willison",
    "feed_priority": 8,
    "lookback_days": 7,
    "snapshot_version": "newsletter_rss_entry_v1",
    "max_items_per_feed": 5,
    "max_normalized_items": 40
  },
  "created_at": "2026-05-27T22:02:07.065Z",
  "updated_at": "2026-05-27T22:02:07.065Z"
}