Files
gh-josiahsiegel-claude-code…/skills/windows-path-troubleshooting/SKILL.md
2025-11-30 08:29:26 +08:00

17 KiB

name, description
name description
windows-path-troubleshooting Complete Windows file path troubleshooting knowledge for Claude Code on Git Bash and Windows environments. PROACTIVELY activate for: (1) File path errors on Windows, (2) Backslash vs forward slash issues, (3) Edit/Write/Read tool failures, (4) MINGW path resolution, (5) Cross-platform path conversion.

🚨 CRITICAL GUIDELINES

Windows File Path Requirements

MANDATORY: Always Use Backslashes on Windows for File Paths

When using Edit or Write tools on Windows, you MUST use backslashes (\) in file paths, NOT forward slashes (/).

Examples:

  • WRONG: D:/repos/project/file.tsx
  • CORRECT: D:\repos\project\file.tsx

This applies to:

  • Edit tool file_path parameter
  • Write tool file_path parameter
  • All file operations on Windows systems

Documentation Guidelines

NEVER create new documentation files unless explicitly requested by the user.

  • Priority: Update existing README.md files rather than creating new documentation
  • Repository cleanliness: Keep repository root clean - only README.md unless user requests otherwise
  • Style: Documentation should be concise, direct, and professional - avoid AI-generated tone
  • User preference: Only create additional .md files when user specifically asks for documentation

Windows Path Troubleshooting for Claude Code

🚨 CRITICAL: Always Use Backslashes on Windows for File Paths

MANDATORY: When using Edit, Write, or Read tools on Windows, you MUST use backslashes (\) in file paths, NOT forward slashes (/).

The Rule

Windows File Path Requirements:

  • CORRECT: D:\repos\project\file.tsx
  • WRONG: D:/repos/project/file.tsx

This applies to:

  • Edit tool file_path parameter
  • Write tool file_path parameter
  • Read tool file_path parameter
  • All file operations on Windows systems

Why This Matters

Common error message when using forward slashes on Windows:

Error: ENOENT: no such file or directory

Root cause:

  • Windows native file system uses backslashes (\) as path separators
  • Forward slashes (/) work in some Windows contexts but NOT in Claude Code file tools
  • Git Bash displays paths with forward slashes but Windows APIs require backslashes
  • Claude Code's Read/Write/Edit tools use Windows native APIs that expect backslashes

🔍 Common Windows Path Issues in Claude Code

Issue 1: Forward Slashes in Tool Calls

Symptom:

Edit tool fails with "file not found" or "no such file or directory"

Cause: Using forward slashes copied from Git Bash output:

# Git Bash shows:
/s/repos/claude-code-marketplace/file.tsx

Incorrect usage:

Edit(file_path="/s/repos/myproject/file.tsx")

Correct usage:

Edit(file_path="S:\repos\myproject\file.tsx")

Solution steps:

  1. Identify the Windows drive letter (e.g., /s/S:)
  2. Replace forward slashes with backslashes
  3. Add drive letter with colon
  4. Use absolute Windows path format

Issue 2: Git Bash MINGW Path Format

Symptom: Paths like /s/repos/ or /c/Users/ don't work in Edit/Write/Read tools

MINGW path format explained:

  • Git Bash uses POSIX-style paths on Windows
  • Drive letters are represented as /c/, /d/, /s/, etc.
  • These are MINGW virtual paths, not Windows paths
  • Claude Code tools need Windows-native paths

Conversion table:

Git Bash (MINGW) Windows Native
/c/Users/name/ C:\Users\name\
/d/repos/project/ D:\repos\project\
/s/work/code/ S:\work\code\
/mnt/c/Windows/ C:\Windows\

Conversion algorithm:

  1. Extract drive letter from first path segment (e.g., /s/S)
  2. Add colon to drive letter (e.g., SS:)
  3. Replace remaining forward slashes with backslashes
  4. Combine: S: + \repos\project\file.tsx

Issue 3: Relative Paths in Git Bash

Symptom: Relative paths from Git Bash don't resolve correctly in Claude Code tools

Cause: Git Bash current working directory uses MINGW format, but Claude Code tools use Windows format

Example scenario:

# In Git Bash:
pwd
# Shows: /s/repos/my-project

# User provides relative path:
./src/components/Button.tsx

Problem: Claude Code can't resolve ./src/ from MINGW /s/repos/my-project

Solution:

  1. Get the full Windows path from Git Bash:
    pwd -W
    # Shows: S:/repos/my-project (Windows format with forward slashes)
    
  2. Convert to proper Windows path: S:\repos\my-project
  3. Append relative path with backslashes: S:\repos\my-project\src\components\Button.tsx

Issue 4: Environment Variable Expansion

Symptom: Paths with environment variables like $HOME or %USERPROFILE% fail

Git Bash environment variables:

echo $HOME
# Shows: /c/Users/username (MINGW format)

Windows environment variables:

echo %USERPROFILE%
# Shows: C:\Users\username (Windows format)

Best practice:

  • Avoid environment variables in file paths for Claude Code tools
  • Use absolute Windows paths instead
  • If user provides $HOME, ask them to run echo $HOME and convert the result

Issue 5: Spaces in File Paths

Symptom: Paths with spaces break or cause "file not found" errors

Correct handling:

✅ CORRECT: Edit(file_path="C:\Program Files\My App\config.json")
✅ CORRECT: Edit(file_path="D:\My Documents\project\file.txt")

Notes:

  • Do NOT add quotes around the path in the parameter
  • The tool call itself handles escaping
  • Spaces are fine in Windows paths when using backslashes

Issue 6: UNC Network Paths

Symptom: Network paths like \\server\share\file.txt fail

Windows UNC format:

\\server\share\folder\file.txt

Git Bash representation:

//server/share/folder/file.txt

Correct usage in Claude Code:

Edit(file_path="\\\\server\\share\\folder\\file.txt")

Note: Backslashes must be doubled in some contexts due to escaping, but Claude Code tools handle this automatically.

🔧 Path Detection and Conversion Algorithm

When a user provides a file path, follow this decision tree:

Step 1: Identify Path Format

MINGW Path (Git Bash):

  • Starts with / followed by single letter and / (e.g., /c/, /s/)
  • Example: /s/repos/project/file.tsx
  • Action: Convert to Windows format

Windows Path:

  • Starts with drive letter and colon (e.g., C:, D:)
  • Uses backslashes or forward slashes
  • Example: S:\repos\project\file.tsx or S:/repos/project/file.tsx
  • Action: Ensure backslashes are used

Relative Path:

  • Starts with ./ or ../ or just filename
  • Example: ./src/components/Button.tsx
  • Action: Request full path from user or detect current directory

UNC Path:

  • Starts with \\ or //
  • Example: \\server\share\file.txt
  • Action: Ensure backslashes are used

Step 2: Conversion Process

For MINGW paths (/x/...):

Input: /s/repos/myproject/src/components/Button.tsx

Process:
1. Extract drive letter: "s"
2. Uppercase: "S"
3. Add colon: "S:"
4. Replace remaining slashes: \repos\myproject\src\components\Button.tsx
5. Combine: S:\repos\myproject\src\components\Button.tsx

Output: S:\repos\myproject\src\components\Button.tsx

For Windows paths with forward slashes (X:/...):

Input: S:/repos/project/file.tsx

Process:
1. Detect drive letter already present: "S:"
2. Replace forward slashes with backslashes: \repos\project\file.tsx
3. Combine: S:\repos\project\file.tsx

Output: S:\repos\project\file.tsx

For relative paths:

Input: ./src/components/Button.tsx
Current directory (from user or detection): S:\repos\my-project

Process:
1. Remove ./ prefix
2. Replace forward slashes: src\components\Button.tsx
3. Combine with current directory: S:\repos\my-project\src\components\Button.tsx

Output: S:\repos\my-project\src\components\Button.tsx

🛠️ Interactive Path Fixing Workflow

When you encounter a file path error on Windows:

Step 1: Detect the Error

Error indicators:

  • "ENOENT: no such file or directory"
  • "file not found"
  • Edit/Write/Read tool failure
  • User mentions "Windows" or "Git Bash"

Step 2: Analyze the Path

Ask yourself:

  1. Was the path provided by the user in MINGW format?
  2. Does the path use forward slashes?
  3. Is it a relative path?
  4. Did I receive the path from a Git Bash command output?

Step 3: Request Clarification (If Needed)

If the path is ambiguous, ask:

I see you're working on Windows with Git Bash. To ensure I use the correct path format,
could you run this command and share the output?

pwd -W

This will give me the Windows-formatted path.

Step 4: Convert and Retry

Conversion template:

I'll convert the path from Git Bash format to Windows format:
- Git Bash: /s/repos/project/file.tsx
- Windows: S:\repos\project\file.tsx

Retrying with the correct Windows path...

Step 5: Verify Success

After conversion, verify the operation succeeded and explain what was fixed:

✅ Successfully edited the file using the Windows path format (S:\repos\...).

Note: On Windows with Git Bash, always use backslashes (\) in file paths for
Claude Code's Edit/Write/Read tools, even though Git Bash displays paths with
forward slashes (/).

📋 Troubleshooting Checklist

When file operations fail on Windows:

  • Check path separator: Are backslashes (\) used instead of forward slashes (/)?
  • Check drive letter format: Is it C: not /c/?
  • Check MINGW conversion: Did you convert /x/path to X:\path?
  • Check relative vs absolute: Is the path absolute starting with drive letter?
  • Check environment variables: Did you expand $HOME or %USERPROFILE%?
  • Check spaces: Are spaces in the path handled correctly?
  • Check UNC paths: Are network paths using \\server\share format?
  • Check file existence: Does the file actually exist at that path?

🎯 Quick Reference: Path Conversion Examples

Context Path Format Claude Code Tool Format
Git Bash pwd /s/repos/project S:\repos\project
Git Bash relative ./src/file.tsx S:\repos\project\src\file.tsx
Windows Explorer S:\repos\project\file.tsx S:\repos\project\file.tsx
Windows with / S:/repos/project/file.tsx S:\repos\project\file.tsx
MINGW full path /c/Users/name/file.txt C:\Users\name\file.txt
Network share (Git Bash) //server/share/file.txt \\server\share\file.txt
WSL path /mnt/c/repos/project C:\repos\project

🚀 Best Practices for Windows File Operations

1. Always Convert Paths Proactively

Don't wait for errors - If you see a path that looks like MINGW format, convert it immediately:

User provides: /s/repos/project/file.tsx
You think: "This is MINGW format, I need to convert it to S:\repos\project\file.tsx"
You do: Convert before calling Edit/Write/Read tool

2. Use pwd -W in Git Bash

When you need current directory on Windows:

# Instead of:
pwd                    # Shows: /s/repos/project (MINGW format)

# Use:
pwd -W                 # Shows: S:/repos/project (Windows format with /)

Then convert the forward slashes to backslashes.

3. Communicate Path Format Changes

Always explain when you convert paths:

I'll convert the Git Bash path to Windows format for the Edit tool:
- From: /s/repos/project/file.tsx
- To: S:\repos\project\file.tsx

This helps users understand the requirement and learn for future interactions.

4. Validate Before Tool Use

Before calling Edit/Write/Read tools on Windows:

Pre-flight checklist:
✅ Path starts with drive letter and colon (e.g., C:, S:)
✅ Path uses backslashes (\) not forward slashes (/)
✅ Path is absolute, not relative
✅ No MINGW format (no /c/, /s/, etc.)

5. Handle User-Provided Paths Carefully

User might provide paths in various formats:

  • Copy-pasted from Git Bash (MINGW format)
  • Copy-pasted from Windows Explorer (Windows format)
  • Typed manually (could be either)
  • From command output (varies by tool)

Always detect and convert as needed.

🐛 Common Error Messages and Solutions

Error: "ENOENT: no such file or directory"

Most likely cause: Forward slashes instead of backslashes

Solution:

  1. Check if path uses forward slashes
  2. Convert to backslashes
  3. Verify drive letter format
  4. Retry operation

Error: "Invalid file path"

Most likely cause: MINGW path format

Solution:

  1. Detect /x/ pattern at start
  2. Convert to X: format
  3. Replace all forward slashes with backslashes
  4. Retry operation

Error: "Access denied" or "Permission denied"

Most likely cause: Path is correct but permissions issue

Solution:

  1. Verify file exists and is accessible
  2. Check if file is locked by another process
  3. Verify user has read/write permissions
  4. Consider running Git Bash as administrator

Error: "File not found" but path looks correct

Possible causes:

  1. Path has hidden characters (copy-paste issue)
  2. File extension is hidden in Windows
  3. Path has trailing spaces
  4. Case sensitivity (some tools are case-sensitive)

Solution:

  1. Ask user to run ls -la in Git Bash to verify exact filename
  2. Check for file extensions
  3. Trim whitespace from path
  4. Match exact case of filename

📚 Platform-Specific Knowledge

Windows File System Characteristics

Path characteristics:

  • Drive letters: A-Z (typically C: for system, D-Z for additional drives)
  • Path separator: Backslash (\)
  • Case insensitive: File.txt same as file.txt
  • Special characters: Avoid < > : " | ? * in filenames
  • Maximum path length: 260 characters (legacy limit, can be increased)

Git Bash on Windows

Git Bash is a POSIX-compatible environment:

  • Uses MINGW (Minimalist GNU for Windows)
  • Translates POSIX paths to Windows paths internally
  • Commands like ls, pwd, cd use POSIX format
  • Native Windows programs need Windows format paths

Key insight: Git Bash displays and accepts POSIX paths, but Windows APIs (used by Claude Code) require Windows paths.

WSL (Windows Subsystem for Linux)

WSL path mounting:

  • Windows drives mounted at /mnt/c/, /mnt/d/, etc.
  • WSL path: /mnt/c/Users/name/project
  • Windows path: C:\Users\name\project

Conversion:

  1. Replace /mnt/x/ with X:
  2. Replace forward slashes with backslashes

🎓 Teaching Users

When explaining path issues to users, use this template:

I encountered a path format issue. Here's what happened:

**The Problem:**
Claude Code's file tools (Edit, Write, Read) on Windows require paths in Windows
native format with backslashes (\), but Git Bash displays paths in POSIX format
with forward slashes (/).

**The Path Formats:**
- Git Bash shows: /s/repos/project/file.tsx
- Windows needs: S:\repos\project\file.tsx

**The Solution:**
I've converted your path to Windows format. For future reference, when working
with Claude Code on Windows with Git Bash:
1. Use backslashes (\) in file paths
2. Use drive letter format (C:, D:, S:) not MINGW format (/c/, /d/, /s/)
3. Run `pwd -W` in Git Bash to get Windows-formatted paths

**The Fix:**
✅ Now using: S:\repos\project\file.tsx

🔍 Advanced Scenarios

Scenario 1: Mixed Path Contexts

User is working with both WSL and Git Bash:

  • Ask which environment they're in
  • Use appropriate conversion
  • Document the choice

Windows symbolic links:

mklink /D C:\link C:\target

Handling:

  • Follow the link to actual path
  • Use actual path in tool calls
  • Inform user if link resolution needed

Scenario 3: Docker Volumes

Docker volume mounts on Windows:

docker run -v C:\repos:/app

Path translation:

  • Outside container: C:\repos\file.txt
  • Inside container: /app/file.txt
  • Use context-appropriate format

Success Criteria

You've successfully handled Windows paths when:

  1. All Edit/Write/Read tool calls use backslashes on Windows
  2. MINGW paths are converted before tool use
  3. Relative paths are resolved to absolute Windows paths
  4. User understands why conversion was necessary
  5. File operations succeed without path-related errors
  6. Path format is consistent throughout the session

🆘 When to Use This Skill

PROACTIVELY apply this knowledge when:

  1. User mentions they're on Windows
  2. User mentions Git Bash or MINGW
  3. You see paths starting with /c/, /s/, etc.
  4. Edit/Write/Read tool fails with "file not found"
  5. User provides paths with forward slashes on Windows
  6. You need to read/edit/write files on Windows system

This skill is CRITICAL for Windows users - Path format errors are the #1 cause of file operation failures on Windows with Git Bash.