The 2.1.259 Bash Read() deny-rule expansion is reverted. If
npm run buildstarted failing under aRead(./**/build/**)rule, orcd ... && grepbegan prompting in auto mode, both are back to normal. Your Bash-argument deny rules are narrower again (more below).Permission rules with parentheses in paths were silently broken.
Edit/Write/Readrules whose path contained literal parentheses (e.g.project (copy)/src) were dropped as invalid, and the Bash sandbox ignored them too. If you have such rules, they now actually enforce./diffopens a live diff panel in fullscreen mode. Shows your uncommitted changes beside the conversation as Claude edits. Toggle it with/diff.Fable 5.1 prompt caching and model picker are fixed. The
/modelpicker now shows Fable 5.1 without typing the full ID,[1m]context tags are no longer ignored, and prompt caching covers all context (not just the prefix before tool results). (more below)ctrl+l/cmd+kin fullscreen now clears the transcript view. Previously these did nothing; now they work like a terminalclear. Scroll up to see earlier messages.
New in 2.1.260
2.1.260 (September 4, 2026)
- Added a diff panel that opens beside the conversation in fullscreen mode and shows your uncommitted changes as Claude edits; toggle it with
/diff - Added a likely cause for prompt-cache misses (e.g. tool definitions or system prompt changed, idle past the TTL) to
/costand the status line'sprompt_cachefield - Added
/reload-pluginsto headless sessions, so it appears in the Claude Code Desktop and SDK command lists - Added a text form of
/advisor(/advisor,/advisor <model>,/advisor off) for the desktop app, Remote Control, and other headless (-p/Agent SDK) sessions - Added
oidc.scope_on_refreshto the Claude apps gateway for IdPs that return an id_token on refresh only when asked foropenidagain - Added Claude apps gateway support for newer Claude Desktop keys in
desktoppolicy blocks, includinguserPluginMarketplacesEnabledanduserPluginUploadsEnabled - Fixed
Edit/Write/Readpermission rules whose path contains parentheses being dropped as invalid or ignored by the Bash sandbox, which left "read-only" folders writable - Fixed one file permission rule with an uncompilable pattern (e.g. an unclosed
[) making every file edit fail withInvalid regular expression; such a deny rule now guards the literal path it spells - Fixed Bash permission checks auto-approving zsh commands that hide a command substitution in a REPORTTIME, REPORTMEMORY or DIRSTACKSIZE assignment; these now prompt for approval
- Fixed Bedrock model discovery, token counting and AWS SSO/STS credential calls failing with "unable to get local issuer certificate" when the corporate root CA is only in the OS certificate store
- Fixed
permissions.blockReadsOutsideWorkingDirectorieson macOS hiding the user's git config from sandboxed git and hiding a worktree-isolated sub-agent's own checkout - Fixed managed settings not loading for claude.ai Enterprise/Team users who also had a leftover API key from an earlier
/login - Fixed
/statuslisting a signed-in claude.ai account and a configured API key as if both were in effect; the credential not in use is now marked - Fixed managed
skillOverridesentries keyed on a bundled skill's alias (e.g.checkupfor/doctor) not applying, andSkill(name)deny rules not covering a nested skill listed as<dir>:name - Fixed
model: fableagents ignoring the[1m]tag on anANTHROPIC_DEFAULT_FABLE_MODELpin and silently running with a 200K context window - Fixed the
/modelpicker not showing Fable 5.1 for organizations that can use it, which was only accepted when typed as/model claude-fable-5-1 - Fixed prompt caching on Claude Fable 5.1 not covering the context attached after tool results, so it was re-sent as uncached input on every tool-call turn
- Fixed model switching staying blocked for the rest of the session after a plugin hook load failure; each switch now re-checks and the refusal names the cause
- Fixed model switching being blocked for the session when an organization-managed plugin's marketplace could not be loaded
- Fixed SDK-provided MCP servers (e.g. Desktop connectors) sometimes missing from the first turn and only appearing on the next one
- Fixed Claude in Chrome tools failing with "Not connected" mid-task in cloud-hosted claude.ai sessions when a connector was added or removed
- Fixed flags, joined emoji and accented letters splitting across wrapped lines, and stale text staying on screen when a flag or joined emoji falls in the terminal's last two columns (now shown as
...) - Fixed Remote Control accepting a model pick that is not a valid model name; it is now refused with an error instead of failing on the next message
- Fixed
/rewindand--rewind-filesreporting success when checkpoint backup files were missing and nothing was actually restored - Fixed
/rewindleaving stale file-read tracking from the rewound-away turns, which caused "File unchanged since last read" stubs and full-file re-injection after external edits - Fixed
-p --resume/--continue(as used by the desktop app) failing on every retry once a session's worktree directory lost its git metadata; it now fails once, then resumes without the worktree - Fixed a subagent that resumed another agent via SendMessage never being woken by that agent's completion (the notification went to the main conversation instead)
- Fixed agent teams: an in-process teammate's transcript losing messages, or going blank, during long API retry waits (e.g. under
CLAUDE_CODE_RETRY_WATCHDOG) as retry notices evicted real messages - Fixed a session that moved to the background appearing twice in ListAgents (once as a phantom "interactive" twin with the same name) and receiving SendMessage deliveries in the viewer
- Fixed intermittent "task output swap refused" errors when many sessions share a project directory
- Fixed Ctrl+Z in fullscreen leaving the shell on the alternate screen, drawn over the paused interface
- Fixed Workflow tool subagents being restarted as stalled while a long context compaction was still in progress
- Fixed plugins from a URL marketplace failing to install with "marketplace entry path does not stay inside the marketplace directory" when a host app (e.g. Claude Desktop) stores it as a directory
- Fixed an extra browser tab opening when an artifact is published in a session you're driving from claude.ai, the desktop app, or mobile (Remote Control)
- Fixed the Artifact tool's first call failing with an "Invalid tool parameters" validation error in some Cowork sessions
- Fixed IDE line selections being dropped when running a skill or slash command (the "N lines selected" context now reaches Claude)
- Fixed repository detection for GitLab projects in nested subgroups (e.g.
gitlab.com/group/subgroup/project) - Fixed
owner/repo#123issue references in rendered output linking to github.com when working in a GitLab repository; they now link to the gitlab.com issue - Glob/Grep: Fixed the search path being probed on disk before the permission check; a missing path is now reported after permission is decided, as Read does
- Reverted the 2.1.259 change applying
Read()deny rules to Bash arguments; it deniednpm run buildunder aRead(./**/build/**)rule in every mode and madecd ... && grepprompt even in auto mode - Improved structured output: Workflow
agent({schema})rejects a JSON Schema that can never be satisfied up front, and retry-cap errors now include the last validation failure - Improved deleting a background session whose worktree has unpushed commits: the message now names the branch and commit count, and deleting again discards the worktree
- Improved the Claude apps gateway's refresh-failure log to name the step that failed
- Improved idle CPU usage of non-interactive (
-p/ SDK) sessions - Improved the Claude apps gateway on Amazon Bedrock: input tokens for an aborted request are now counted with AWS's free CountTokens API (grant
bedrock:CountTokens) instead of a one-token request - Improved the settings error for rules such as
Edit(C:\dir\(name)\**), where\(is read as an escaped parenthesis rather than a path separator, to suggest an unambiguous spelling - Improved auto-compact for 1M-context models: Opus and Fable sessions now compact shortly before the 1M-token limit, and recovery compaction on very large contexts no longer times out at 10 minutes
- Improved
/ultrareviewandclaude ultrareviewto wait up to 45 minutes (previously 30) for long-running cloud reviews - Improved
/efforton Claude Fable 5.1 so changing effort mid-session no longer invalidates the prompt cache - Updated the bundled
claude-apiskill so its Go, Java, and C# samples use current-generation model IDs, and clarified that cheaper worker or sub-agent models should be current-generation too - Changed
ctrl+l/cmd+kin fullscreen mode to clear the transcript view like a terminalclear; scroll up to see earlier messages - Changed permission rules with text after the closing parenthesis (e.g.
Bash(ls) x), which never matched anything, to be reported as invalid settings instead of being silently ignored - Changed server-managed settings so a managed CLAUDE.md (
claudeMd) no longer triggers the security approval dialog; hooks, shell-command, sandbox, and unsafeenvsettings still require approval - Changed Claude in Chrome to follow your organization's Claude in Chrome admin setting; when an admin turns it off,
--chrome,/chromeand the browser tools are unavailable - Changed Claude apps gateway to send
orgPluginSettingsin the list form read by Claude Desktop 1.15200.0 and later; older desktops ignore it - Changed Claude apps gateway to also refuse to start, naming the field, when a
desktoppolicy misspells a field in a nested object of amanagedMcpServersororgPluginSettingsentry - Changed commands typed at the
!bash-mode prompt to run outside the sandbox even when strict sandbox mode (sandbox.allowUnsandboxedCommands: false) is on, like typing into your own terminal - Changed self-hosted runner
--kill-session-after-minto release a session that is only waiting on its user (paused, resumable on the next message) instead of killing it and reporting a failure - Removed the one-hour time limit on background commands started by subagents; they now run until they exit or are stopped, matching the main session
- [VSCode] Added the selected effort level to the footer model pill, fixed a stale effort level after switching models, and returned the footer pills to their earlier compact size
- [VSCode] Added Open and Closed to the session list's status filter menu
- [VSCode] Fixed the welcome screen disappearing in a new session when Remote Control turns on automatically
- [VSCode] Fixed the session history picker loading a session a second time when it is already open in another tab; it now switches to that tab
- [VSCode] Fixed the session tab's Rename command silently doing nothing while the tab's view was reloading; it now always applies
- [VSCode] Fixed a half-finished message, an empty tool card or an extra "Thought for" line staying on screen after Claude Code retried a dropped response
- [VSCode] Fixed "Enable Remote Control for all sessions" not applying to a session tab that was still starting when the toggle was flipped
Notes
The Read() deny-rule revert and its security tradeoff. 2.1.259 expanded Read() deny rules to cover Bash arguments, git diff file operands, and cd && cat compounds. The coverage was correct in principle but too broad in practice: npm run build was denied under Read(./**/build/**) because build appeared as a subcommand argument, and cd dir && grep pattern file prompted in auto mode. 2.1.260 reverts the expansion entirely. The narrower protections from before 2.1.259 are back, meaning Bash file operands like --ignore-revs-file=.env are not covered by Read() deny rules again. If you relied on yesterday's broader coverage, audit your rules. Expect Anthropic to ship a more targeted version that avoids the false positives.
Fable 5.1 was half-broken since its 2.1.257 launch. Three separate fixes land here: the /model picker didn't list it (you had to type the full model ID), the [1m] tag on ANTHROPIC_DEFAULT_FABLE_MODEL was ignored (so Fable agents ran with 200K context instead of 1M), and prompt caching didn't cover post-tool-result context (re-sending it uncached every turn). If you tried Fable 5.1 in the last two days and found it slow or expensive, the caching fix alone should make a visible difference.
1M-context auto-compact no longer times out. Opus and Fable sessions on the 1M window now compact shortly before the limit instead of hitting it and stalling. The recovery path for very large contexts also no longer times out at 10 minutes. If you've seen sessions go unresponsive near the context ceiling, this is the fix.