[BUG] Cowork platform issue: ${CLAUDE_PLUGIN_DATA} is being resolved to the wrong location so plugin config can't be persistent across sessions

Resolved 💬 2 comments Opened Mar 24, 2026 by bluezod Closed Apr 22, 2026

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:

  1. 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.
  1. Skill resilience (nice to have): The kickoff skill 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.json explicitly.

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_

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗