Claude Code 2.1.160
Almost entirely hardening: 2.1.160 is a bugfix/safety release. The closest thing to a new primitive is the dynamic-workflow trigger keyword being renamed from `workflow` to `ultracode` — relevant to orchestration because it changes how the fan-out/dynamic-workflow feature is invoked and de-conflicts the common word "workflow" from triggering a run. This is a rename of an existing trigger, not a net-new capability. No genuinely new tools, hooks, or settings were added; the new behaviors are safety prompts and friction reductions on existing primitives.
New primitives
ultracode (dynamic-workflow trigger keyword)capabilityThe dynamic-workflow trigger keyword was renamed from `workflow` to `ultracode`; the word `workflow` no longer triggers a run, asking in your own words still works, and the keyword is highlighted in violet in the input. A rename of an existing trigger surface, not a new capability — included as the single most primitive-shaped, orchestration-relevant change.
grep satisfies read-before-editcapabilitySingle-file `grep`/`egrep`/`fgrep` commands now satisfy the read-before-edit check, so Edit no longer requires a separate Read after viewing a file with grep. A friction reduction to an existing gate; borderline primitive because it changes what counts as a valid pre-edit read.
Agentic relevance
2.1.160 moves the agent-orchestration frontier mainly by hardening it rather than extending it: it stabilizes background/`claude agents` session lifecycle (no more lost history or re-run prompts on resume, cleaner SIGTERM-before-SIGKILL teardown) and tightens write-safety prompts around startup and build-tool config files that grant code execution. The one orchestration-shaped surface change is renaming the dynamic-workflow trigger from `workflow` to `ultracode`, de-conflicting a common word from accidentally launching fan-out runs while keeping natural-language invocation intact.
Hardening & fixes (25)
- Added a prompt before writing to shell startup files (`.zshenv`, `.zlogin`, `.bash_login`) and `~/.config/git/`, which could otherwise lead to unintended command execution
- `acceptEdits` mode now prompts before writing build-tool config files that grant code execution (`.npmrc`, `.yarnrc*`, `bunfig.toml`, `.bazelrc`, `.pre-commit-config.yaml`, `.devcontainer/`, etc.)
- Fixed copy-on-select not writing to the Windows clipboard on WSL — now uses PowerShell interop instead of OSC 52, which terminals like MobaXterm don't support
- Fixed restoring a completed session from `claude agents` dropping chat history and re-running the original prompt
- Fixed background sessions re-attached after overnight retire losing their conversation and re-running the original prompt
- Fixed `claude --bg` occasionally failing with "socket missing" when the background daemon was cold-starting on a loaded machine
- Fixed an issue on Windows where the directory a background session was started in could not be deleted after `claude rm` until the background daemon exited
- Fixed background agents that resumed work being shown under Completed in the agents list
- Fixed `claude agents` freezing for several seconds when returning to the session list due to the auto-updater re-checking on every exit
- Fixed Esc, arrow keys, and typing becoming unresponsive on Windows when attached to a background session or in the agent view while the host is under heavy CPU load
- Fixed background agents emitting terminal sync-output markers to terminals that don't support them (Apple Terminal, tmux), causing render artifacts when entering a running agent
- Fixed mouse wheel scrolling prompt history instead of the transcript right after opening a session from the agents list
- Fixed CJK IME composition appearing at the bottom-left of the screen instead of at the input caret in the `claude agents` view
- Fixed valid `file:///C:/...` links being rewritten to a broken path on Windows terminals with hyperlink support
- Fixed voice mode failing to connect when the project directory or branch name contains non-ASCII or special characters
- Fixed the auto mode unavailability message on third-party providers (Bedrock/Vertex/Foundry) to point to the `CLAUDE_CODE_ENABLE_AUTO_MODE` opt-in instead of incorrectly blaming the model
- Fixed `/effort ultracode` incorrectly blaming the dynamic workflows setting when the model cannot run xhigh; ultracode is no longer offered on models that do not support it
- Fixed model-not-found errors suggesting `--model` when running via the SDK or other hosts where the CLI flag doesn't apply
- Fixed Claude's past replies disappearing from scrollback when resuming a brief mode session with brief mode turned off
- Fixed vim mode `p` pasting on the line below instead of at the cursor when the register was yanked with `v$`
- Improved performance of opening recently-inactive background agent sessions in `claude agents`
- Improved auto mode classifier latency by reducing reasoning on routine actions, lowering the chance of "could not evaluate this action" blocks
- Improved background-session teardown (`claude rm`/`stop`, idle reap) to send SIGTERM to running shell subprocesses before SIGKILL, so cleanup handlers run
- Removed `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE`; the environment variable is now a no-op
- Removed the JetBrains plugin install suggestion from startup
Raw changelog
## 2.1.160 - Added a prompt before writing to shell startup files (`.zshenv`, `.zlogin`, `.bash_login`) and `~/.config/git/`, which could otherwise lead to unintended command execution - `acceptEdits` mode now prompts before writing build-tool config files that grant code execution (`.npmrc`, `.yarnrc*`, `bunfig.toml`, `.bazelrc`, `.pre-commit-config.yaml`, `.devcontainer/`, etc.) - Edit no longer requires a separate Read after viewing a file with `grep`: single-file `grep`/`egrep`/`fgrep` commands now satisfy the read-before-edit check - Fixed copy-on-select not writing to the Windows clipboard on WSL — now uses PowerShell interop instead of OSC 52, which terminals like MobaXterm don't support - Fixed restoring a completed session from `claude agents` dropping chat history and re-running the original prompt - Fixed background sessions re-attached after overnight retire losing their conversation and re-running the original prompt - Fixed `claude --bg` occasionally failing with "socket missing" when the background daemon was cold-starting on a loaded machine - Fixed an issue on Windows where the directory a background session was started in could not be deleted after `claude rm` until the background daemon exited - Fixed background agents that resumed work being shown under Completed in the agents list - Fixed `claude agents` freezing for several seconds when returning to the session list due to the auto-updater re-checking on every exit - Fixed Esc, arrow keys, and typing becoming unresponsive on Windows when attached to a background session or in the agent view while the host is under heavy CPU load - Fixed background agents emitting terminal sync-output markers to terminals that don't support them (Apple Terminal, tmux), causing render artifacts when entering a running agent - Fixed mouse wheel scrolling prompt history instead of the transcript right after opening a session from the agents list - Fixed CJK IME composition appearing at the bottom-left of the screen instead of at the input caret in the `claude agents` view - Fixed valid `file:///C:/...` links being rewritten to a broken path on Windows terminals with hyperlink support - Fixed voice mode failing to connect when the project directory or branch name contains non-ASCII or special characters - Fixed the auto mode unavailability message on third-party providers (Bedrock/Vertex/Foundry) to point to the `CLAUDE_CODE_ENABLE_AUTO_MODE` opt-in instead of incorrectly blaming the model - Fixed `/effort ultracode` incorrectly blaming the dynamic workflows setting when the model cannot run xhigh; ultracode is no longer offered on models that do not support it - Fixed model-not-found errors suggesting `--model` when running via the SDK or other hosts where the CLI flag doesn't apply - Fixed Claude's past replies disappearing from scrollback when resuming a brief mode session with brief mode turned off - Fixed vim mode `p` pasting on the line below instead of at the cursor when the register was yanked with `v$` - Improved performance of opening recently-inactive background agent sessions in `claude agents` - Improved auto mode classifier latency by reducing reasoning on routine actions, lowering the chance of "could not evaluate this action" blocks - Improved background-session teardown (`claude rm`/`stop`, idle reap) to send SIGTERM to running shell subprocesses before SIGKILL, so cleanup handlers run - Removed `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE`; the environment variable is now a no-op - Removed the JetBrains plugin install suggestion from startup - Renamed the dynamic-workflow trigger keyword from `workflow` to `ultracode`. The word "workflow" no longer triggers a run; asking for one in your own words still works. The trigger keyword is highlighted in violet in the prompt input