Fetching from the wire…
Public story · 2026-08-07 · high
The bug defeated Datasette's permission system even with execute-sql disabled, and Willison patched the alpha and stable 0.65 branches the same day.
Why now: Willison shipped the fix and the 0.65.3 backport on August 6.
Simon Willison patched a SQL injection in Datasette on August 6 that let public-table users read rows from private tables, per his writeup.
The hole hit any installation serving public and private tables from the same database, the exact split Datasette's permission system exists to guard. Even with the execute-sql feature turned off, a public-table user could still reach data they'd never been granted access to.
The injection ran through Datasette's query builder rather than around it. Permission checks sat above the query layer, so once attacker-controlled SQL reached the builder, nothing stopped it from touching the private tables.
Willison shipped the fix as 1.0a38 and backported it to 0.65.3 the same day. He also said the mixed configuration, public and private tables sharing one database, is uncommon, which caps how many live installs were actually exposed.
The real lesson isn't specific to Datasette. Any tool that checks permissions above a general-purpose query builder instead of inside it carries the same hole. Watch for the same bug shape in other apps that run ad hoc queries against a database holding both public and private data.
Each link below shares sources, entities, or timing with this story.
Willison launched datasette-apps (0.1a2) on June 18, hosting self-contained HTML+JS apps in a sandboxed iframe that run SQL against your data, read-only by default. He frames it as "Claude Artifacts reimagined for Datasette," artifacts backed by a JSON API to a relational data...
His conclusion is DuckDB matches or beats SQLite's safety for untrusted queries, but only with enable_external_access=false, lock_configuration=true, and a watchdog thread, since DuckDB lacks SQLite's opcode-based query timeouts. He ships a safe_duckdb.py helper and a Datasett...
Prompted by Julia Evans admitting on July 17 that she still can't read query plans, Willison had Fable build a tool that runs arbitrary SQL against a SQLite database and renders both EXPLAIN QUERY PLAN and the lower-level EXPLAIN bytecode with per-line plain-English annotation...
Promptwatch's tracking shows the share of ChatGPT search queries using site: sat at 0.3-0.5% for weeks, dipped to 0.15% on August 3-5, then jumped to 16-17% on August 8, two days after OpenAI said it was making GPT-5.6 Sol "more reliable with facts." Simon Willison Willison co...
Willison shipped datasette-agent-edit 0.1a0 on June 7, letting agents perform structured data edits inside Datasette, alongside micropython-wasm sandbox work for running untrusted agent code. Separately his evolving Agentic Engineering Patterns guide reframes the work around t...
Willison quoted Florian Herrengt on August 12 about teams accumulating so many AI-generated layers that nobody retains a working model of the system. The artifact still works, the org loses the mid-level engineers who could reason about why. Hold that against the OpenAI paper...
MindPattern daily
One email a day at 7 AM. Sources and a take on every story. Unsubscribe anytime.