Claude Code 2.1.280 and 2.1.281 fix four cases where permission checks let an action through
Two Claude Code releases on September 22 and 23, 2026 close four gaps in how the tool decides what needs your approval. A write through a symlink could land outside the project, and a recursive delete aimed at a command substitution ran without a prompt in auto mode. A rule containing a NUL byte matched everything. One behavior change also reaches every user: the y and n keys no longer answer dialogs.
Anthropic shipped Claude Code 2.1.280 on September 22, 2026 and 2.1.281 on September 23, 2026. Most of the two long release notes are interface and resume fixes. Four entries, though, describe the permission system approving, or reading, something it should have stopped first.
The four permission fixes
The release notes describe each case in a single line. Taken together, they cover writes, deletions, rules, and file reads.
- Writes through a symlinked path were judged by their spelling inside the project.
acceptEdits, allow rules, and auto mode could approve a write that actually landed outside it. Since 2.1.280, the prompt names the real destination and those approvals no longer apply. - A recursive
rmwhose target is only the output of a command substitution, such asrm -rf "$(pwd)", ran without asking in auto mode and with--dangerously-skip-permissions. Since 2.1.281 it asks even when a Bash allow rule exists, unlessCLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1is set. - A permission rule containing a NUL byte was expanded into a wildcard that matched everything. Since 2.1.281 such a rule matches nothing.
- Permission dialogs and attachment checks read paths under the macOS directories
/.vol,/.nofollow, and/.resolvebefore approval, and those paths can reach a network mount. 2.1.281 stops the early read.
Auto mode stops looping
Version 2.1.280 also changes how auto mode behaves when its safety check does not deliver a verdict. An action the check declines to review is now denied once, with a note that retrying will not help. When the check gives no answer at all, retries back off, and the turn stops with a message after 10 in a row.
The change you will notice first
Since 2.1.280, a stray y no longer confirms a dialog, and a stray n no longer closes one. Enter accepts and Esc cancels. Anyone who prefers the old keys can restore them by binding y and n to confirm:yes and confirm:no in keybindings.json.
Two further entries matter for teams. Version 2.1.280 makes Claude Opus 5.5 the default Opus model, with a context of one million tokens. Version 2.1.281 adds "attribution": false to settings.json to hide commit and pull request attribution, and the release notes warn that older versions skip a settings file containing it.
„It now asks even with a Bash allow rule.“
Sources
Related
OpenClaw 2026.10.2 stops long tool output from slipping credentials past redaction
A bug in OpenClaw's secret masking let a credential through whenever it straddled the boundary between two slices of a long text. The fix ships in 2026.10.2 along with repaired updates from 2026.10.1 and a new compaction default for OpenAI and Anthropic API keys.
OpenClawverified

OpenClaw 2026.10.1 lets agents search installed skills and changes how sessions message each other
OpenClaw released version 2026.10.1 on October 10, 2026, its first stable release since 2026.9.7. Agents can now search the skills installed on a machine and read only the one a task needs, instead of carrying the whole library in the prompt. Opt-in MCP Apps run beside chat, and full backups can go to an external drive or Cloudflare R2. Three changes can break existing setups: session-to-session messaging, the old required argument, and Workboard data stored before July 2026.
OpenClawverified
Claude Code 2.1.294 fixes prompt hooks that let through the actions they were written to block
Anthropic released Claude Code 2.1.294 on October 8, 2026. It fixes prompt and agent hooks phrased as instructions, which could allow exactly the actions they were meant to stop. Version 2.1.295 followed the same day with an onFailure setting that makes a crashed or timed-out command or HTTP hook block the action. Releases 2.1.292 and 2.1.293 from earlier in the week closed several permission and sandbox gaps.
Claude Code Releases (GitHub)verified