{"version":"2.1.304","anchor":"mcp-skill-resources-file-read-validation-and-refusal-messag","canonical_anchor":"mcp-skill-resources-file-read-validation-and-refusal-messag","heading":"Skills from MCP servers are no longer fetched on connect, and their files are now verified","tier":"notice","area":"MCP","scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.304\/e\/mcp-skill-resources-file-read-validation-and-refusal-messag","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.304","markdown":"### Skills from MCP servers are no longer fetched on connect, and their files are now verified\n\nMCP-served skills are no longer fetched when servers connect, and their files are now checked against what the server listed\n\n**Unclear.** Whether this handling is switched on is not stated.\n\n**What**\n\nSkills are packaged instructions Claude can load. An MCP server, an outside tool provider that Claude Code connects to, can supply skills too. How Claude Code loads those changed:\n\n- MCP skills are no longer fetched with `fetchMcpSkillsForClient` when Claude Code discovers, connects to or reconnects to an MCP server, including the reconnect after signing in again. Each of those spots now passes an empty list, `Promise.resolve([])`, and the command list for each server is empty.\n\n- Clearing out a server's skills when it closes (`invalidateMcpSkillsExcept`) was removed, along with the writer for the cached SKILL.md copy and a helper that repaired stray files in the `mcp-skills` cache folder.\n\n- New code checks the supporting files of an MCP-served skill. A requested file address must match the skill's listed resources, and its size and sha256 checksum (a fingerprint of the contents) must match. Refused files get a specific reason: `not_found`, `unlisted`, `other_spelling`, `unparseable_uri`, `uri_too_long`, `size_mismatch`, `digest_mismatch` or `unexpected_contents`. One message reads: \"This file was not used, because its content does not match the checksum that the server listed for it.\"\n\n- Loading the body of an MCP skill now needs a verified record. Without one it fails with \"it has no record of the files that the skill was verified against. Do not try again.\"\n\n- A check that renders your prompt now skips entries marked `mcpSkill`.\n\n- A notice was added saying a permission rule now denies certain tools.\n\nParts of the new checking code sit behind a check (`Drn()`) that was not traced, so whether they are live is unresolved.\n\n**Why**\n\nSkills from MCP servers may stop appearing where they used to load, so watch for missing MCP skills. Where they do load, their files are checked against what the server listed, and Claude is told why a file was refused.\n\n- Area: MCP\n- Tier: You'll notice\n- Useful: 4\/5\n- Signal: 4\/5\n- Scope: individual\n- Heads-up: yes"}