Fetching from the wire…
Public story · 2026-09-04 · high
A deny rule with parentheses in the path was silently ignored, leaving files editable that should have been locked down.
Why now: Anthropic shipped the fixes in the 2.1.260 changelog entry dated September 3.
Claude Code 2.1.260, released September 3, fixes three permission bugs that broke deny rules in different ways.
One of them let files stay writable in folders meant to be locked down, since deny rules were being read but not enforced. Anyone running it unattended was relying on enforcement that wasn't happening.
Edit, Write, and Read rules whose path contained parentheses got dropped as invalid and ignored by the Bash sandbox. A separate bug compounded the risk. One rule with a bad pattern, like an unclosed bracket, broke every edit in the session with an 'Invalid regular expression' error. A single typo took down every edit instead of just its own rule.
The release also closes a Bash approval gap, per Anthropic's changelog. Permission checks were auto-approving zsh commands that hid a command substitution inside a REPORTTIME, REPORTMEMORY, or DIRSTACKSIZE variable assignment. That's a shell quirk obscure enough that most deny-rule authors wouldn't have tested for it.
On top of the three fixes, 2.1.260 reverts a change from 2.1.259 that had applied Read() deny rules to Bash arguments. That change broke npm run build for anyone with a Read(.//build/) rule, because the build output path matched the command string itself. The bad denial applied in every mode, including interactive sessions, not only headless runs.
The changelog doesn't say how long the parentheses bug existed before this fix. Anyone who relied on a parenthesized deny rule can't tell from the notes how long it went unenforced.
Each link below shares sources, entities, or timing with this story.
Below that version, file-modifying Bash commands could run during plan mode without waiting for approval, per the changelog.
A repository's settings file could redirect where Claude Code stores config and temp files, before a single prompt ran.
The August 20 update also lets plugin marketplaces mint short-lived headers instead of storing static tokens in config.
The default is 200 search calls and 200 subagent spawns per session, adjustable through an environment variable when you hit it.
A hook could exit code 2, report failure, and still let the tool run if its JSON failed schema validation, per Claude Code's changelog.
Version 2.1.260 also fixes a Fable 5.1 bug that re-sent tool-result context as full-price input on every turn.
MindPattern daily
One email a day at 7 AM. Sources and a take on every story. Unsubscribe anytime.