<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: Blogmarks</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/atom/links/" rel="self"/><id>http://simonwillison.net/</id><updated>2026-05-22T04:48:32+00:00</updated><author><name>Simon Willison</name></author><entry><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</title><link href="https://simonwillison.net/2026/May/22/ftc-active-listening/#atom-blogmarks" rel="alternate"/><published>2026-05-22T04:48:32+00:00</published><updated>2026-05-22T04:48:32+00:00</updated><id>https://simonwillison.net/2026/May/22/ftc-active-listening/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;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"&gt;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&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Back in 2024 Cox Media Group were caught trying to sell advertisers packages based on "active listening", with &lt;a href="https://www.documentcloud.org/documents/25051283-cmg-pitch-deck-on-voice-data-advertising-active-listening/"&gt;this deck&lt;/a&gt; which claimed:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Smart devices capture real-time intent data by listening to our conversations&lt;/li&gt;
&lt;li&gt;Advertisers can pair this voice-data with behavioral data to target in-market consumers&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;I wrote about this &lt;a href="https://simonwillison.net/2024/Sep/2/facebook-cmg/"&gt;in September 2024&lt;/a&gt;. My theory:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I think &lt;strong&gt;active listening&lt;/strong&gt; 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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This FTC press release appears to confirm that's pretty much what happened:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;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 [...]&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;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":&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Attempting to myth bust &lt;a href="https://simonwillison.net/tags/microphone-ads-conspiracy/"&gt;the conspiracy theory&lt;/a&gt; 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.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/nydiatisdale/status/2057657844321705993"&gt;@nydiatisdale&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/privacy"&gt;privacy&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/microphone-ads-conspiracy"&gt;microphone-ads-conspiracy&lt;/a&gt;&lt;/p&gt;

</summary><category term="privacy"/><category term="microphone-ads-conspiracy"/></entry><entry><title>How fast is 10 tokens per second really?</title><link href="https://simonwillison.net/2026/May/20/tokens-per-second/#atom-blogmarks" rel="alternate"/><published>2026-05-20T17:57:45+00:00</published><updated>2026-05-20T17:57:45+00:00</updated><id>https://simonwillison.net/2026/May/20/tokens-per-second/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://mikeveerman.github.io/tokenspeed/"&gt;How fast is 10 tokens per second really?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Neat little HTML app by Mike Veerman (&lt;a href="https://github.com/MikeVeerman/tokenspeed/blob/master/index.html"&gt;source code here&lt;/a&gt;) which simulates LLM token output speeds from 5/second to 800/second.&lt;/p&gt;
&lt;p&gt;Useful if you see a model advertised as "30 tokens/second" and want to get a feel for what that actually looks like.

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


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

</summary><category term="ai"/><category term="generative-ai"/><category term="llms"/></entry><entry><title>GDS weighs in on the NHS's decision to retreat from Open Source</title><link href="https://simonwillison.net/2026/May/17/gds-weighs-in/#atom-blogmarks" rel="alternate"/><published>2026-05-17T15:59:41+00:00</published><updated>2026-05-17T15:59:41+00:00</updated><id>https://simonwillison.net/2026/May/17/gds-weighs-in/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://shkspr.mobi/blog/2026/05/gds-weighs-in-on-the-nhss-decision-to-retreat-from-open-source/"&gt;GDS weighs in on the NHS&amp;#x27;s decision to retreat from Open Source&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Terence Eden continues his coverage of the NHS' &lt;a href="https://shkspr.mobi/blog/2026/05/nhs-goes-to-war-against-open-source/"&gt;poorly considered decision&lt;/a&gt; to close down access to their open source repositories in response to vulnerabilities reported to them as part of &lt;a href="https://simonwillison.net/2026/Apr/7/project-glasswing/"&gt;Project Glasswing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now the Government Digital Service have joined the conversation with &lt;a href="https://www.gov.uk/guidance/ai-open-code-and-vulnerability-risk-in-the-public-sector"&gt;AI, open code and vulnerability risk in the public sector&lt;/a&gt;, published May 14th. Their key recommendation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Keep open by default. Making everything private adds additional delivery and policy costs, and can reduce reuse and scrutiny. Openness should remain the default posture, with closure used sparingly and deliberately. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;While they don't mention the NHS by name, Terence speaks the language of the civil service and interprets this as a major escalation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Within the UK's Civil Service you occasionally hear the expression "being invited to a meeting &lt;em&gt;without biscuits&lt;/em&gt;". It implies a rather frosty discussion without any of the polite niceties of a normal meeting. In general though, even when people have severe disagreements, it is rare for tempers to fray. It is even rarer for those internal disagreements to spill over into public.&lt;/p&gt;
&lt;/blockquote&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gov-uk"&gt;gov-uk&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/terence-eden"&gt;terence-eden&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-security-research"&gt;ai-security-research&lt;/a&gt;&lt;/p&gt;

</summary><category term="open-source"/><category term="security"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="gov-uk"/><category term="terence-eden"/><category term="ai-ethics"/><category term="ai-security-research"/></entry><entry><title>Welcome to the Datasette blog</title><link href="https://simonwillison.net/2026/May/13/welcome-to-the-datasette-blog/#atom-blogmarks" rel="alternate"/><published>2026-05-13T23:59:39+00:00</published><updated>2026-05-13T23:59:39+00:00</updated><id>https://simonwillison.net/2026/May/13/welcome-to-the-datasette-blog/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://datasette.io/blog/2026/new-blog/"&gt;Welcome to the Datasette blog&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
We have a bunch of neat Datasette announcements in the pipeline so we decided it was time the project grew an official blog.&lt;/p&gt;
&lt;p&gt;I built this using OpenAI Codex desktop, which turns out to have the Markdown session transcript export feature I've always wanted. Here's &lt;a href="https://gist.github.com/simonw/885b11eee46822622b8031a1f4e5f3a3"&gt;the session that built the blog&lt;/a&gt;. See also &lt;a href="https://github.com/simonw/datasette.io/issues/179"&gt;issue 179&lt;/a&gt;.


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

</summary><category term="ai"/><category term="datasette"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="codex"/></entry><entry><title>Thoughts on GitLab's workforce reduction" and "structural and strategic decisions"</title><link href="https://simonwillison.net/2026/May/11/gitlab-act-2/#atom-blogmarks" rel="alternate"/><published>2026-05-11T23:58:55+00:00</published><updated>2026-05-11T23:58:55+00:00</updated><id>https://simonwillison.net/2026/May/11/gitlab-act-2/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://about.gitlab.com/blog/gitlab-act-2/"&gt;GitLab Act 2&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
There's a lot going on in this announcement from GitLab about the "workforce reduction" and "structural and strategic decisions" they are making with respect to the agentic era.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They're "planning to reduce the number of countries by up to 30% where we have small teams". One of the most interesting things about GitLab is that they have employees spread across a large number of countries - 18 are listed &lt;a href="https://gitlab.com/gitlab-com/content-sites/handbook/-/blob/7ce61c4be88b04061f9ad9ab5eb64db91ce89d2a/content/handbook/people-group/employment-solutions.md"&gt;in their public employee handbook&lt;/a&gt; but this post says they are "operating in nearly 60 countries". That handbook used to document their payroll workflows for those countries too - they stopped publishing that in 2023 but &lt;a href="https://gitlab.com/gitlab-com/content-sites/handbook/-/blob/82ad50d380b11751645eedc733f7d663cf908d1f/content/handbook/finance/payroll.md"&gt;the last public version&lt;/a&gt; (hooray for version control) remains a fascinating read. Since we don't know which of those 60 countries have small teams, we can't calculate how many countries that 30% applies to.&lt;/li&gt;
&lt;li&gt;"We're planning to flatten the organization, removing up to three layers of management in some functions so leaders are closer to the work." - this isn't the first announcement of this type I've seen that's trimming management. Coinbase &lt;a href="https://twitter.com/brian_armstrong/status/2051616759145185723"&gt;recently announced&lt;/a&gt; a much more aggressive version of this: they were "flattening our org structure to 5 layers max below" and "No pure managers: Every leader at Coinbase must also be a strong and active individual contributor. Managers should be like player-coaches".&lt;/li&gt;
&lt;li&gt;In terms of team structure: "We're re-organizing R&amp;amp;D to create roughly 60 smaller, more empowered teams with end-to-end ownership, nearly doubling the number of independent teams." I've always loved the idea of individual teams that can ship features unblocked by other teams, and it makes sense to me that agentic engineering can increase the capability of such teams. The 37signals public employee handbook used to have a section on working &lt;a href="https://github.com/basecamp/handbook/blob/9504494a6daa555837ee2cc2d9134ca43ab36301/how-we-work.md#in-self-sufficient-independent-teams"&gt;In self-sufficient, independent teams&lt;/a&gt; which perfectly captured this for me, I'm sad to see they &lt;a href="https://github.com/basecamp/handbook/commit/1db14f83913163f4e2e72130524269ae6ba3d757"&gt;removed that detail&lt;/a&gt; in January 2024!&lt;/li&gt;
&lt;li&gt;Tucked away towards the bottom: "&lt;em&gt;We will be retiring CREDIT as our values framework&lt;/em&gt;" - that's the values framework &lt;a href="https://gitlab.com/gitlab-com/content-sites/handbook/-/blob/7ce61c4be88b04061f9ad9ab5eb64db91ce89d2a/content/handbook/values/_index.md"&gt;described on this page&lt;/a&gt;: "Collaboration, Results for Customers, Efficiency, Diversity, Inclusion &amp;amp; Belonging, Iteration, and Transparency". The new values are "Speed with Quality, Ownership Mindset, Customer Outcomes". The fact that "Diversity" is no longer in there is likely to attract a whole lot of attention, so it's worth noting that a sub-bullet under Customer Outcomes reads "Interpersonal excellence: individuals who are good humans, embrace diversity, inclusion and belonging, assume good intent and treat everyone with respect".&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here's the part of their new strategy that most resonated with me:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The agentic era multiplies demand for software&lt;/strong&gt;. Software has been the force multiplier behind nearly every business transformation of the last two decades. The constraint was the cost and time of producing and managing it. That constraint is collapsing. As the cost of producing software collapses, demand for it will expand. Last year, the developer platform market used to be measured in tens of dollars per user per month, this year it is hundreds/user/month and headed to thousands. &lt;em&gt;Not only is the value of software for builders increasing, but we believe there will be more software and builders than ever, and we will serve an increasing volume of both&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That very much encapsulates my own optimistic, &lt;a href="https://simonwillison.net/tags/jevons-paradox/"&gt;Jevons-paradox&lt;/a&gt;-inspired hope for how this will all work out.&lt;/p&gt;
&lt;p&gt;Their opinion on this does need to be taken with a big grain of salt though. GitLab's stock price was ~$52 a year ago and is ~$26 today, and it's plausible that the drop corresponds to uncertainty about GitLab's continued growth as agentic engineering eats its way through their core market.&lt;/p&gt;
&lt;p&gt;If your entire business depends on software engineering growing as a field and producing larger volumes of more lucrative seats, you have a strong incentive to believe that agents will have that effect!

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


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37signals"&gt;37signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/careers"&gt;careers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gitlab"&gt;gitlab&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jevons-paradox"&gt;jevons-paradox&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agentic-engineering"&gt;agentic-engineering&lt;/a&gt;&lt;/p&gt;

</summary><category term="37signals"/><category term="careers"/><category term="ai"/><category term="gitlab"/><category term="coding-agents"/><category term="jevons-paradox"/><category term="agentic-engineering"/></entry><entry><title>Your AI Use Is Breaking My Brain</title><link href="https://simonwillison.net/2026/May/11/zombie-internet/#atom-blogmarks" rel="alternate"/><published>2026-05-11T19:21:27+00:00</published><updated>2026-05-11T19:21:27+00:00</updated><id>https://simonwillison.net/2026/May/11/zombie-internet/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.404media.co/your-ai-use-is-breaking-my-brain/"&gt;Your AI Use Is Breaking My Brain&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Excellent, angry piece by Jason Koebler on how AI writing online is becoming impossible to avoid, filtering it is mentally exhausting and it's even starting to distort regular human writing styles.&lt;/p&gt;
&lt;p&gt;I particularly liked his use of the term "Zombie Internet" to define a different, more insidious alternative to the "Dead Internet" (which is just bots talking to each other):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I called it the Zombie Internet because the truth is that large parts of the internet are not just bots talking to bots or bots talking to people. It’s people talking to bots, people talking to people, people creating “AI agents” and then instructing them to interact with people. It’s people using AI talking to people who are not using AI, and it’s people using AI talking to other people who are using AI. It’s influencer hustlebros who are teaching each other how to make AI influencers and have spun up automated YouTube channels and blogs and social media accounts that are spamming the internet for the sole purpose of making money. It is whatever the fuck “Moltbook” is and whatever the fuck X and LinkedIn have become. It’s AI summaries of real books being sold as the book itself and inspirational Reddit posts and comment threads in which people give heartfelt advice to some account that’s actually being run by a marketing firm. [...]&lt;/p&gt;
&lt;/blockquote&gt;

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://bsky.app/profile/jasonkoebler.bsky.social/post/3mllgvidacs2n"&gt;@jasonkoebler.bsky.social&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/definitions"&gt;definitions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/slop"&gt;slop&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jason-koebler"&gt;jason-koebler&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;

</summary><category term="definitions"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="slop"/><category term="jason-koebler"/><category term="ai-ethics"/></entry><entry><title>Learning on the Shop floor</title><link href="https://simonwillison.net/2026/May/11/learning-on-the-shop-floor/#atom-blogmarks" rel="alternate"/><published>2026-05-11T15:46:36+00:00</published><updated>2026-05-11T15:46:36+00:00</updated><id>https://simonwillison.net/2026/May/11/learning-on-the-shop-floor/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://twitter.com/tobi/status/2053121182044451016"&gt;Learning on the Shop floor&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Tobias Lütke describes Shopify's internal coding agent tool, River, which operates entirely in public on their Slack:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;River does not respond to direct messages. She politely declines and suggests to create a public channel for you and her to start working in. I myself work with river in &lt;code&gt;#tobi_river&lt;/code&gt; channel and many followed this pattern.  Every conversation is therefore searchable.  Anyone at Shopify  can jump in. In my own channel, there are over 100 people who, react to threads, add color and add context, pick up the torch, help with the reviews, remind me how rusty I am, and importantly, learn from watching. [...]&lt;/p&gt;
&lt;p&gt;As so often with German, there is a word for the kind of environment: &lt;em&gt;Lehrwerkstatt&lt;/em&gt;. Literally: &lt;strong&gt;A teaching workshop&lt;/strong&gt;. The whole shop floor is the classroom. You learn by being near the work. Being a constant learner is one of the core values of the firm.&lt;/p&gt;
&lt;p&gt;Shopify wants to be a Lehrwerkstatt at scale and River has now gotten us closer to this ideal than ever. It’s &lt;em&gt;osmosis learning&lt;/em&gt;, because it does not require a curriculum, a training plan, or a manager. It just requires everyone's work to be visible to the maximum extent possible. Everyone learns from each other.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I'm reminded of how Midjourney spent its first few years with the primary interface being public Discord channels, forcing users to share their prompts and learn from each other's experiments. I continue to believe that the early success of Midjourney was tied to this mechanism, helping to compensate for how weird and finicky text-to-image prompting is.


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

</summary><category term="ai"/><category term="slack"/><category term="generative-ai"/><category term="llms"/><category term="midjourney"/><category term="coding-agents"/><category term="tobias-lutke"/></entry><entry><title>Using Claude Code: The Unreasonable Effectiveness of HTML</title><link href="https://simonwillison.net/2026/May/8/unreasonable-effectiveness-of-html/#atom-blogmarks" rel="alternate"/><published>2026-05-08T21:00:11+00:00</published><updated>2026-05-08T21:00:11+00:00</updated><id>https://simonwillison.net/2026/May/8/unreasonable-effectiveness-of-html/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://twitter.com/trq212/status/2052809885763747935"&gt;Using Claude Code: The Unreasonable Effectiveness of HTML&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Thought-provoking piece by Thariq Shihipar (on the Claude Code team at Anthropic) advocating for HTML over Markdown as an output format to request from Claude.&lt;/p&gt;
&lt;p&gt;The article is crammed with interesting examples (collected on &lt;a href="https://thariqs.github.io/html-effectiveness/"&gt;this site&lt;/a&gt;) and prompt suggestions like this one:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Help me review this PR by creating an HTML artifact that describes it. I'm not very familiar with the streaming/backpressure logic so focus on that. Render the actual diff with inline margin annotations, color-code findings by severity and whatever else might be needed to convey the concept well.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I've been defaulting to asking for most things in Markdown since the GPT-4 days, when the 8,192 token limit meant that Markdown's token-efficiency over HTML was extremely worthwhile.&lt;/p&gt;
&lt;p&gt;Thariq's piece here has caused me to reconsider that, especially for output. Asking Claude for an explanation in HTML means it can drop in SVG diagrams, interactive widgets, in-page navigation and all sorts of other neat ways of making the information more pleasant to navigate.&lt;/p&gt;
&lt;p&gt;I wrote about &lt;a href="https://simonwillison.net/2025/Dec/10/html-tools/"&gt;Useful patterns for building HTML tools&lt;/a&gt; last December, but that was focused very much on interactive utilities like the ones on my &lt;a href="https://tools.simonwillison.net/"&gt;tools.simonwillison.net&lt;/a&gt; site. I'm excited to start experimenting more with rich HTML explanations in response to ad-hoc prompts.&lt;/p&gt;
&lt;h4 id="trying-this-out"&gt;Trying this out on copy.fail&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://copy.fail/"&gt;copy.fail&lt;/a&gt; describes a recently discovered Linux security exploit, including a proof of concept distributed as obfuscated Python.&lt;/p&gt;
&lt;p&gt;I tried having GPT-5.5 create an HTML explanation of the exploit like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;curl https://copy.fail/exp | llm -m gpt-5.5 -s 'Explain this code in detail. Reformat it, expand out any confusing bits and go deep into what it does and how it works. Output HTML, neatly styled and using capabilities of HTML and CSS and JavaScript to make the explanation rich and interactive and as clear as possible'&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here's &lt;a href="https://gisthost.github.io/?ae53e3461ffdbfd0826156aacf025c7e"&gt;the resulting HTML page&lt;/a&gt;. It's pretty good, though I should have emphasized explaining the exploit over the Python harness around it.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot of a dark-themed technical document titled &amp;quot;What this Python script does&amp;quot;. Body text: &amp;quot;This is a compact, deliberately obfuscated Linux-specific local privilege-escalation proof-of-concept. Its apparent goal is to tamper with the in-memory image/page cache of /usr/bin/su, then execute su to obtain elevated privileges.&amp;quot; A yellow-bordered callout reads: &amp;quot;Safety note: This explanation is for code understanding, reverse engineering, and defensive analysis. Do not run this on systems you do not own or administer. On a vulnerable kernel, code like this can alter the behavior of a privileged executable.&amp;quot; Left column heading &amp;quot;High-level summary&amp;quot;: &amp;quot;The script opens /usr/bin/su read-only, decompresses an embedded binary payload, and then processes that payload in 4-byte chunks. For each chunk, it performs a carefully arranged sequence involving Linux's kernel crypto socket interface, AF_ALG, pipes, and splice(). The important point is that this is not ordinary file writing. It never calls write() on /usr/bin/su. Instead, it appears to rely on a kernel bug/primitive involving spliced file pages and the crypto API to get controlled bytes placed into the page-cache representation of a privileged executable.&amp;quot; Numbered steps follow: &amp;quot;1. Open target executable — /usr/bin/su is opened read-only. 2. Decode hidden payload — A zlib-compressed hex blob is decompressed into bytes. 3. Patch in 4-byte chunks — The helper function is called repeatedly with offsets 0, 4, 8, ...&amp;quot;. Right column heading &amp;quot;Why it looks strange&amp;quot; contains a table with Pattern and Purpose columns: &amp;quot;import os as g — Short aliasing to make the script compact and harder to read. socket(38, 5, 0) — Uses raw numeric Linux constants instead of readable names. Compressed hex blob — Hides binary payload bytes and keeps the script small. splice() — Moves file-backed pages through pipes without normal user-space copying. try: recv(...) except: 0 — Triggers the kernel operation and ignores expected errors.&amp;quot;" src="https://static.simonwillison.net/static/2026/python-script-explainer.jpg" /&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/html"&gt;html&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/markdown"&gt;markdown&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/prompt-engineering"&gt;prompt-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm"&gt;llm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude-code"&gt;claude-code&lt;/a&gt;&lt;/p&gt;

</summary><category term="html"/><category term="security"/><category term="markdown"/><category term="ai"/><category term="prompt-engineering"/><category term="generative-ai"/><category term="llms"/><category term="llm"/><category term="claude-code"/></entry><entry><title>Behind the Scenes Hardening Firefox with Claude Mythos Preview</title><link href="https://simonwillison.net/2026/May/7/firefox-claude-mythos/#atom-blogmarks" rel="alternate"/><published>2026-05-07T17:56:25+00:00</published><updated>2026-05-07T17:56:25+00:00</updated><id>https://simonwillison.net/2026/May/7/firefox-claude-mythos/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://hacks.mozilla.org/2026/05/behind-the-scenes-hardening-firefox/"&gt;Behind the Scenes Hardening Firefox with Claude Mythos Preview&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Fascinating, in-depth details on how Mozilla used their access to the Claude Mythos preview to locate and then fix hundreds of vulnerabilities in Firefox:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Suddenly, the bugs are very good&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Just a few months ago, AI-generated security bug reports to open source projects were mostly known for being unwanted slop. Dealing with reports that look plausibly correct but are wrong imposes an asymmetric cost on project maintainers: it’s cheap and easy to prompt an LLM to find a “problem” in code, but slow and expensive to respond to it.&lt;/p&gt;
&lt;p&gt;It is difficult to overstate how much this dynamic changed for us over a few short months. This was due to a combination of two main factors. First, the models got a lot more capable. Second, we dramatically improved our techniques for &lt;em&gt;harnessing&lt;/em&gt; these models — steering them, scaling them, and stacking them to generate large amounts of signal and filter out the noise.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;They include some detailed bug descriptions too, including a 20-year old XSLT bug and a 15-year-old bug in the &lt;code&gt;&amp;lt;legend&amp;gt;&lt;/code&gt; element.&lt;/p&gt;
&lt;p&gt;A lot of the attempts made by the harness were blocked by Firefox's existing defense-in-depth measures, which is reassuring.&lt;/p&gt;
&lt;p&gt;Mozilla were fixing around 20-30 security bugs in Firefox per month through 2025. That jumped to 423 in April.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Bar chart titled &amp;quot;Firefox Security Bug Fixes by Month&amp;quot; with subtitle &amp;quot;All Sources • All Severities&amp;quot; on a dark purple background, showing monthly counts: Jan 2025: 21, Feb 2025: 20, Mar 2025: 26, Apr 2025: 31, May 2025: 17, Jun 2025: 21, Jul 2025: 22, Aug 2025: 17, Sep 2025: 18, Oct 2025: 26, Nov 2025: 19, Dec 2025: 20, Jan 2026: 25, Feb 2026: 61, Mar 2026: 76, Apr 2026: 423 — a dramatic spike in the final month." src="https://static.simonwillison.net/static/2026/firefox-security.webp" /&gt;

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://lobste.rs/s/7zppv1/behind_scenes_hardening_firefox_with"&gt;Lobste.rs&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


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

</summary><category term="firefox"/><category term="mozilla"/><category term="security"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="claude"/><category term="ai-security-research"/></entry><entry><title>Our AI started a cafe in Stockholm</title><link href="https://simonwillison.net/2026/May/5/our-ai-started-a-cafe-in-stockholm/#atom-blogmarks" rel="alternate"/><published>2026-05-05T22:14:21+00:00</published><updated>2026-05-05T22:14:21+00:00</updated><id>https://simonwillison.net/2026/May/5/our-ai-started-a-cafe-in-stockholm/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://andonlabs.com/blog/ai-cafe-stockholm"&gt;Our AI started a cafe in Stockholm&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Andon Labs previously &lt;a href="https://andonlabs.com/blog/andon-market-launch"&gt;started an AI-run retail store&lt;/a&gt; in San Francisco. Now they're running a similar experiment in Stockholm, Sweden, only this time it's a cafe.&lt;/p&gt;
&lt;p&gt;These experiments are interesting, and often throw out amusing anecdotes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;During the first week of inventory, Mona ordered 120 eggs even though the café has no stove. When the staff told her they couldn’t cook them, she suggested using the high-speed oven, until they pointed out the eggs would likely explode. She also tried to solve the problem of fresh tomatoes being spoiled too fast by ordering 22.5 kg of canned tomatoes for the fresh sandwiches. The baristas eventually started a “Hall of Shame”, a shelf visible to customers with all the weird things Mona ordered, including 6,000 napkins, 3,000 nitrile gloves, 9L coconut milk, and industrial-sized trash bags.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Where they lose their shine is when these AI managers start wasting the time of human beings who have &lt;em&gt;not&lt;/em&gt; opted into the experiment:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;She also successfully applied for an outdoor seating permit through the Police e-service, which didn’t require BankID. Her first submission included a sketch she had generated herself, despite having never seen the street outside the café. Unsurprisingly, the Police sent it back for revision. [...]&lt;/p&gt;
&lt;p&gt;When she makes a mistake, she often sends multiple emails to suppliers with the subject “EMERGENCY” to cancel or change the order.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I don't think it's ethical to run experiments like this that affect real-world systems and steal time from people.&lt;/p&gt;
&lt;p&gt;I'm reminded of the incident last year where the AI Village experiment &lt;a href="https://simonwillison.net/2025/Dec/26/slop-acts-of-kindness/"&gt;infuriated Rob Pike&lt;/a&gt; by sending him unsolicited gratitude emails as an "act of kindness". That was just an unwanted email - asking suppliers to correct mistakes that were made without a human-in-the-loop or wasting police time with slop diagrams feels a whole lot worse to me.&lt;/p&gt;
&lt;p&gt;I think experiments like this need to keep their own human operators in-the-loop for outbound actions that affect other people.

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


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

</summary><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-agents"/><category term="ai-ethics"/></entry><entry><title>Granite 4.1 3B SVG Pelican Gallery</title><link href="https://simonwillison.net/2026/May/4/granite-41-3b-svg-pelican-gallery/#atom-blogmarks" rel="alternate"/><published>2026-05-04T23:49:24+00:00</published><updated>2026-05-04T23:49:24+00:00</updated><id>https://simonwillison.net/2026/May/4/granite-41-3b-svg-pelican-gallery/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://simonw.github.io/granite-4.1-3b-gguf-pelicans/"&gt;Granite 4.1 3B SVG Pelican Gallery&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
IBM released their &lt;a href="https://research.ibm.com/blog/granite-4-1-ai-foundation-models"&gt;Granite 4.1 family&lt;/a&gt; of LLMs a few days ago. They're Apache 2.0 licensed and come in 3B, 8B and 30B sizes.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://huggingface.co/blog/ibm-granite/granite-4-1"&gt;Granite 4.1 LLMs: How They’re Built&lt;/a&gt; by Granite team member Yousaf Shah describes the training process in detail.&lt;/p&gt;
&lt;p&gt;Unsloth released the &lt;a href="https://huggingface.co/unsloth/granite-4.1-3b-GGUF"&gt;unsloth/granite-4.1-3b-GGUF&lt;/a&gt; collection of GGUF encoded quantized variants of the 3B model - 21 different model files ranging in size from 1.2GB to 6.34GB.&lt;/p&gt;
&lt;p&gt;All 21 of those Unsloth files add up to 51.3GB, which inspired me to finally try an experiment I've been wanting to run for ages: prompting "Generate an SVG of a pelican riding a bicycle" against different sized quantized variants of the same model to see what the results would look like.&lt;/p&gt;
&lt;p&gt;Honestly, &lt;a href="https://simonw.github.io/granite-4.1-3b-gguf-pelicans/"&gt;the results&lt;/a&gt; are less interesting than I expected. There's no distinguishable pattern relating quality to size - they're all pretty terrible!&lt;/p&gt;
&lt;p&gt;&lt;img alt="Six different SVG images from models ranging in size from 1.67GB to 1.2GB. They are almost all an abstract collection of shapes - weirdly the smallest model had the best version of a bicycle, while the largest one had something that looked a tiny bit like a pelican." src="https://static.simonwillison.net/static/2026/granite-3B-pelicans.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;I'll likely try this again in the future with a model that's better at drawing pelicans.


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

</summary><category term="ibm"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="pelican-riding-a-bicycle"/><category term="llm-release"/></entry><entry><title>Sightings</title><link href="https://simonwillison.net/2026/May/2/sightings/#atom-blogmarks" rel="alternate"/><published>2026-05-02T17:26:40+00:00</published><updated>2026-05-02T17:26:40+00:00</updated><id>https://simonwillison.net/2026/May/2/sightings/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://simonwillison.net/elsewhere/sighting/"&gt;/elsewhere/sightings/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I have a new camera (a Canon R6 Mark II) so I'm taking a lot more photos of birds. I share my best wildlife photos on &lt;a href="https://www.inaturalist.org/"&gt;iNaturalist&lt;/a&gt;, and based on yesterday's &lt;a href="https://simonwillison.net/2026/May/1/inat-sightings/"&gt;successful prototype&lt;/a&gt;  I decided to add those to my blog.&lt;/p&gt;
&lt;p&gt;&lt;img class="blogmark-image" src="https://static.simonwillison.net/static/2026/beats-sightings.jpeg" alt="Screenshot of a &amp;quot;Sightings&amp;quot; webpage with a search bar and RSS icon, showing &amp;quot;Filters: Sorted by date&amp;quot; and &amp;quot;208 results page 1 / 7 next » last »»&amp;quot;. First entry: SIGHTING 7:51 PM — Acorn Woodpecker, with two photos labeled &amp;quot;Acorn Woodpecker&amp;quot; of black and white woodpeckers with red caps on tree branches, dated 2nd May 2026. Second entry: SIGHTING 10:08 AM – 11:17 AM — Acorn Woodpecker, Western Fence Lizard, Osprey, with three photos labeled &amp;quot;Acorn Woodpecker&amp;quot; (bird on bare branches against blue sky), &amp;quot;Wester...&amp;quot; (lizard on tree bark), and &amp;quot;Osprey&amp;quot; (nest on a utility pole), dated 1st May 2026. Third entry: SIGHTING 11:11 AM — White-crowned Sparrow, with a photo labeled &amp;quot;White-crowned Sparrow&amp;quot; of a sparrow with black and white striped head singing with open beak, dated 30th Apr 2026."&gt;&lt;/p&gt;
&lt;p&gt;I built this feature on my phone using Claude Code for web, as an extension of my &lt;a href="https://simonwillison.net/2026/Feb/20/beats/"&gt;beats system&lt;/a&gt; for syndicating external content. Here's &lt;a href="https://github.com/simonw/simonwillisonblog/pull/668"&gt;the PR&lt;/a&gt; and prompt.&lt;/p&gt;
&lt;p&gt;As with my other forms of incoming syndicated content sightings show up on the homepage, the date archive pages, and in site search results.&lt;/p&gt;
&lt;p&gt;I back-populated over a decade of iNaturalist sightings, which means you that if you &lt;a href="https://simonwillison.net/search/?q=lemur"&gt;search for lemur&lt;/a&gt; you'll see my lemur photos from Madagascar in 2019!


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/blogging"&gt;blogging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/photography"&gt;photography&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wildlife"&gt;wildlife&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/inaturalist"&gt;inaturalist&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude-code"&gt;claude-code&lt;/a&gt;&lt;/p&gt;

</summary><category term="blogging"/><category term="photography"/><category term="wildlife"/><category term="ai"/><category term="inaturalist"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="claude-code"/></entry><entry><title>Codex CLI 0.128.0 adds /goal</title><link href="https://simonwillison.net/2026/Apr/30/codex-goals/#atom-blogmarks" rel="alternate"/><published>2026-04-30T23:23:17+00:00</published><updated>2026-04-30T23:23:17+00:00</updated><id>https://simonwillison.net/2026/Apr/30/codex-goals/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/openai/codex/releases/tag/rust-v0.128.0"&gt;Codex CLI 0.128.0 adds /goal&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The latest version of OpenAI's Codex CLI coding agent adds their own version of the &lt;a href="https://ghuntley.com/ralph/"&gt;Ralph loop&lt;/a&gt;: you can now set a &lt;code&gt;/goal&lt;/code&gt; and Codex will keep on looping until it evaluates that the goal has been completed... or the configured token budget has been exhausted.&lt;/p&gt;
&lt;p&gt;It looks like the feature is mainly implemented though the &lt;a href="https://github.com/openai/codex/blob/6014b6679ffbd92eeddffa3ad7b4402be6a7fefe/codex-rs/core/templates/goals/continuation.md"&gt;goals/continuation.md&lt;/a&gt; and &lt;a href="https://github.com/openai/codex/blob/6014b6679ffbd92eeddffa3ad7b4402be6a7fefe/codex-rs/core/templates/goals/budget_limit.md"&gt;goals/budget_limit.md&lt;/a&gt; prompts, which are automatically injected at the end of a turn.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/fcoury/status/2049917871799636201"&gt;@fcoury&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/prompt-engineering"&gt;prompt-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/system-prompts"&gt;system-prompts&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/codex"&gt;codex&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agentic-engineering"&gt;agentic-engineering&lt;/a&gt;&lt;/p&gt;

</summary><category term="ai"/><category term="openai"/><category term="prompt-engineering"/><category term="generative-ai"/><category term="llms"/><category term="coding-agents"/><category term="system-prompts"/><category term="codex"/><category term="agentic-engineering"/></entry><entry><title>Our evaluation of OpenAI's GPT-5.5 cyber capabilities</title><link href="https://simonwillison.net/2026/Apr/30/gpt-55-cyber-capabilities/#atom-blogmarks" rel="alternate"/><published>2026-04-30T23:03:24+00:00</published><updated>2026-04-30T23:03:24+00:00</updated><id>https://simonwillison.net/2026/Apr/30/gpt-55-cyber-capabilities/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.aisi.gov.uk/blog/our-evaluation-of-openais-gpt-5-5-cyber-capabilities"&gt;Our evaluation of OpenAI&amp;#x27;s GPT-5.5 cyber capabilities&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The UK's AI Security Institute &lt;a href="https://www.aisi.gov.uk/blog/our-evaluation-of-claude-mythos-previews-cyber-capabilities"&gt;previously evaluated Claude Mythos&lt;/a&gt;: now they've evaluated GPT-5.5 for finding security vulnerability and found it to be comparable to Mythos, but unlike Mythos it's generally available right now.


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

</summary><category term="ai"/><category term="openai"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="claude"/><category term="ai-security-research"/><category term="gpt"/></entry><entry><title>We need RSS for sharing abundant vibe-coded apps</title><link href="https://simonwillison.net/2026/Apr/30/rss-vibe-coded-apps/#atom-blogmarks" rel="alternate"/><published>2026-04-30T18:38:48+00:00</published><updated>2026-04-30T18:38:48+00:00</updated><id>https://simonwillison.net/2026/Apr/30/rss-vibe-coded-apps/#atom-blogmarks</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://interconnected.org/home/2026/04/29/syndicating-vibes"&gt;We need RSS for sharing abundant vibe-coded apps&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Matt Webb:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I would love an RSS web feed for all those various tools and apps pages, each item with an “Install” button. (But install to where?)&lt;/p&gt;
&lt;p&gt;The lesson here is that when vibe-coding accelerates app development, apps become more personal, more situated, and more frequent. Shipping a tool or a micro-app is less like launching a website and more like posting on a blog.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This inspired me to &lt;a href="https://github.com/simonw/simonwillisonblog/pull/665"&gt;have Claude&lt;/a&gt; add an Atom feed (and icon) to my &lt;a href="https://simonwillison.net/elsewhere/tool/"&gt;/elsewhere/tools/&lt;/a&gt; page, which itself is populated by content from my &lt;a href="https://tools.simonwillison.net/"&gt;tools.simonwillison.net&lt;/a&gt; site.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/atom"&gt;atom&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/matt-webb"&gt;matt-webb&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rss"&gt;rss&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vibe-coding"&gt;vibe-coding&lt;/a&gt;&lt;/p&gt;

</summary><category term="atom"/><category term="matt-webb"/><category term="rss"/><category term="ai"/><category term="vibe-coding"/></entry></feed>