If you use ChatGPT or Claude to stitch together small SQLite scripts, this is the part of sqlite-utils 4.0rc3 that matters. The best change is not a feature add. It is that the tool gets stricter when you point the wrong SQL at the wrong path. A tool that fails loud is the one you can trust in a script that actually changes data. [C002] By "production script," I mean the small automation you let run without babysitting.

The expensive bug in this kind of workflow is not a crash. It is fake success. Your script finishes, nothing looks broken, and you only learn later that the write never happened. That burns time twice: once when you trust the run, and again when you have to trace the mismatch back to the tool.

The upgrade guide spells out the old trap: in 3.x, db.query("update ...") could silently do nothing. In 4.0, that split is explicit. db.query() is for SQL that returns rows. db.execute() is the write path.

The behavior change is the point. If a write is sent through db.query() now, the documented outcome is a ValueError and a rollback instead of fake success. That is not the tool being harder to use. It is the tool refusing to guess what you meant after you chose the wrong lane.

sqlite-utils 4.0rc3 landed on 2026-07-05 [C001]. My claim is narrow on purpose: this is about the documented 3.x to 4.0rc2/4.0rc3 upgrade behavior, not performance and not every OS setup. A tool update is worth your attention not by how many features it adds, but by whether it changes what happens when you make a mistake. If you know someone running small data scripts with sqlite-utils, share this part.