Skip to content

install fails all Claude Code agent/hook writes when ~/.claude is a directory symlink — misleading "(target: does not exist or cannot be inspected)" #1722

Description

@chen5541741

Version

0.10.8

Platform

Windows (x64)

Install channel

GitHub release archive / install.sh / install.ps1

Binary variant

standard

What happened, and what did you expect?

Summary

On Windows, install (v0.10.8, via install.ps1) fails every Claude Code
agent-configuration write when ~/.claude is a directory symbolic link
(here C:\Users\mayn\.claudeI:\.claude, relocated because the system
drive is nearly full). The paths exist and are writable — the installer
appears to refuse to write through a reparse point, but the error says the
opposite.

Environment

  • Windows 10 Pro 10.0.19045, amd64
  • codebase-memory-mcp 0.10.8 (installed via install.ps1)
  • C:\Users\mayn\.claude = SymbolicLink → I:\.claude
  • Detected agents: Claude Code, VS Code

Observed

Claude Code:
  skills: 0 installed
error: agent_config agent=Claude Code op=agent_install path=C:/Users/mayn/.claude/agents/codebase-memory-scout.md (target: does not exist or cannot be inspected)
error: agent_config agent=Claude Code op=agent_install path=C:/Users/mayn/.claude/agents/codebase-memory.md (target: does not exist or cannot be inspected)
error: agent_config agent=Claude Code op=agent_install path=C:/Users/mayn/.claude/agents/codebase-memory-auditor.md (target: does not exist or cannot be inspected)
  mcp: C:/Users/mayn/.claude.json
error: agent_config agent=Claude Code op=hook_script_install path=C:/Users/mayn/.claude/hooks/cbm-code-discovery-gate.cmd (target: does not exist or cannot be inspected)
error: agent_config agent=Claude Code op=hook_script_install path=C:/Users/mayn/.claude/hooks/cbm-session-reminder.cmd (target: does not exist or cannot be inspected)
error: agent_config agent=Claude Code op=hook_script_install path=C:/Users/mayn/.claude/hooks/cbm-subagent-reminder.cmd (target: does not exist or cannot be inspected)
...
error: installation failed (exit code 1)

What this suggests:

  • Every write to a real path succeeded: ~/.claude.json (MCP registration),
    ~/.copilot/** (VS Code agents/skill/hooks), AppData\...\Code\User\mcp.json.
  • Every write under ~/.claude/** failed (3 agents, 1 skill, 3 hook scripts,
    and the settings.json hook registration).
  • Writing through the link manually works fine (e.g. Set-Content into
    ~/.claude/agents/ succeeds), so this is not a permission or filesystem
    problem — it looks like the installer deliberately refuses reparse-point
    paths.
  • install --dry-run on the same machine plans the same writes with no errors.

Requests

  1. Make the error state the real cause. Something like
    refusing reparse point: C:\Users\mayn\.claude (symlink → I:\.claude)
    instead of "does not exist or cannot be inspected", which sends users
    hunting for permission problems that don't exist.

  2. Consider supporting a symlinked ~/.claude. Relocating ~/.claude to
    another drive is a common Windows setup when the system drive is full, and
    Claude Code itself works fine with it — I verified the installed
    agents/hooks/skill all function correctly through the link. If the concern
    is writes being redirected by a pre-planted link, resolving the link and
    applying the same validation to the final real path (or an explicit opt-in
    flag) would preserve the guarantee while supporting this layout.

Workaround for anyone hitting this

Temporarily swap the link for a real directory, install, move the files,
restore the link (PowerShell, from an elevated-free shell):

cmd /c ren C:\Users\<you>\.claude .claude-link-bak
New-Item -ItemType Directory C:\Users\<you>\.claude
& "$env:LOCALAPPDATA\Programs\codebase-memory-mcp\codebase-memory-mcp.exe" install -y --force --dir="$env:LOCALAPPDATA\Programs\codebase-memory-mcp"
# copy agents\codebase-memory*.md, hooks\cbm-*.cmd, skills\codebase-memory\
# into the link target, merge the "hooks" key into the target settings.json
Remove-Item C:\Users\<you>\.claude -Recurse -Force
cmd /c ren C:\Users\<you>\.claude-link-bak .claude

Note this has to be repeated after every install.ps1 update.

Thanks for the project — the graph tools work great once installed.

Reproduction

Code being indexed: N/A — the failure happens during install's
agent-configuration phase, before any repository is indexed. No repo, file
path, or MCP query is involved.

Prerequisite setup (any machine with Claude Code installed, i.e.
~/.claude.json already exists) — make ~/.claude a directory symlink:

Move-Item "$env:USERPROFILE\.claude" "D:\claude-real"
cmd /c mklink /d "$env:USERPROFILE\.claude" "D:\claude-real"

(mklink /d needs Developer Mode or an elevated shell. A junction
mklink /j likely triggers the same code path since both are reparse
points, but I have only verified the symbolic-link case.)

Exact command:

irm https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.ps1 -OutFile install.ps1
.\install.ps1

which invokes, equivalently:

codebase-memory-mcp.exe install -y --force --dir="C:\Users\<you>\AppData\Local\Programs\codebase-memory-mcp"

Actual output (Claude Code section only; VS Code section succeeds):

Claude Code:
  skills: 0 installed
error: agent_config agent=Claude Code op=agent_install path=C:/Users/mayn/.claude/agents/codebase-memory-scout.md (target: does not exist or cannot be inspected)
error: agent_config agent=Claude Code op=agent_install path=C:/Users/mayn/.claude/agents/codebase-memory.md (target: does not exist or cannot be inspected)
error: agent_config agent=Claude Code op=agent_install path=C:/Users/mayn/.claude/agents/codebase-memory-auditor.md (target: does not exist or cannot be inspected)
  mcp: C:/Users/mayn/.claude.json
error: agent_config agent=Claude Code op=hook_script_install path=C:/Users/mayn/.claude/hooks/cbm-code-discovery-gate.cmd (target: does not exist or cannot be inspected)
error: agent_config agent=Claude Code op=hook_script_install path=C:/Users/mayn/.claude/hooks/cbm-session-reminder.cmd (target: does not exist or cannot be inspected)
error: agent_config agent=Claude Code op=hook_script_install path=C:/Users/mayn/.claude/hooks/cbm-subagent-reminder.cmd (target: does not exist or cannot be inspected)
...
error: installation failed (exit code 1)

Expected output: the Claude Code section completes like the VS Code one —
3 agents installed, skill installed, hook scripts installed, hooks registered
in settings.json — and install exits 0. (Or, if writing through a reparse
point is a deliberate hard refusal, an error that says so — see Requests.)

Logs


Diagnostics trajectory (memory / performance / leak issues)


Project scale (if relevant)

No response

Confirmations

  • I searched existing issues and this is not a duplicate.
  • My reproduction uses shareable code (a dummy snippet or a public OSS repository), not proprietary code.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingeditor/integrationEditor compatibility and CLI integrationwindowsWindows-specific issues

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions