[BUG] Cowork serves stale cached content every session — CLAUDE.md never refreshes, skills revert to old version after install

Resolved 💬 2 comments Opened May 6, 2026 by Alex-infer Closed Jun 3, 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?

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:

  1. Edit ~/.claude/CLAUDE.md — add a unique line such as # CANARY-TEST-DATE
  2. Quit and reopen the Claude desktop app
  3. Start a new Cowork session
  4. Ask Claude: "Does your CLAUDE.md contain a line starting with CANARY-TEST-DATE?"
  5. Result: it does not. The session cache at /var/folders/.../T/claude-hostloop-plugins/<session-id>/CLAUDE.md contains the pre-edit version.

To reproduce skill reversion:

  1. Edit any installed skill's SKILL.md — add a unique marker line
  2. Reinstall the skill by zipping it as a .skill file and clicking "Save skill" in Cowork
  3. Confirm install: the updatedAt timestamp in manifest.json updates correctly
  4. Start a new Cowork session (or sometimes even the same session after a while)
  5. Invoke the skill and check whether the marker line is present in its instructions
  6. 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:

  1. Mandatory "read CLAUDE.md from disk" instruction at top of CLAUDE.md (only effective once bug is fixed)
  2. Step 0 block in every skill's SKILL.md that reads CLAUDE.md fresh before executing
  3. An update-memory skill that must be manually triggered each session
  4. A 5-step skill editing process with a separate executor copy path
  5. plugin.json version 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).

View original on GitHub ↗

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