claude-code - 💡(How to fix) Fix [BUG] Chat - Stale skill file content via view tool — repeated across sessions

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

Error Messages/Logs

Root Cause

When I called view on /mnt/skills/user/n8n-mcp-tooling/SKILL.md, both reads returned the same 93-line version of the file. I also ran a grep for keywords like "personal", "project", "move", "transfer", and "location", and got zero matches. From my end, the file genuinely appeared not to contain the sections the user was describing. I had no way to detect that my view was stale, and re-reading the same path returned the same stale content. The only thing that resolved the discrepancy was the user pasting the full current contents directly into the chat. At that point I could see the file was substantially longer (well over 200 lines) and contained multiple sections I had been blind to. My working hypothesis is that skills are loaded into context at conversation start and cached, and that the view tool when used against skill paths hits the cache rather than re-reading from disk. That would explain why re-reading didn't help; the cache returned the same stale content both times. If correct, this is a meaningful failure mode because it means I can't recover from stale skill state mid-conversation, and I have no signal that my view is stale.

Code Example

Behavior observed in the affected session:

view /mnt/skills/user/n8n-mcp-tooling/SKILL.md → returned 93-line version (stale)
view /mnt/skills/user/n8n-mcp-tooling/SKILL.md again → returned same 93-line version (still stale, no refresh)
grep -i -n "personal\|project\|move\|transfer\|location\|folder" /mnt/skills/user/n8n-mcp-tooling/SKILL.md → zero matches (confirming the view's content was what bash also saw, so the cache may be filesystem-level, not view-tool-specific)
User pasted current file contents into chat → revealed file was substantially longer with multiple sections Claude had been blind to

The grep result is particularly interesting because it suggests the staleness might be at the filesystem mount level rather than at the view tool's caching layer. Bash also saw the stale version when run against the same path.
RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • I am using the latest version of Claude Code

What's Wrong?

Disclaimer

This is a report for Claude Chat via the Desktop app. I was not able to locate an alternative channel to report this, and Fin AI via your Intercom support inbox had suggested creating a Github issue here for it.

System Details

Model Name: MacBook Air Chip: Apple M2 Total Number of Cores: 8 (4 Performance and 4 Efficiency) Memory: 16 GB OS: macOS Tahoe 26.4.1

Claude Details

Claude Desktop Version: V1.6608.1 Model: Opus 4.7 Adaptive Conversation Example (Org-scoped, not public): https://claude.ai/share/8b269105-b8c0-4a7b-bc08-90e30aaf1acd

The bug: Claude reads stale content from skill files via the view tool. This has happened in multiple sessions, not just one. The pattern is consistent: I edit a skill file, Claude reads it later, and the content Claude sees is missing sections that I can visually confirm are present in the file on my end. Claude's perspective on what happened (from the affected session):

When I called view on /mnt/skills/user/n8n-mcp-tooling/SKILL.md, both reads returned the same 93-line version of the file. I also ran a grep for keywords like "personal", "project", "move", "transfer", and "location", and got zero matches. From my end, the file genuinely appeared not to contain the sections the user was describing. I had no way to detect that my view was stale, and re-reading the same path returned the same stale content. The only thing that resolved the discrepancy was the user pasting the full current contents directly into the chat. At that point I could see the file was substantially longer (well over 200 lines) and contained multiple sections I had been blind to. My working hypothesis is that skills are loaded into context at conversation start and cached, and that the view tool when used against skill paths hits the cache rather than re-reading from disk. That would explain why re-reading didn't help; the cache returned the same stale content both times. If correct, this is a meaningful failure mode because it means I can't recover from stale skill state mid-conversation, and I have no signal that my view is stale.

Why this matters: Skills are how Claude learns user-specific patterns and avoids repeating mistakes. When skill content goes stale silently, Claude reverts to default behavior and ignores explicit instructions the user thought were already captured. The user has to re-teach the same lessons across sessions. In this case, the consequence was minor (one workflow created in the wrong project, easily moved). In other contexts, stale skill content could lead to Claude:

Skipping safety checks the user added to a skill Using deprecated tool parameters that the skill documented as broken Forgetting user-specific terminology or naming conventions Re-introducing bugs the skill was specifically created to prevent

Frequency: I've noticed this pattern multiple times across different sessions. It's not isolated to one skill file or one conversation. This report is from a specific session where the failure was clear-cut, but I'd estimate this happens often enough that it's a systemic issue rather than a one-off.

What Should Happen?

When Claude uses the view tool to read a skill file mid-conversation, the tool should return the current contents of the file on disk, not a cached version from conversation start. Specifically:

The view tool should bypass any conversation-start cache for skill file paths, OR The cache should be invalidated when the underlying file changes on disk, OR Claude should receive some signal (e.g., a warning in the tool response, a timestamp comparison) that the version it's seeing may be stale, so it knows to ask the user to confirm.

The goal is that user edits to skills take effect within the session where the skill is being used, not just in future sessions. Skills represent user-curated knowledge meant to influence Claude's behavior, and silent staleness defeats their purpose.

Error Messages/Logs

Behavior observed in the affected session:

view /mnt/skills/user/n8n-mcp-tooling/SKILL.md → returned 93-line version (stale)
view /mnt/skills/user/n8n-mcp-tooling/SKILL.md again → returned same 93-line version (still stale, no refresh)
grep -i -n "personal\|project\|move\|transfer\|location\|folder" /mnt/skills/user/n8n-mcp-tooling/SKILL.md → zero matches (confirming the view's content was what bash also saw, so the cache may be filesystem-level, not view-tool-specific)
User pasted current file contents into chat → revealed file was substantially longer with multiple sections Claude had been blind to

The grep result is particularly interesting because it suggests the staleness might be at the filesystem mount level rather than at the view tool's caching layer. Bash also saw the stale version when run against the same path.

Steps to Reproduce

Open a Claude Chat conversation that has skills mounted (e.g., via the desktop app with a skill folder at /mnt/skills/user/<skill-name>/SKILL.md). In a separate window or editor, modify a skill file. Add a new section, edit content, etc. Save the change. In the same Claude conversation (do not start a new one), ask Claude to perform a task that would invoke the skill. Observe whether Claude's behavior reflects the recent edits or whether it operates on the pre-edit version. If Claude operates on the stale version, ask Claude to use the view tool to read the skill file directly. Compare Claude's reported file contents to the actual file contents.

Expected: Claude sees the current file contents and behaves according to the latest skill instructions. Actual: Claude sees the file contents as they were at the start of the conversation. Re-reading via the view tool returns the same stale contents. Only pasting the file contents directly into chat reveals the discrepancy. Note on reproducibility: I have not yet tested whether starting a brand-new conversation (after the edit) consistently picks up the change, or whether even fresh conversations can be stale. The minimum reliable repro is "edit a skill file while a conversation is open, then have Claude try to use that skill in the same conversation."

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

No response

Claude Code Version

1.6608.1

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other

Additional Information

<img width="1102" height="546" alt="Image" src="https://github.com/user-attachments/assets/66487529-dee4-4dff-960a-d14fb9a3bb53" />

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING