Datasette 1.0a38 fixes a SQL injection vulnerability affecting instances that serve mixed public and private tables, with the fix also backported to Datasette 0.65.3.
# Release: datasette 1.0a38
Source: [https://simonwillison.net/2026/Aug/6/datasette/](https://simonwillison.net/2026/Aug/6/datasette/)
> This release fixes a**SQL injection**security issue that affects Datasette instances that serve a**mixture of public and private tables**in the same database, with access configured using the[Datasette permissions system](https://docs.datasette.io/en/latest/authentication.html)\. Site administrators who serve private tables in this way are advised to disable the[execute\-sql permission](https://docs.datasette.io/en/latest/authentication.html#execute-sql)\` on that database to prevent users from accessing private tables using raw SQL queries\. The bug that has been fixed would have allowed users with access to any public table to execute SQL injection attacks despite that restriction, giving them read\-only access to data in private tables in the same database\. This fix is also available in[Datasette 0\.65\.3](https://simonwillison.net/2026/Aug/6/datasette-2/)\.
Thankfully this particular configuration \- private tables and public tables exposed for the same database within the same instance \- is likely to be rare\. I've not encountered an instance like that myself\.
Datasette 1.0a27 released with major security improvements (modern CSRF headers), new RenameTableEvent for plugin compatibility, and various API enhancements including improved upsert handling and database locking fixes.
Datasette 1.0a29 is released with new utility methods, UI improvements for empty tables, and bug fixes including a race condition resolved with help from Codex CLI.
Datasette releases version 1.0a40 with security fixes, new background task features for plugins, migration to httpx2, and various bug fixes towards a stable 1.0 release.