[Cowork] User-created skills stored in ephemeral session dirs — silently deleted on cleanup
Summary
User-created skills (SKILL.md files) built during Claude Cowork sessions are stored in ephemeral per-session directories (local_<uuid>/.claude/skills/) and get permanently deleted when the session is cleaned up. There is no warning, no confirmation, and no mechanism to promote ephemeral skills to persistent storage.
Additionally, there is no shared skill or memory storage across Claude's four desktop products (Claude Chat, Cowork, Claude Code terminal, Claude Code VSCode extension). Each product uses its own isolated storage silo.
Reproduction
- Open a Cowork session
- Use the skill-creator to build a custom skill (e.g. from MR review patterns)
- Close the session
- Open a new Cowork session
- The skill is gone — no trace anywhere on disk
Investigation: Five Isolated Storage Silos
A full filesystem investigation reveals the following storage architecture:
| Product | Storage Path | Persistent? | Shared? |
|---------|-------------|-------------|---------|
| Claude Code (terminal) | ~/.claude/plugins/marketplaces/ | ✅ Yes | With VSCode ext |
| Claude Code (VSCode) | ~/.claude/ (same as terminal) | ✅ Yes | With terminal |
| Cowork (built-in skills) | ~/.config/Claude/local-agent-mode-sessions/skills-plugin/.../skills/ | ✅ Yes | ❌ No |
| Cowork (user-created) | ~/.config/Claude/local-agent-mode-sessions/.../local_<uuid>/.claude/skills/ | ❌ NO | ❌ No |
| Cline (VSCode ext) | ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/ | ✅ Yes | ❌ No |
The critical failure is in row 4: Cowork's skill-creator writes user-created skills to the per-session local_<uuid> directory, which is ephemeral.
Additional Cross-Product Gaps
CLAUDE.mdnot shared:~/.claude/CLAUDE.md(Claude Code's persistent memory) is not read by Cowork. Knowledge built up in Claude Code is invisible to Cowork, and vice versa.- No skill discovery across products: Claude Code plugins in
~/.claude/plugins/are invisible to Cowork. Cowork's built-in skills are invisible to Claude Code. - No warning before destructive cleanup: When a Cowork session directory is cleaned up, user-created artifacts (skills, files, notes) are silently deleted.
Impact
In my case, a custom anti-flicker skill was collaboratively built over a full Cowork session by reviewing merge request diffs, extracting flicker-fix patterns from production code, and encoding them into a reusable SKILL.md. This skill was silently deleted when the session was cleaned up. The effort (~30–45 minutes of interactive work) was entirely lost.
Proposed Solution
- Single skill directory: Designate
~/.claude/skills/(or equivalent) as the canonical location for user-created skills. All products should read from and write to this location. - Shared memory file:
CLAUDE.mdshould be readable by all products. - Pre-cleanup promotion: Before cleaning up a Cowork session, scan for user-created skills and offer to promote them to persistent storage. Never silently delete user work.
- Cross-product skill registry: Skills created in any product should be discoverable and usable in all others.
- Skill versioning/backup: Skills represent significant user investment and should be protected from accidental deletion.
Current Workaround
As an interim measure, the following workaround is functional:
- Created
~/.claude/skills/as a centralized, persistent skill store - Symlinked user skills from
~/.claude/skills/into Cowork'sskills-plugindirectory - Verified that Cowork's VM sandbox resolves these symlinks correctly (skills are readable from inside the VM)
- Created a
promote-skill.shscript that copies skills from ephemeral session dirs to the centralized store and creates the symlink - Documented the convention in
~/.claude/CLAUDE.md
This workaround is fragile (depends on symlink resolution behavior that could change) and requires manual intervention after every skill creation. A proper solution needs to be built into the product.
Environment
- OS: Manjaro Linux (Arch-based), GNOME 49, Wayland
- Claude Desktop: latest as of March 6, 2026
- Claude Code VSCode extension: anthropic.claude-code 2.1.70
- Also have Cline (saoudrizwan.claude-dev 3.70.0)
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
This is a real problem — skills created in Cowork sessions are ephemeral by design but users expect them to persist.
Prevention: Stop hook to backup skills
Manual recovery
After a Cowork session, check for ephemeral skill dirs before they're cleaned up:
Best practice
When creating skills in Cowork, immediately copy them to
~/.claude/skills/or your project's.claude/skills/directory before ending the session.Cowork just doesn't seem like it's production-ready for a lot of reasons, and this is the latest for me. Adding what I found after spending a lot of tokens (and a lot of hours) chasing this down, because the skills storage model in Cowork is completely undocumented and the debugging cost is on paying customers.
What appears to actually be happening
Cowork does not load skills from
~/.claude/skills/. That's the path every bit of documentation and every intuition points to, and it is wrong.The actual location on macOS is:
That's where the Cowork Personal skills panel reads from. The directory is user-owned and writable (
drwxr-xr-x, 755). But the timestamps on everySKILL.mdin there match within seconds of each other, which points to Cowork re-hydrating the directory from some upstream source on session or app startup. I have not been able to identify the source from outside. TheClaude.appbundle contains no skills (confirmed viafind /Applications/Claude.app -type d -name skills), and the bundled data under~/Library/Application Support/Claude/vm_bundles/doesn't obviously contain them either.Inside the Cowork sandbox, there are two skill mounts:
/sessions/<id>/mnt/.claude/skills/(read-only) maps to theskills-plugin/.../skills/location above. This is what the Personal panel loads./sessions/<id>/mnt/skills/(writable) maps to the user's host~/.claude/skills/. This is where any in-session edits land.The user-observable consequence: edits made from inside a Cowork session to skills (via the Edit tool, the skill-creator skill, or anything else) are written to the host
~/.claude/skills/. Cowork never loads from there. So the edits appear to vanish the moment the session ends, even though they persist on disk in the wrong location for Cowork's purposes.Why this matters as a customer issue
I pay for Claude. I built workflows on top of Cowork skills, assuming that editing a skill from inside the product would persist to the product. It doesn't.
None of this is documented. Nothing in the Cowork product surfaces the skills-plugin directory, warns that in-session edits go to a different location, or explains the re-sync behavior. The result is that any customer who tries to customize their Cowork skills will burn time and tokens chasing a ghost, and most of them will reasonably conclude the feature is broken and stop using it.
Requests
skills-plugin/.../skills/gets re-hydrated from an upstream source, say so explicitly and document how to contribute to that source.~/.claude/skills/is the single source of truth. The current split is confusing and wastes customer time.Happy to share the specific paths, timestamps, and tool output from my investigation if that would help the triage pass. I'd just like to stop paying Anthropic to debug Anthropic's product.
Real hassle - even though I specified skills to be saved globally for all sessions, they were persisted into the ephemeral session. Manually copied into the central library which seems to work, but I have to double check skill versioning, etc. myself.