[Bug] Cowork "Save skill" install pipeline silently truncates SKILL.md files

Resolved 💬 3 comments Opened Apr 12, 2026 by alexbtrase Closed Apr 16, 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 "Save skill" install button in Cowork silently truncates SKILL.md files during installation. The .skill package (zip) contains the complete file, but the version written to the read-only skills FUSE mount is shorter. No error is shown to the user.

Environment:

  • Platform: Windows 11 (Microsoft Store version of Claude)
  • Skills mount: read-only FUSE (ro,nosuid,nodev,relatime)

Evidence (reproduced 3+ times):

shared-trase-reference:

  • Source file in /tmp: 192 lines, complete
  • Inside .skill zip after packaging: 192 lines, complete
  • After "Save skill" install: 178 lines, last line ends mid-word ("Alex's direc")

skill-creator-master:

  • Source file: 500 lines, ends with "Good luck!"
  • Inside .skill zip: 500 lines, complete
  • After install: 482 lines, last line contains garbled character

Key observations:

  • Truncation does NOT correlate with file size (33KB/485-line file installed fine, 16KB/192-line file truncated every time)
  • Truncation is deterministic -- repeated installs of the same package produce the same truncated result
  • The FUSE mount also caches aggressively -- manual repair via Windows filesystem doesn't immediately reflect in sessions
  • Multiple other installed skills show truncation signs, suggesting this affects many installs
  • Skills directory is read-only FUSE mount, so truncated files cannot be repaired from inside Cowork

What Should Happen?

The installed SKILL.md should be byte-for-byte identical to the SKILL.md inside the .skill zip package. If the install fails or produces a different file, an error should be surfaced to the user.

Error Messages/Logs

No error output -- the install completes silently with no indication of truncation.

Verification commands run from inside a Cowork session:

$ wc -l /sessions/*/mnt/.claude/skills/shared-trase-reference/SKILL.md
178

$ tail -1 /sessions/*/mnt/.claude/skills/shared-trase-reference/SKILL.md
...traces to a primary source (email, transcript, Notion page, Slack message, or Alex's direc

$ # Verify the .skill zip is intact:
$ unzip -o pkg-shared-trase-reference.skill -d /tmp/verify/
$ wc -l /tmp/verify/pkg-shared-trase-reference/SKILL.md
192

$ tail -1 /tmp/verify/pkg-shared-trase-reference/SKILL.md
...Format: "The previous draft '[subject]' has [specific issue] and should be deleted."

Steps to Reproduce

  1. Create a SKILL.md file with 192 lines (~16KB)
  2. Package it as a .skill zip using package_skill.py
  3. Verify the zip is intact: unzip and check wc -l shows 192 lines
  4. Click "Save skill" in the Cowork UI to install
  5. From inside a session, run: wc -l /sessions/*/mnt/.claude/skills/[skill-name]/SKILL.md
  6. Observe: line count is 178, not 192. Last line ends mid-word.
  7. Re-verify the .skill zip: still shows 192 lines. Truncation happened during install pipeline write.

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

Claude Code version: 2.1.92; issue is in Cowork though

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

PowerShell

Additional Information

Workaround: Manually copy the correct SKILL.md to the Windows filesystem skills directory via PowerShell, then restart sessions to clear the FUSE cache.

Skills path on Windows: C:\Users\[user]\AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\local-agent-mode-sessions\skills-plugin\[workspace-id]\[account-id]\skills\[skill-name]\SKILL.md

This is a significant workflow disruption for power users with many custom skills -- truncated skills silently degrade every session's output quality with no indication anything is wrong.

View original on GitHub ↗

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