The short version
Astral's latest Ruff release expands default checks from 59 to 413 rules, catching severe issues like syntax errors and causing widespread CI failures.
Astral, now part of OpenAI, has released Ruff v0.16.0, a major update to the popular Python linting tool that has immediately begun breaking continuous integration (CI) pipelines for developers who hadn’t pinned their dependency versions. The release, shipped on July 23rd, represents the first significant change to Ruff’s default rule set since its v0.1.0 release.
Key takeaways
- Ruff now enables 413 rules by default, a massive increase from just 59 in previous versions.
- The total number of available rules in Ruff has grown from 708 to 968 since v0.1.0.
- Many of the newly enabled default rules catch severe issues, including syntax errors and immediate runtime errors.
- Running the new version on established projects like Datasette, sqlite-utils, and LLM revealed hundreds of minor issues.
- The tool’s error output is detailed enough for AI coding agents to automatically fix many problems.
Impact on Development Workflows
The immediate effect of the update was widespread CI job failures, as noted by developer Simon Willison, whose automated checks began failing due to the new default checks. The change means Ruff will now bring a much broader range of potential issues to developers’ attention without requiring any configuration. To try the new version, developers can use the command: uvx ruff@latest check .. When Willison ran the latest Ruff against his three major projects, the tool found hundreds of issues that breached the new default rules. For his sqlite-utils project alone, the command uvx ruff@latest check . --fix --unsafe-fixes reported finding 1,618 errors, with 1,538 automatically fixed and 80 remaining.
Examples of New Checks
The new default rules catch a variety of code quality issues. Examples from the sqlite-utils test suite include DTZ005, which flags calls to datetime.datetime.now() made without a timezone argument; BLE001, which warns against catching the blind exception Exception; and B018, which identifies useless attribute access that should either be assigned to a variable or removed. Ruff provides clear explanations for each violation, including the file location and suggested fixes.
Why it matters
This update significantly raises the baseline code quality standard for Python projects using Ruff, automatically enforcing many best practices that previously required manual configuration. The timing is notable, as Astral’s integration with OpenAI means the detailed error output is perfectly formatted for consumption by AI coding agents. Willison successfully used Codex (GPT-5.6 Sol high) to upgrade the LLM and sqlite-utils projects and Claude Code (with Opus 5) to upgrade Datasette, demonstrating how this tooling evolution fits into the modern AI-assisted development workflow. For projects with comprehensive test suites, like those tested against Python 3.10 through 3.14, such automated upgrades can be performed safely.
📡 Original reporting: Simon Willison. AI Craft Technologies’ news engine summarised and rewrote this story in our own words; facts are drawn from the linked source.
⚙️ How this article was made — fully automated
This is a live demo of the ACT News Factory engine. Want one running on your own site? See our services →



