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.
  • Read deny 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.spawn for teammates. The release adds agent.spawn, one agent id across plugin hook events, and idle and waiting states in $.agent.list().
  • Failures stay contained. A mod’s Client that fails while drawn now fails alone and raises ui.fault, instead of taking down everything the mod drew around it. A value a mod’s ui.render hook 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 Error or 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 eval and plugin update no 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 status that 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.