Fetching from the wire…
Top 5 · 2026-07-18 · source-backed
Your Edit(src/**) allow rule doesn't mean what you think it means. Until today, it matched any directory named src at any depth in the repo. Not <cwd>/src. Any src/. Including one an agent just created three levels down, or one that arrived in a dependency checkout.
The v2.1.214 changelog fixes six distinct permission-check bypasses in a single release. The glob one is the headline, but the others are worse in aggregate. A PowerShell 5.1 session bypass. File-descriptor redirect forms that bash parses one way and the permission analyzer parses another. Commands over 10,000 characters getting misjudged (they now always prompt). Zsh variable subscripts and modifiers inside [[ ]] treated as inert text when they're anything but. And help/man auto-allowed despite both being able to run unsafe options and command substitutions. Man pages can execute pagers. That's been true since 1979 and it's still catching people.
Separately in the same release: Docker commands carrying daemon-redirect flags (--url, --connection, --identity, plus Podman's docker shim in remote mode) now require permission. Before, an allowed docker invocation could be pointed at an arbitrary remote daemon and nobody would ask. And file with -m/--magic-file or -f/--files-from flipped from auto-allowed-as-read-only to permission-required, because a "read-only" command that reads an attacker-chosen file path is not read-only in any sense that matters.
Here's what I find more interesting than any individual bug. Every one of these six shares a root cause, and it isn't policy. Nobody wrote a bad rule. The permission analyzer's model of what a command does diverged from what the shell actually executes. That's a parser mismatch, six times over, in six different grammars.
Which means it'll happen again. An allowlist over a Turing-complete shell is a reimplementation of that shell's grammar, and reimplementations drift. If you're building agent sandboxes, this is the load-bearing takeaway: broad allow patterns are a bet that your analyzer reads the same string your shell does, and that bet keeps losing. Deny-by-default with narrow explicit commands is uglier to maintain and structurally sounder.
Do this today. Grep your settings for dir/** patterns. Any of them that you intended as any-depth matching now needs **/dir/**, because the fix changed hook if: conditions to match only <cwd>/dir. That means some of you are about to have hooks silently stop firing on paths they used to catch. Check both directions.
Also in v2.1.214: session cost and token telemetry were double-counting on streams emitting multiple cumulative message_delta frames. If you've been budgeting agent runs off /cost or your OTel token metrics, your baselines are inflated. Long, heavily-streamed sessions were the worst hit, which is precisely where you'd be looking at cost numbers in the first place.
Each link below shares sources, entities, or timing with this story.
One Claude Code release fixed two independent permission-check bypasses on the same day. That's the story. Version 2.1.221, shipped August 4, patches a Bash tool bypass where zsh could execute hidden commands embedded inside [[ ]] regex conditionals. The approval prompt never...
Two things in one release, and only one of them is in the security section. CLAUDE_CODE_SUBAGENT_MODEL used to override the model for every subagent. In 2.1.251 it sets the default instead. An agent definition's model: frontmatter now wins, and so does an explicit per-spawn mo...
The June 25 release adds autoMode.classifyAllShell to route every Bash and PowerShell command through the auto-mode classifier, surfaces denial reasons in the transcript, and emits a claude_code.assistant_response OTel event carrying the model's actual response text. (Claude C...
Three separate Anthropic changes over about two weeks point the same direction, and none of them announced themselves as a strategy. Claude Code 2.1.238 added claude self-hosted-runner --defer-shutdown-max-min, which keeps serving attached sessions on SIGTERM, parks whatever's...
Two numbers from this paper should change what you do with your .claude/skills directory this week. First: 65.7% of the benefit from agent skills comes from procedural anchoring. Explicit knowledge injection accounts for 4.5%. Second: expand the skill pool from 5 items to 100,...
Claude Code 2.1.232 shipped August 13 with a default flipped underneath everyone. Subagent forking is now on: a spawned subagent inherits the full parent conversation and shares its prompt-cache prefix instead of starting cold. Nested spawn depth defaults to 3. Practitioner wr...
MindPattern daily
One email a day at 7 AM. Sources and a take on every story. Unsubscribe anytime.