Skip to content

Update skill loading approval requirements - #142

Open
loganaden wants to merge 1 commit into
modelcontextprotocol:mainfrom
cyberstormdotmu:loganaden-patch-skills_stricter_req
Open

loganaden wants to merge 1 commit into
modelcontextprotocol:mainfrom
cyberstormdotmu:loganaden-patch-skills_stricter_req

Conversation

@loganaden

Copy link
Copy Markdown

Motivation and Context

Improves security

Breaking Changes

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

@ox5qmuteb-dotcom

Copy link
Copy Markdown

نسخة مكررة من

olaservo pushed a commit that referenced this pull request Sep 16, 2026
The stable Skills page missed the final SEP's Agent Skills compatibility
clause, and its examples used abbreviated hashes and inconsistent byte
sizes. Archived drafts also retained current-sounding source-of-truth
guidance.

This corrects the stable page directly to match already-established
requirements: restores the compatibility clause, shows the resources
capability and server/discover, explains omitted request metadata, and
makes the example manifests and content consistent. It also labels
archived documents as historical and fixes the SEP domain in AGENTS.md.
This is an editorial alignment, not a new extension proposal; #142
remains separate.

Validation: all JSON examples parsed; all 13 manifest entries checked
against sample bytes for SHA-256 and size; the corrected specification
builds with the VitePress publishing site; git diff --check passed.

AI assistance: prepared with Codex.
@Paraphern

Copy link
Copy Markdown

Field support for this, plus one gap it leaves open.

The executable-content line (fetched before approval, hashed by the host, retained immutably, executed only if the retained bytes match) is exactly the loop we run in production for skill files (rugsnare, open source): raw-octet sha-256 per file, recorded at approval, compared on every subsequent load - the digest is deliberately sha256sum-compatible so a host can verify outside our tool. From operating it, two hash regimes matter, and the spec's "hashed" deserves both:

  • Executable content: raw bytes. Execution is bytes; any normalization is a bypass vector. This is what the PR line correctly specifies.
  • Instructional text: canonicalized. SKILL.md content is instructions the model obeys, and it changes post-approval through benign regeneration as often as through malice (library-driven re-serialization, dialect flips). Raw-byte equality on instructional text produces approval fatigue; a canonicalized digest plus a surfaced was/became diff when it moves keeps the guarantee meaningful. We watched the most-deployed skill collection rewrite a core skill wholesale between two minor versions - same name, entirely different instructions - which is the instructional analogue of what this PR pins for executables.

A companion line worth considering: "Hosts SHOULD detect changes to previously approved instructional content and surface them to the user before the changed content takes effect." That is the missing half of approval-to-load: an approval that is silent about later mutation only covers the first load.

Implementation reference (Apache-2.0): https://github.com/Paraphern/rugsnare - per-file raw-octet digests for skills, canonicalized schema/prose split for MCP tool contracts, was/became diff reporting.

@loganaden

Copy link
Copy Markdown
Author

gentle reminder.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants