ATRIUMsearch → argument graph
Article · 2026-07-25 · 7 moments

Ruff v0.16.0

Ruff v0.16.0 Astral shipped a significant new version of their Ruff Python linting tool a few days ago on July 23rd. I noticed today because my various CI jobs all started failing thanks to new default Ruff checks and my unpinned "ruff" dev dependency. From Brent Westbrook's announcement post: Ruff now enables 413 rules by default, up from 59 in previous versions. Since Ruff's default rule set was last modified in v0.1.0, the number of rules in Ruff has grown from 708 to 968. Many of these r ✦ AI generated

01
Claim

Given Astral's new home at OpenAI, Ruff's output format provides everything a coding agent would need to fix the problems.

The author notes that Ruff's error output is well-suited for AI coding agents, which he tested with Codex and Claude Code.

transcript

Simon Willison: Unsurprisingly, given Astral's new home at OpenAI, this output provides everything a coding agent would need to fix the problems. I had Codex (GPT-5.6 Sol high) upgrade LLM and sqlite-utils, and Claude Code (with Opus 5) upgrade Datasette.

supports · 1

02
Mechanism

Many of the 968 rules that were not previously enabled by default catch severe issues including syntax errors and immediate runtime errors, and will now be brought to developers' attention without any Ruff configuration.

The expanded default rule set surfaces severe bugs like syntax errors and runtime crashes that previously required explicit configuration to detect.

transcript

Brent Westbrook: Since Ruff's default rule set was last modified in v0.1.0, the number of rules in Ruff has grown from 708 to 968. Many of these rules catch severe issues, including syntax errors and immediate runtime errors but were not previously enabled by default. With the new rule set, Ruff will bring these issues and many others to your attention without any Ruff configuration.

explains mechanism · 1gives example · 1

04
Claim

Ruff's output provides everything a coding agent would need to fix the problems it identifies, enabling AI-assisted remediation.

The author observes that Ruff's detailed error output (location, description, suggested fix) is ideal for coding agents, and demonstrates this by having Codex and Claude Code perform the upgrades.

transcript

Brent Westbrook: Unsurprisingly, given Astral's new home at OpenAI, this output provides everything a coding agent would need to fix the problems. I had Codex (GPT-5.6 Sol high) upgrade LLM and sqlite-utils, and Claude Code (with Opus 5) upgrade Datasette.

explains mechanism · 1gives example · 1supports · 2

05
Claim

Ruff v0.16.0 now enables 413 rules by default, up from 59 in previous versions, dramatically increasing its default linting coverage.

Astral's Ruff v0.16.0 increased default rules from 59 to 413, catching syntax errors and runtime bugs that previously required explicit configuration.

transcript

Brent Westbrook: Ruff now enables 413 rules by default, up from 59 in previous versions. Since Ruff's default rule set was last modified in v0.1.0, the number of rules in Ruff has grown from 708 to 968. Many of these rules catch severe issues, including syntax errors and immediate runtime errors but were not previously enabled by default. With the new rule set, Ruff will bring these issues and many others to your attention without any Ruff configuration.

06
Data

Running Ruff v0.16.0 against my three biggest Python projects found hundreds of minor issues, but comprehensive test suites made the upgrade safe.

The author ran Ruff v0.16.0 on Datasette, sqlite-utils, and LLM, finding hundreds of issues. The projects' thorough test suites (running Python 3.10-3.14) made automated fixes safe.

transcript

Brent Westbrook: I ran the latest Ruff against my three biggest projects - Datasette, sqlite-utils, and LLM - and it found hundreds of minor issues that breached the new default rules. All three projects have very comprehensive test suites, executed in CI against Python 3.10 through Python 3.14, so upgrades like this are pretty safe. The following command did the bulk of the upgrades: uvx ruff@latest check . --fix --unsafe-fixes Against sqlite-utils, that command reported: Found 1618 errors (1538 fixed, 80 remaining).

explains mechanism · 1extends · 1gives example · 1supports · 1

07
Example

Running the latest Ruff against my three biggest projects — Datasette, sqlite-utils, and LLM — found hundreds of minor issues that breached the new default rules, and the upgrade was safe because all three projects have comprehensive test suites running against Python 3.10 through 3.14.

The author ran Ruff v0.16.0 on three major projects, finding hundreds of new issues, but the upgrades were safe thanks to comprehensive test suites covering Python 3.10–3.14.

transcript

Simon Willison: I ran the latest Ruff against my three biggest projects - Datasette, sqlite-utils, and LLM - and it found hundreds of minor issues that breached the new default rules. All three projects have very comprehensive test suites, executed in CI against Python 3.10 through Python 3.14, so upgrades like this are pretty safe. The following command did the bulk of the upgrades: uvx ruff@latest check . --fix --unsafe-fixes. Against sqlite-utils, that command reported: Found 1618 errors (1538 fixed, 80 remaining).

gives example · 1

Highlight slides
Ruff Default Rules Jump to 413✦ from: Ruff now enables 413 rules by default, up from 59 in previous versions.Default Linting Coverage Expanded 7×✦ from: Ruff v0.16.0 now enables 413 rules by default, up from 59 in previous versions, dramatically increasing its default linting coverage.Ruff outputs are agent-ready by design✦ from: Ruff's output provides everything a coding agent would need to fix the problems it identifies, enabling AI-assisted remediation.Ruff v0.16.0 caught hundreds of new issues across 3 projects✦ from: Running the latest Ruff against my three biggest projects — Datasette, sqlite-utils, and LLM — found hundreds of minor issues that breached the new default rules, and the upgrade was safe because all three projects have comprehensive test suites running against Python 3.10 through 3.14.Bulk fix via single command — 1618 errors in sqlite-utils✦ from: Running the latest Ruff against my three biggest projects — Datasette, sqlite-utils, and LLM — found hundreds of minor issues that breached the new default rules, and the upgrade was safe because all three projects have comprehensive test suites running against Python 3.10 through 3.14.Scope of the Expansion✦ from: Ruff now enables 413 rules by default, up from 59 in previous versions.Real-world agent upgrade demo✦ from: Ruff's output provides everything a coding agent would need to fix the problems it identifies, enabling AI-assisted remediation.New Defaults Catch Severe Errors✦ from: Ruff v0.16.0 now enables 413 rules by default, up from 59 in previous versions, dramatically increasing its default linting coverage.
Related episodes