What changed
Claude Code 2.1.157 shipped on May 29, 2026. The focus is making plugin development and management lighter: plugins in .claude/skills directories are auto-loaded with no marketplace required, claude plugin init <name> scaffolds a new plugin in place, and /plugin arguments now get autocomplete. claude agents dispatched sessions honor the agent field in settings.json, and EnterWorktree can switch between Claude-managed worktrees mid-session. The release also fixes a broad set of bugs across background sessions, --resume, the /model picker, terminal rendering, WSL image handling, and the IDE integrated terminals.
New features
-
Auto-loaded plugins in
.claude/skillsLocal plugins required a marketplace entry before they would load, which made quick experimentation awkward. Plugins in
.claude/skillsdirectories are now automatically loaded — no marketplace required. -
claude plugin init <name>scaffoldingStarting a new plugin meant creating the directory layout and metadata files by hand.
claude plugin init <name>scaffolds a new plugin in.claude/skillsin one step. -
Autocomplete for
/pluginargumentsSubcommands, installed plugin names, and plugins from known marketplaces all had to be typed from memory.
/pluginarguments now autocomplete across all three. -
agentfield honored inclaude agentsdispatched sessionsThe
agentfield insettings.jsonwas ignored for dispatched sessions, so the agent had to be set manually each time. It is now honored for dispatched sessions, with--agent <name>to override it. -
Mid-session worktree switching with
EnterWorktreeThere was no way to move between Claude-managed worktrees without ending the session.
EnterWorktreecan now switch between Claude-managed worktrees mid-session. -
Worktrees left unlocked when the agent finishes
Claude-managed worktrees stayed locked after use, blocking
git worktree remove/prune. They are now left unlocked when the agent finishes so the standard cleanup commands work. -
tool_parametersintool_decisiontelemetryTool-call analysis lacked the actual command arguments, leaving gaps for debugging. With
OTEL_LOG_TOOL_DETAILS=1,tool_decisionevents now includetool_parameters(bash commands, MCP/skill names). -
Workflow keyword trigger setting
The word “workflow” in a prompt could trigger a dynamic workflow even when that wasn’t the intent. A new “Workflow keyword trigger” setting in
/configlets you turn the keyword trigger off.
Key improvements
-
Faster long and resumed conversations
Long and resumed conversations slowed down because message rendering was recomputed redundantly. Eliminating the redundant work improves performance across long sessions.
-
/terminal-setupdisables GPU acceleration in VS Code-family terminalsGPU acceleration in the VS Code, Cursor, and Windsurf integrated terminals caused garbled-text rendering.
/terminal-setupnow disables GPU acceleration in those terminals to prevent it. -
Substring slash-command autocomplete in
claude agentsDispatch-input autocomplete was prefix-only, which made commands hard to find when you only remembered a middle keyword. It now matches substrings.
-
Feature of the Week credit-claim moved into the status area
The Feature of the Week credit-claim status used to sit on its own line above the prompt. It now appears as a notification in the status area instead.
-
Cleaner startup
Removed the “bash commands will be sandboxed” startup banner and the “/ide for …” startup hint toast. Sandbox status still shows in
/statusand when a command is blocked. -
Backspace after workflow trigger dismisses the request
Pressing backspace right after a workflow trigger keyword used to delete a character. It now dismisses the workflow request, the same as
alt+w.
Bug fixes
Permissions & sandbox
- Sandbox network permission prompts appearing in auto and bypass-permissions mode when using the desktop app, IDE extensions, or SDK — fixed.
- Terminal freezing after approving the managed-settings security dialog at startup — fixed.
- Unprocessable images (zero-byte, corrupt) attached via paste, MCP, or dialog crashing the request — they now become a text placeholder instead.
claude agents
- Completed sessions not retiring when an idle subagent was still parked or had leaked a backgrounded shell — fixed.
- Pressing Esc not cancelling a slow “opening…”, leaving the list unresponsive — fixed.
- Copy-on-select not reaching the system clipboard inside tmux with
set-clipboard on(regression in 2.1.153) — fixed.
Session resume & worktrees
--resumenot reporting background subagents that were running when the previous Claude Code process exited — fixed.- The
--resumesession picker leaving its contents on the terminal after exiting in fullscreen mode — fixed. --worktreeand--worktree --tmuxreturning to the canonical repo root instead of the current linked worktree — fixed.- Background-agent worktrees under
.claude/worktrees/being orphaned after the 30-day job retention sweep — fixed. - Background sessions re-attached after a sleep/wake not telling the model the correct date — fixed.
Model picker & rendering
- The
/modelpicker showing an incorrect “Newer version available” hint when the selected model is already the newest in its family — fixed. The pinned-model row now shows the model’s description instead of its raw ID. - Literal markdown markers (backticks, asterisks) appearing in the in-progress message text in fullscreen mode — fixed.
- A rare duplicate line appearing in scrollback after the terminal UI redraws — fixed.
IDE integrated terminals & WSL
- Right-click paste duplicating the clipboard in the VS Code, Cursor, and Windsurf integrated terminals — fixed.
- [WSL] Fixed image paste (
alt+vkeybinding) and screenshot paste on Windows 11, and added support for dragging images from Windows Explorer. - [IDE] Clicking Stop while a background subagent is running not actually stopping it — fixed.
- [VSCode] Fast mode indicator not appearing on Opus 4.8 — fixed.
Notes
- Skipped versions — 2.1.155 has no public release; 2.1.156 was a single-fix hotfix for an Opus 4.8 issue where thinking blocks were modified, leading to API errors. Neither is covered separately here.
.claude/skillsauto-loading pairs withclaude plugin init— you can now run local plugins purely from a.claude/skillsdirectory without a marketplace entry, and start new ones in place withclaude plugin init <name>.- Turning off the workflow keyword trigger — to stop the word “workflow” from triggering a dynamic workflow, toggle the “Workflow keyword trigger” setting in
/config. OTEL_LOG_TOOL_DETAILS=1is opt-in —tool_decisiontelemetry only includestool_parameters(bash commands, MCP/skill names) when that environment variable is set.