[BUG] Cowork serves stale cached content every session — CLAUDE.md never refreshes, skills revert to old version after install
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?
Cowork caches both CLAUDE.md and skill SKILL.md files at some point and serves those frozen copies indefinitely, regardless of edits made on disk or reinstalls done via the 'Save skill' button.
Problem 1 — CLAUDE.md never refreshes:
Editing ~/.claude/CLAUDE.md has no effect on new sessions. The stale version is injected into the system prompt on every session start. Confirmed across 21 consecutive sessions — every session cache contains the exact same 14,334-byte file, while the disk version is 16,900+ bytes and was last updated on 2026-05-04.
Problem 2 — Skills revert to old version even after reinstall:
After editing a skill's SKILL.md and reinstalling via the 'Save skill' button, Cowork frequently reverts to an older cached version in subsequent sessions. The updatedAt timestamp in manifest.json updates correctly, but the SKILL.md content served to Claude does not always match what was installed. This causes Claude to follow outdated skill instructions even after a confirmed reinstall.
Canary test evidence (2026-05-06):
- Added unique line to
~/.claude/CLAUDE.md→ not present in new session - Added unique line to a skill's SKILL.md, reinstalled via Save skill → not consistently present in new sessions
- 21 session cache folders examined: all contain identical stale CLAUDE.md (14,334 bytes)
Financial impact:
Every session injects stale instructions into the context window. The user pays for tokens from outdated rules they can't update or remove. Correction overhead when Claude follows a stale rule adds further cost. This is a direct, recurring, per-session financial charge to paying users with no reliable workaround.
App version: v2.1.128 (macOS)
Account type: Paid
Sessions tested: 21 consecutive sessions
What Should Happen?
~/.claude/CLAUDE.md should be read fresh from disk at each Cowork session start. The current session should reflect any edits made to the file since the last session. If caching is required for performance, it should be invalidated when the file's mtime or checksum changes — the same way skills are updated via .skill reinstall.
Error Messages/Logs
Steps to Reproduce
To reproduce CLAUDE.md staleness:
- Edit
~/.claude/CLAUDE.md— add a unique line such as# CANARY-TEST-DATE - Quit and reopen the Claude desktop app
- Start a new Cowork session
- Ask Claude: "Does your CLAUDE.md contain a line starting with CANARY-TEST-DATE?"
- Result: it does not. The session cache at
/var/folders/.../T/claude-hostloop-plugins/<session-id>/CLAUDE.mdcontains the pre-edit version.
To reproduce skill reversion:
- Edit any installed skill's
SKILL.md— add a unique marker line - Reinstall the skill by zipping it as a
.skillfile and clicking "Save skill" in Cowork - Confirm install: the
updatedAttimestamp inmanifest.jsonupdates correctly - Start a new Cowork session (or sometimes even the same session after a while)
- Invoke the skill and check whether the marker line is present in its instructions
- Result: the skill frequently reverts to an older version despite the confirmed install
Confirmed: 21 consecutive session folders all contain the same stale 14,334-byte CLAUDE.md, with disk version at 16,900+ bytes last modified 2026-05-04.
Claude Model
Sonnet (default)
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.128 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
Financial impact detail: 14,334 bytes of stale instructions are injected into every session context window — the user pays for tokens from outdated rules on every single session, with no way to stop it.
Workarounds we've had to build to compensate:
- Mandatory "read CLAUDE.md from disk" instruction at top of CLAUDE.md (only effective once bug is fixed)
- Step 0 block in every skill's SKILL.md that reads CLAUDE.md fresh before executing
- An
update-memoryskill that must be manually triggered each session - A 5-step skill editing process with a separate executor copy path
plugin.jsonversion bumping on every skill edit to force cache invalidation
Related issues: #45433, #28641, #17361, #20507
This bug is not new — it has persisted across at least 21 consecutive sessions going back to 2026-05-01, and through many app restarts (v2.1.128).
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗