github anthropics/claude-code v2.1.47

7 hours ago

What's changed

  • Fixed FileWriteTool line counting to preserve intentional trailing blank lines instead of stripping them with trimEnd().
  • Fixed Windows terminal rendering bugs caused by os.EOL (\r\n) in display code — line counts now show correct values instead of always showing 1 on Windows.
  • Improved VS Code plan preview: auto-updates as Claude iterates, enables commenting only when the plan is ready for review, and keeps the preview open when rejecting so Claude can revise.
  • Fixed a bug where bold and colored text in markdown output could shift to the wrong characters on Windows due to \r\n line endings.
  • Fixed compaction failing when conversation contains many PDF documents by stripping document blocks alongside images before sending to the compaction API (#26188)
  • Improved memory usage in long-running sessions by releasing API stream buffers, agent context, and skill state after use
  • Improved startup performance by deferring SessionStart hook execution, reducing time-to-interactive by ~500ms.
  • Fixed an issue where bash tool output was silently discarded on Windows when using MSYS2 or Cygwin shells.
  • Improved performance of @ file mentions - file suggestions now appear faster by pre-warming the index on startup and using session-based caching with background refresh.
  • Improved memory usage by trimming agent task message history after tasks complete
  • Improved memory usage during long agent sessions by eliminating O(n²) message accumulation in progress updates
  • Fixed the bash permission classifier to validate that returned match descriptions correspond to actual input rules, preventing hallucinated descriptions from incorrectly granting permissions
  • Fixed user-defined agents only loading one file on NFS/FUSE filesystems that report zero inodes (#26044)
  • Fixed plugin agent skills silently failing to load when referenced by bare name instead of fully-qualified plugin name (#25834)
  • Search patterns in collapsed tool results are now displayed in quotes for clarity
  • Windows: Fixed CWD tracking temp files never being cleaned up, causing them to accumulate indefinitely (#17600)
  • Use ctrl+f to kill all background agents instead of double-pressing ESC. Background agents now continue running when you press ESC to cancel the main thread, giving you more control over agent lifecycle.
  • Fixed API 400 errors ("thinking blocks cannot be modified") that occurred in sessions with concurrent agents, caused by interleaved streaming content blocks preventing proper message merging.
  • Simplified teammate navigation to use only Shift+Down (with wrapping) instead of both Shift+Up and Shift+Down.
  • Fixed an issue where a single file write/edit error would abort all other parallel file write/edit operations. Independent file mutations now complete even when a sibling fails.
  • Added last_assistant_message field to Stop and SubagentStop hook inputs, providing the final assistant response text so hooks can access it without parsing transcript files.
  • Fixed custom session titles set via /rename being lost after resuming a conversation (#23610)
  • Fixed collapsed read/search hint text overflowing on narrow terminals by truncating from the start.
  • Fixed an issue where bash commands with backslash-newline continuation lines (e.g., long commands split across multiple lines with \) would produce spurious empty arguments, potentially breaking command execution.
  • Fixed built-in slash commands (/help, /model, /compact, etc.) being hidden from the autocomplete dropdown when many user skills are installed (#22020)
  • Fixed MCP servers not appearing in the MCP Management Dialog after deferred loading
  • Fixed session name persisting in status bar after /clear command (#26082)
  • Fixed crash when a skill's name or description in SKILL.md frontmatter is a bare number (e.g., name: 3000) — the value is now properly coerced to a string (#25837)
  • Fixed /resume silently dropping sessions when the first message exceeds 16KB or uses array-format content (#25721)
  • Added chat:newline keybinding action for configurable multi-line input (#26075)
  • Added added_dirs to the statusline JSON workspace section, exposing directories added via /add-dir to external scripts (#26096)
  • Fixed claude doctor misclassifying mise and asdf-managed installations as native installs (#26033)
  • Fixed zsh heredoc failing with "read-only file system" error in sandboxed commands (#25990)
  • Fixed agent progress indicator showing inflated tool use count (#26023)
  • Fixed image pasting not working on WSL2 systems where Windows copies images as BMP format (#25935)
  • Fixed background agent results returning raw transcript data instead of the agent's final answer (#26012)
  • Fixed Warp terminal incorrectly prompting for Shift+Enter setup when it supports it natively (#25957)
  • Fixed CJK wide characters causing misaligned timestamps and layout elements in the TUI (#26084)
  • Fixed custom agent model field in .claude/agents/*.md being ignored when spawning team teammates (#26064)
  • Fixed plan mode being lost after context compaction, causing the model to switch from planning to implementation mode (#26061)
  • Fixed alwaysThinkingEnabled: true in settings.json not enabling thinking mode on Bedrock and Vertex providers (#26074)
  • Fixed tool_decision OTel telemetry event not being emitted in headless/SDK mode (#26059)
  • Fixed session name being lost after context compaction — renamed sessions now preserve their custom title through compaction (#26121)
  • Increased initial session count in resume picker from 10 to 50 for faster session discovery (#26123)
  • Windows: fixed worktree session matching when drive letter casing differs (#26123)
  • Fixed /resume <session-id> failing to find sessions whose first message exceeds 16KB (#25920)
  • Fixed "Always allow" on multiline bash commands creating invalid permission patterns that corrupt settings (#25909)
  • Fixed React crash (error #31) when a skill's argument-hint in SKILL.md frontmatter uses YAML sequence syntax (e.g., [topic: foo | bar]) — the value is now properly coerced to a string (#25826)
  • Fixed crash when using /fork on sessions that used web search — null entries in search results from transcript deserialization are now handled gracefully (#25811)
  • Fixed read-only git commands triggering FSEvents file watcher loops on macOS by adding --no-optional-locks flag (#25750)
  • Fixed custom agents and skills not being discovered when running from a git worktree — project-level .claude/agents/ and .claude/skills/ from the main repository are now included (#25816)
  • Fixed non-interactive subcommands like claude doctor and claude plugin validate being blocked inside nested Claude sessions (#25803)
  • Windows: Fixed the same CLAUDE.md file being loaded twice when drive letter casing differs between paths (#25756)
  • Fixed inline code spans in markdown being incorrectly parsed as bash commands (#25792)
  • Fixed teammate spinners not respecting custom spinnerVerbs from settings (#25748)
  • Fixed shell commands permanently failing after a command deletes its own working directory (#26136)
  • Fixed hooks (PreToolUse, PostToolUse) silently failing to execute on Windows by using Git Bash instead of cmd.exe (#25981)
  • Fixed LSP findReferences and other location-based operations returning results from gitignored files (e.g., node_modules/, venv/) (#26051)
  • Moved config backup files from home directory root to ~/.claude/backups/ to reduce home directory clutter (#26130)
  • Fixed sessions with large first prompts (>16KB) disappearing from the /resume list (#26140)
  • Fixed shell functions with double-underscore prefixes (e.g., __git_ps1) not being preserved across shell sessions (#25824)
  • Fixed spinner showing "0 tokens" counter before any tokens have been received (#26105)
  • VSCode: Fixed conversation messages appearing dimmed while the AskUserQuestion dialog is open (#26078)
  • Fixed background tasks failing in git worktrees due to remote URL resolution reading from worktree-specific gitdir instead of the main repository config (#26065)
  • Fixed Right Alt key leaving visible [25~ escape sequence residue in the input field on Windows/Git Bash terminals (#25943)
  • The /rename command now updates the terminal tab title by default (#25789)
  • Fixed Edit tool silently corrupting Unicode curly quotes (\u201c\u201d \u2018\u2019) by replacing them with straight quotes when making edits (#26141)
  • Fixed OSC 8 hyperlinks only being clickable on the first line when link text wraps across multiple terminal lines.

Don't miss a new claude-code release

NewReleases is sending notifications on new releases.