Skill tool fails with EEXIST on Windows when username contains non-ASCII characters
Bug Description
The Skill tool fails with EEXIST: file already exists, mkdir 'C:\Users\<username>' when the Windows username contains non-ASCII (e.g., Japanese) characters.
The skill definitions exist and are correctly discovered (they appear in the system reminder), but invoking any skill via the Skill tool always fails with this error.
Steps to Reproduce
- Use Windows with a non-ASCII username (e.g.,
C:\Users\沖山智彦) - Place skill definitions in
~/.claude/commands/*.md(or project-level.claude/commands/*.md) - Invoke any skill via the Skill tool
Expected Behavior
The skill should load and execute normally.
Actual Behavior
EEXIST: file already exists, mkdir 'C:\Users\沖山智彦'
The error occurs regardless of whether skills are in the global (~/.claude/commands/) or project-level (.claude/commands/) directory.
Environment
- OS: Windows 11 Pro 10.0.26200
- Claude Code version: 2.1.69 (also reproduced on 2.1.63)
- Shell: Git Bash
- Node.js: v22.22.0
- Context: VSCode extension
Root Cause (Suspected)
An internal mkdir call (likely without { recursive: true }) is attempting to create the home directory path, which already exists. This causes EEXIST to be thrown instead of being silently handled.
Workaround
Read the skill definition file directly with the Read tool and follow the instructions manually, bypassing the Skill tool entirely.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗