Source Intelligence

DisclaimerUnofficial, and not affiliated with Anthropic. Nearly all of this is read straight out of what ships: npm bundles, captured prompts, published docs. Anthropic's own notes go in verbatim, marked as theirs. The rest is my reading, and every entry carries the strings behind it. If one looks wrong, vote it down and say why.

All releases Home olderv2.0.14 v2.0.17newer

Claude Code v2.0.15

10 entries read diff v2.0.14 → v2.0.15 Markdown

Version 2.0.15 introduces a new AskUserQuestion tool that allows Claude to ask multiple-choice questions during execution, enhances async hook support with stderr capture, and improves marketplace plugin error handling with structured error tracking.

Find
Pick an entry · j / k steps through
10 entries

Changesopen

AskUserQuestion Tool#

What: A new tool that enables Claude to ask users multiple-choice questions during task execution to gather preferences, clarify ambiguity, or make implementation decisions.

How to use:

// Claude can now use this tool to ask questions like:
{
  "questions": [
    {
      "question": "Which library should we use for date formatting?",
      "header": "Library",
      "options": [
        {"label": "date-fns", "description": "Modern, modular"},
        {"label": "moment", "description": "Widely used, large"}
      ]
    }
  ]
}

Details:

  • Supports 1-4 questions per tool use with 2-4 options each
  • Users can always select "Other" to provide custom text input
  • Set multiSelect: true to allow multiple answers per question
  • Includes navigation UI with question progress indicators
  • Questions have a header (max 12 characters) for display in the progress bar
  • Evidence: New tool definition at T6Q = "AskUserQuestion" at line 404665, tool implementation at line 405857 in function Tn1()

Async Hook Stderr Capture#

What: Async hooks now capture and track stderr output separately from stdout, providing better visibility into hook errors and warnings.

Details:

  • Hook state now includes dedicated stderr field initialized as empty string
  • New function $wA() at line 72330 adds stderr to async hook process tracking
  • Hook registration function CwA() at line 72298 initializes stderr field at line 72318
  • Stderr stream is now monitored alongside stdout for background hook processes
  • Evidence: Previously hooks only tracked stdout, now both stdout and stderr fields exist in hook state (line 72318)

Marketplace Plugin Error Tracking#

What: Plugin loading now uses structured error tracking with specific error types and detailed context, making it easier to diagnose marketplace installation issues.

Details:

  • New error types: path-not-found (for missing component files) and generic-error (for other failures)
  • Error objects include plugin name, source, path, and component type (commands/agents/skills)
  • Function AD6() at line 223462 now accepts error array parameter and accumulates errors
  • Each missing file is tracked with metadata: { type: "path-not-found", source, plugin, path, component }
  • Provides actionable error messages like "Check that the marketplace entry has the correct path"
  • Evidence: v2.0.14 function zV6() at line 222943 only logged warnings; v2.0.15 function AD6() pushes structured error objects (lines 223537-543, 223567-573, 223593-599)

Original Working Directory Protection#

What: File scanning now automatically excludes the original working directory when the process has changed directories, preventing unintended file access.

Details:

  • Function H7B() at line 275861 checks if current directory differs from startup directory
  • If different, adds originalCwd to ignore paths list (lines 275873-276)
  • Prevents Claude Code from scanning the launch directory when operating in a different location
  • Evidence: v2.0.14 function s3B() at line 275176 had static ignore list; v2.0.15 adds dynamic originalCwd logic

Write Tool File Caching#

What: The conversation context file cache now tracks Write tool results in addition to Read tool results, improving context awareness.

Details:

  • Function HMQ() at line 460001 now accepts file paths from both Read and Write tools
  • Caches file content from Write operations with timestamps
  • Helps maintain accurate file state tracking across tool uses
  • Path normalization now works for both read and write operations
  • Evidence: v2.0.14 function yLQ() at line 458431 only tracked Read tool (check at line 458451); v2.0.15 tracks both Read and Write tools (Write check added at lines 460014-460020)

Improved Marketplace Status Messages#

What: Git operations during marketplace installation/update now show clearer progress messages.

Details:

  • "Updating existing marketplace cache…" instead of "Running: git pull"
  • "Update failed, cleaning up and re-cloning…" for clearer failure messaging
  • "Cloning repository: [url]" instead of "Running: git clone [url]"
  • "Clone complete, validating marketplace…" confirms successful completion
  • Evidence: Function Df1() at line 222621 uses QT() helper with improved messages (lines 222636, 222650, 222651)

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Select Component Enhancements#

What: The interactive select component now supports inline text input fields as options, enabling mixed multiple-choice and text input in a single selection UI.

Details:

  • New "input" option type alongside existing "text" options
  • Options can have type: "input" with placeholder and initialValue properties
  • New compact-vertical layout mode for better description display
  • Component F01 at line 145146 renders input fields with focus state management
  • Multi-select component _GB at line 282823 supports input options with checkboxes
  • Evidence: Function TA() at line 145236 now handles type: "input" options (checks at lines 145558, 145643, 145723)

Command Flag Obfuscation Detection#

What: Fixed quote handling in command security checks to properly detect obfuscated flags with escaped characters.

Details:

  • Function Ck6() at line 274379 now tracks quote state and escape sequences
  • Added escape sequence tracking with Y flag (lines 274396-274402)
  • Properly handles single quotes (') and double quotes (") separately (lines 274403-274410)
  • Checks fullyUnquotedContent instead of originalCommand for better accuracy (line 274433)
  • Prevents false positives from legitimate quoted strings in command arguments
  • Evidence: v2.0.14 function y_6() at line 273725 had simpler quote detection; v2.0.15 adds stateful quote and escape tracking (lines 274389-274411)

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Hook Function Signature Improvements#

What: Hook execution functions now use clearer parameter naming with object destructuring for better code maintainability.

Details:

  • Function tX9() at line 73192 uses named parameters: { toolUseID, hook, hookInput, signal }
  • Function r40() at line 72973 uses named parameters: { hookInput, matchQuery, signal, timeoutMs }
  • Replaces positional parameters with descriptive object properties
  • Evidence: v2.0.14 used positional parameters HX9(A, B, Q, Z) at line 73080 and S40(A, B, Q, Z) at line 72895

Permission UI Component Refactoring#

What: Tool permission confirmation component optimized with React hooks for better performance.

Details:

  • Function Uu() at line 387386 now uses useMemo for telemetry data (line 387407)
  • Uses custom hook JE() for permission tracking
  • Replaces direct function call Aq() with memoized approach
  • Evidence: v2.0.14 function Yu() at line 386492 called Aq() directly; v2.0.15 memoizes with useMemo
Verbatim
Official · Anthropic

Anthropic’s official release notes

Published verbatim by Anthropic for v2.0.15. Text is unmodified from the upstream changelog. Everything else on this page came out of the bundle instead, which is why the two lists don't match.

  • Fixed bug with resuming where previously created files needed to be read again before writing
  • Fixed bug with -p mode where @-mentioned files needed to be read again before writing
System prompt

The system prompt was not captured for this release, so this page cannot say whether it moved.