[Cowork] User-created skills stored in ephemeral session dirs — silently deleted on cleanup

Status Open
Reported on v2.1.70
Maintainer reply None cached
Activity 6 comments · opened Mar 6, 2026

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

  1. Open a Cowork session
  2. Use the skill-creator to build a custom skill (e.g. from MR review patterns)
  3. Close the session
  4. Open a new Cowork session
  5. 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.md not 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

  1. 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.
  2. Shared memory file: CLAUDE.md should be readable by all products.
  3. 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.
  4. Cross-product skill registry: Skills created in any product should be discoverable and usable in all others.
  5. 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's skills-plugin directory
  • Verified that Cowork's VM sandbox resolves these symlinks correctly (skills are readable from inside the VM)
  • Created a promote-skill.sh script 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)

View original on GitHub ↗

3 Comments

yurukusa · 5 months ago

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

#!/bin/bash
# backup-skills.sh — save skills before session cleanup
# TRIGGER: Stop

PERSISTENT_DIR="$HOME/.claude/skills"
mkdir -p "$PERSISTENT_DIR"

# Find and copy skills from ephemeral session dirs
for skill_dir in /tmp/claude-*/local_*/.claude/skills/*/; do
  if [ -d "$skill_dir" ]; then
    SKILL_NAME=$(basename "$skill_dir")
    if [ ! -d "$PERSISTENT_DIR/$SKILL_NAME" ]; then
      cp -r "$skill_dir" "$PERSISTENT_DIR/$SKILL_NAME"
      echo "📋 Backed up skill: $SKILL_NAME" >&2
    fi
  fi
done
exit 0

Manual recovery

After a Cowork session, check for ephemeral skill dirs before they're cleaned up:

find /tmp -path '*/local_*/.claude/skills/*/SKILL.md' 2>/dev/null
# Copy to persistent storage:
# cp -r /tmp/claude-XXX/local_YYY/.claude/skills/my-skill ~/.claude/skills/

Best practice

When creating skills in Cowork, immediately copy them to ~/.claude/skills/ or your project's .claude/skills/ directory before ending the session.

thehhugg · 4 months ago

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:

~/Library/Application Support/Claude/local-agent-mode-sessions/skills-plugin/<plugin-uuid>/<session-uuid>/skills/

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 every SKILL.md in 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. The Claude.app bundle contains no skills (confirmed via find /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 the skills-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

  1. Document the skills storage architecture publicly. Specifically: where Cowork loads skills from, where user edits are written, whether the load location is managed or free, and how to persist customizations.
  2. If skills-plugin/.../skills/ gets re-hydrated from an upstream source, say so explicitly and document how to contribute to that source.
  3. Ideally, unify skill storage between Cowork and Claude Code CLI so that ~/.claude/skills/ is the single source of truth. The current split is confusing and wastes customer time.
  4. At minimum, add a warning in the Cowork UI when a user edits a skill from within a session, noting that the edit may not persist to the location Cowork loads from.

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.

rogerpembery · 4 months ago

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.

Showing cached comments. Read the full discussion on GitHub ↗