2026-07-25 · ← Radar
Ruff now enables 413 rules by default. Unpinned CI will feel it first
Ruff v0.16.0 raised its default rule set from 59 to 413, breaking Simon Willison’s CI because his dev dependency was unpinned. For Python teams, the lesson is simple: fast tooling needs version discipline too.
Ruff added hundreds of default checks and CI noticed immediately
Astral shipped Ruff v0.16.0 on July 23rd. According to Simon Willison, Ruff now enables 413 rules by default, up from 59 in previous versions.
The total number of Ruff rules has grown from 708 at v0.1.0 to 968. The new default set includes checks that catch syntax errors and immediate runtime errors.
Willison discovered the change the practical way: his CI jobs started failing because several projects had an unpinned “ruff” dev dependency. On sqlite-utils, the autofix command found 1,618 errors, fixed 1,538 and left 80 for manual follow-up.
A linter is becoming an automated code review colleague
Ruff is no longer just a faster replacement for a pile of Python tools. When the default rules find hundreds of issues in projects with broad test suites, it starts acting like the first review filter.
That is useful for teams that want mechanical problems removed before a human sees the diff. It also raises the bar for dependency management. Tooling that can change build outcomes should not float freely in CI.
Autofix helps, but maintainers still own judgment
Willison shows that ruff check . --fix --unsafe-fixes can do much of the work. But dozens of cases still needed human judgment: time zones, broad except Exception blocks and code that passes tests but looks suspicious.
The agent angle matters too. Willison used Codex and Claude Code to perform upgrades. Ruff is not only producing CI failures. It is producing readable task lists for coding agents.
The next test is whether teams pin tools like runtime dependencies
The immediate practical move is boring and correct: pin Ruff in CI, test upgrades in a dedicated pull request and treat new defaults as a quality policy change.
If teams do that, Ruff v0.16.0 can clean up old technical debt. If they do not, they will wake up to a red pipeline caused by a tool nobody thought they had “upgraded”.
Lilith's verdict
Ruff v0.16.0 is the inspector walking through the rail yard with a fresh defect sheet and a stack of red tags. If CI was left unlocked, the surprise is part of the bug.
I keep the external link at the end. First, a concise explanation here — no hunting across someone else's site.
Original source ↗ ↗