[BUG] Chat - Stale skill file content via view tool — repeated across sessions
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?
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" />
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗