Claude Code 2.1.289 closes several gaps in permission rules, adds agent.spawn for teammates in the plugin and mod API, and fixes a long list of plugin and mod drawing failures. The package was published to npm on October 3, 2026 at 20:12 UTC, where it carries the latest and next tags; the stable tag still points to 2.1.285 (npm). The changes below come from the official CHANGELOG.
On this page
Permission rule fixes
The changelog lists four fixes where a deny or ask rule could be skipped:
- Bash deny and ask rules missed a command behind an environment variable prefix with an expanded value, such as
TZ="$HOME" rm -rf build, when the sandbox auto-allows commands. - A Bash deny or ask rule was skipped under sandbox auto-allow when a bare variable assignment came before the command.
Readdeny rules did not apply to files @-mentioned, changed or selected in the IDE through a symlink.- On managed machines, a deny or ask rule on a nested part of a compound shell command did not hold over a user-installed mod’s approval.
A related fix stops a user-installed plugin from rewriting the descriptions of an organization-managed MCP server’s sign-in tools.
For plugin and mod authors
agent.spawnfor teammates. The release addsagent.spawn, one agent id across plugin hook events, and idle and waiting states in$.agent.list().- Failures stay contained. A mod’s
Clientthat fails while drawn now fails alone and raisesui.fault, instead of taking down everything the mod drew around it. A value a mod’sui.renderhook wrote no longer ends the session with “unrecoverable interface error”; the engine draws its own row instead. - Clearer error lines. When a mod’s band or pane fails to draw, the line its author sees names the mod and says nothing was drawn. A failed plugin component no longer shows
Erroror nothing as its reason when the failure carried no message. claude plugin validate. It no longer skips a plugin whose folder also holds a marketplace manifest, and no longer fails an Anthropic marketplace’s own plugin.- Local marketplaces.
plugin list,plugin evalandplugin updateno longer show a stale copy of a plugin installed from a local folder marketplace, and hot reload works for a symlinked--plugin-dir. - Installed mods load in the first session after an upgrade.
Other fixes
- The terminal no longer freezes on short code blocks with many unclosed
<script>tags or deeply nested${substitutions. The same input no longer freezes or crashes a reader’s browser tab on published artifact pages. - Sessions no longer end when a plugin’s on-screen handler throws asynchronously, when a plugin region with no height keeps growing, or at launch when a plugin draws a Box with a border style the terminal does not know.
- Text with a tab, a stray escape and a C1 control, or short text with a tab and CRLF line endings, no longer draws over the rows below it.
- Large files open faster in a plugin code pane.
- In VS Code, the release reverts a 2.1.288 change to
claude auth statusthat may have made sign-outs more frequent.
How to update
The Claude Code README lists these install commands, which fetch the current version:
# macOS/Linux (recommended)
curl -fsSL https://claude.ai/install.sh | bash
# Homebrew (macOS/Linux)
brew install --cask claude-code
# Windows (recommended)
irm https://claude.ai/install.ps1 | iex
The README marks installation through npm as deprecated.





