[BUG] Cowork platform issue: ${CLAUDE_PLUGIN_DATA} is being resolved to the wrong location so plugin config can't be persistent across sessions
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
The root cause is in the platform, not the skill content.
Every SKILL.md uses ${CLAUDE_PLUGIN_DATA} as a variable, which the Cowork system substitutes at skill-injection time. You can see it happened in this very conversation — when /kickoff loaded, ${CLAUDE_PLUGIN_DATA} was already expanded to the hardcoded path:
/sessions/tender-charming-dijkstra/mnt/.claude/plugins/data/hive-inline/
That path sits at the /mnt/ parent level — outside the bridged workspace folder SkylerDailyRoutine/. Only what's inside SkylerDailyRoutine/ is bridged to Windows and persists across sessions.
So the skills themselves are written correctly — they consistently use ${CLAUDE_PLUGIN_DATA}/config.json as the primary config path. The bug is that ${CLAUDE_PLUGIN_DATA} is being resolved to the wrong location by the platform. It should resolve to:
<workspace_root>/.claude/plugins/data/hive-inline/
i.e.
/sessions/tender-charming-dijkstra/mnt/SkylerDailyRoutine/.claude/plugins/data/hive-inline/
The consequence: In the current session, the skills can find the config we wrote to /mnt/.claude/... because the file exists in VM memory. But when the session resets, the VM is wiped and the config is gone — because it was never bridged to Windows. The config we manually copied into SkylerDailyRoutine/.claude/... will persist, but the skills won't look there.
Two things need to change before release:
- Platform fix (highest priority):
${CLAUDE_PLUGIN_DATA}must resolve relative to the selected workspace folder, not the/mnt/root. This is a Cowork engine issue.
- Skill resilience (nice to have): The
kickoffskill could add a third fallback check — look for config inside the workspace subfolder — as a workaround until the platform is fixed. Something like checking<workspace>/.claude/plugins/data/hive-inline/config.jsonexplicitly.
The notesFolder path issue you raised earlier (per-project vs global config) is a separate, secondary design question — but this path resolution bug is the blocker.
What Should Happen?
Cowrok plugin config should be readable/writeable across different chat sessions
Error Messages/Logs
Steps to Reproduce
${CLAUDE_PLUGIN_DATA} resolves to
/sessions/.../mnt/.claude/plugins/data/... (outside bridged workspace) instead of
<workspace>/.claude/plugins/data/... (inside bridged workspace). This means plugin data doesn't persist across
Cowork sessions despite being documented as persistent.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude 1.1.8359 (64248d) 2026-03-23T22:17:05.000Z
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
WSL (Windows Subsystem for Linux)
Additional Information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗