The rule set
The 15 rules, and the official rule behind each
Every finding names a rule. Every rule names where it came from and which official requirement it expresses, so a reader can check the line rather than trust the stamp.
The rules are a reading of The AI Native Dev episode with Manoj Nair (20 October, 10:09 to 36:26), the Snyk ToxicSkills audit, the OWASP MCP Security Cheat Sheet and the MCP security best practices page. The official requirements are read from NIST SP 800-161 Rev 1, the EU Cyber Resilience Act, UK Cyber Essentials and the ASD Strategies to Mitigate Cyber Security Incidents.
SC-01 / source / High
Server or skill source is not verified
Who published this, and where can I check it?
What it looks for. An entry with no publisher, no registry page and no source URL, or a command that fetches an unqualified package from a public registry.
Why it matters. A skill or server is code from a stranger that the agent will run with your credentials. The episode calls skills and MCP servers the new npm: the same trust problem as a dependency, with more access. If you cannot name the publisher and the page you checked, you have not reviewed it.
The fix. Record the publisher, the registry page, the version you reviewed and the date. Prefer an official publisher, a signed release and a registry with provenance.
Source: The AI Native Dev, 13:15: the new supply chain. "skills and MCP servers are the new NPM of these agents"
US NIST SP 800-161 Rev 1 161R1-SR-6, Supplier Assessments and Reviews
EU EU Cyber Resilience Act Art. 13(5), Due diligence on third-party components, including open source
UK UK Cyber Essentials CE-MP.4, Application Allowlisting (Alternative)
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-01, Application control (Essential)
SC-02 / source / High
Version is not pinned
Can the code change after I approve it?
What it looks for. A missing version, latest, a star or range, a branch name, a floating Docker tag, or a bare npx or uvx package with no exact version.
Why it matters. Approval is a statement about a version, not a name. A tag that moves, a branch that advances or a registry package that publishes again turns a reviewed server into an unreviewed one. The MCP guidance calls this the rug pull: the definition changes after the user approved it.
The fix. Pin an exact version or a commit hash, record the digest, and require a new review when the pin changes.
Source: OWASP MCP Security Cheat Sheet: pin reviewed tool definitions. "Pin reviewed tool definitions using cryptographic hashes and require review when they change."
US NIST SP 800-161 Rev 1 161R1-SR-4, Provenance
EU EU Cyber Resilience Act Annex I Part II(1), Identify and document vulnerabilities and components, including an SBOM
UK UK Cyber Essentials CE-SU.3, Critical and High Updates within 14 Days
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-02, Patch applications (Essential)
SC-03 / source / High
Remote connection is not encrypted
Can someone read or change the traffic between the agent and the server?
What it looks for. An http:// URL that is not loopback, a remote transport with no TLS, or a flag that permits plain HTTP.
Why it matters. A remote server carries tool arguments and results, which routinely include paths, records and tokens. The MCP security guidance requires TLS for remote Streamable HTTP and rejects a downgrade to plain HTTP. A plain endpoint is a readable audit trail for anyone on the path.
The fix. Use https:// for every non-loopback server, reject redirects that downgrade to HTTP, and keep loopback servers bound to localhost.
Source: MCP security best practices: transport security. "Use TLS for remote Streamable HTTP connections."
US NIST SP 800-161 Rev 1 161R1-SC-8, Transmission Confidentiality and Integrity
EU EU Cyber Resilience Act Annex I Part I(2)(d), Protection from unauthorised access and reporting of it
UK UK Cyber Essentials CE-FW.1, Boundary Firewalls Deployed
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-22, Network segmentation (Excellent)
SC-04 / scope / Critical
Skill asks for a broad filesystem scope
What on this machine can the skill read or write?
What it looks for. A filesystem permission of /, ~, the home directory, a whole drive or a recursive wildcard, or instructions that read ~/.ssh, ~/.aws, .env or browser profiles.
Why it matters. A whole-disk or home-directory grant puts SSH keys, cloud credentials and every repository in reach of an instruction file. The OWASP MCP guidance names sandbox escapes and credential theft as the consequence of local servers with full host access, and the ToxicSkills audit found credential theft in confirmed malicious skills.
The fix. Grant the one directory the task needs, read-only where possible, and move secrets out of the agent's reach.
Source: OWASP MCP Security Cheat Sheet: least privilege. "Restrict file system access to only required directories."
US NIST SP 800-161 Rev 1 161R1-AC-6, Least Privilege
EU EU Cyber Resilience Act Annex I Part I(2)(j), Limiting attack surfaces, including external interfaces
UK UK Cyber Essentials CE-AC.4, Privileged Account Approval and Tracking
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-18, Restrict administrative privileges (Essential)
SC-05 / scope / High
Skill has unrestricted network access
Where can this skill send data?
What it looks for. A network permission of any, all, a wildcard, 0.0.0.0/0, or no allowlist at all, or instructions that post to a webhook or an unknown host.
Why it matters. Open egress is the channel an exfiltration needs. The episode describes enterprises locking agents out of the open internet and curating what they can reach; a skill with unrestricted network access has the channel even if today's instructions look harmless.
The fix. Replace the wildcard with the exact hosts and ports the task needs, and route other traffic through an approved proxy.
Source: The AI Native Dev, 15:45: locked out of the internet. "they're locked out of the internet"
US NIST SP 800-161 Rev 1 161R1-SC-7, Boundary Protection
EU EU Cyber Resilience Act Annex I Part I(2)(j), Limiting attack surfaces, including external interfaces
UK UK Cyber Essentials CE-FW.1, Boundary Firewalls Deployed
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-22, Network segmentation (Excellent)
SC-06 / instructions / Critical
Instructions download or execute code
Does the skill ask the agent to run something it fetched?
What it looks for. curl piped to a shell, eval, base64 decoding into a command, chmod +x on a download, a password-protected archive, powershell encoded commands, or os.system and subprocess calls in the skill body.
Why it matters. This is the exact shape of the malicious skills the ToxicSkills audit confirmed: installation instructions that download a password-protected archive, decode an obfuscated command and run it. Three lines of English can be malware, and the agent will follow them without the hesitation a person would show.
The fix. Remove the instruction. Vendor the code, pin it, and review it as code; a skill that needs to fetch and run a binary at install time is a supply chain you have not seen.
Source: Snyk ToxicSkills: external malware distribution. "The installation instructions for a skill contain links to external platforms that host malware"
US NIST SP 800-161 Rev 1 161R1-CM-7, Least Functionality
EU EU Cyber Resilience Act Annex I Part I(2)(b), Secure by default configuration with reset to original state
UK UK Cyber Essentials CE-MP.1, Anti-Malware Software Deployed
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-01, Application control (Essential)
SC-07 / isolation / High
No sandbox isolation
Does this server run on the host or in a container?
What it looks for. An entry with no sandbox field, sandbox false or none, a bare npx or uvx launched on the host, or a container configured with host networking or a host mount.
Why it matters. A local server runs as you. The episode describes the common enterprise setup as skills scanning and MCP scanning, a secure Docker sandbox and separate identities; without the sandbox, a compromised server has your files, your network and your tokens.
The fix. Run the server in a container with a read-only root, a single mounted directory, no host network and a non-root user. Record the image digest.
Source: The AI Native Dev, 15:45: the sandbox. "They'll have a secure sandbox, you know, Docker or something else."
US NIST SP 800-161 Rev 1 161R1-CM-6, Configuration Settings
EU EU Cyber Resilience Act Annex I Part I(2)(b), Secure by default configuration with reset to original state
UK UK Cyber Essentials CE-FW.1, Boundary Firewalls Deployed
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-24, Non-persistent virtualised sandboxed environment (Very Good)
SC-08 / identity / Critical
Agents share one identity
If one agent goes wrong, whose access does it have?
What it looks for. The same token, API key, service account or identity value used by two or more entries, an entry that declares a shared identity, or instructions that say to use the shared credential.
Why it matters. A shared identity makes every action look like every other agent, so the log cannot tell you who did it and revoking one agent revokes all of them. The episode puts separate identities for agents in the same sentence as the sandbox: everyone is a teammate with their own identity.
The fix. Give each agent and each server its own credential, scoped to its task, with a short lifetime and a named owner.
Source: The AI Native Dev, 15:45: separate identities. "creating permissions and separate identities for the agents"
US NIST SP 800-161 Rev 1 161R1-IA-4, Identifier Management
EU EU Cyber Resilience Act Annex I Part I(2)(d), Protection from unauthorised access and reporting of it
UK UK Cyber Essentials CE-AC.5, Separate Admin Accounts for Administrative Activities
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-18, Restrict administrative privileges (Essential)
SC-09 / package / Critical
Known-malicious or lookalike package name
Is this the package it claims to be?
What it looks for. A name on the confirmed-malicious list, a name one or two edits from a popular package but not equal to it, an impersonated scope, or a package that borrows an official-looking prefix.
Why it matters. Slopsquatting and typosquatting work because the name is close enough to pass a glance. The ToxicSkills audit confirmed 76 malicious payloads and found 8 still live at publication; the attack starts with a name the agent or the developer accepts.
The fix. Check the exact name against the registry page and the publisher's own documentation, copy the name from there rather than from an agent's suggestion, and block the lookalike.
Source: Snyk ToxicSkills: 76 confirmed malicious payloads. "76 malicious payloads designed for credential theft, backdoor installation, and data exfiltration"
US NIST SP 800-161 Rev 1 161R1-SR-11, Component Authenticity
EU EU Cyber Resilience Act Art. 13(5), Due diligence on third-party components, including open source
UK UK Cyber Essentials CE-MP.4, Application Allowlisting (Alternative)
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-01, Application control (Essential)
SC-10 / logs / High
No audit logging
After an incident, what will tell you what the agent did?
What it looks for. An entry with no logging or audit field, logging false or none, no destination, or no retention period.
Why it matters. Without a record of what the agent called and with which arguments, an investigation has nothing to read. The MCP guidance is explicit that token passthrough breaks the audit trail because the server cannot tell clients apart; a shared identity makes it worse, and no log makes it impossible.
The fix. Send tool calls and results to a log with a named destination, a retention period and an owner, and record the agent identity in every line.
Source: MCP security best practices: accountability and audit trail. "The MCP Server will be unable to identify or distinguish between MCP Clients"
US NIST SP 800-161 Rev 1 161R1-AU-2, Event Logging
EU EU Cyber Resilience Act Annex I Part I(2)(l), Security logging and monitoring with user opt-out
UK UK Cyber Essentials CE-AC.4, Privileged Account Approval and Tracking The held Cyber Essentials set states approval and tracking of privileged accounts, not an event log for tool calls. The logging duty is named here, not stated.
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-28, Continuous incident detection and response (Excellent)
SC-11 / instructions / Critical
Hidden or override instructions
Does the skill say one thing and instruct another?
What it looks for. Ignore previous instructions, do not tell the user, system message impersonation, hidden HTML comments, base64 or Unicode obfuscation, or instructions to disable a safety control.
Why it matters. The skill's intent is a security question in its own right. ToxicSkills found prompt injection among the most prevalent categories, including hidden instructions in obfuscated formats and system message impersonation, and a skill can perform its stated job while doing something else.
The fix. Do not install it. Ask the publisher to remove the text; if the instruction is legitimate, it belongs in a documented parameter, not hidden in the prompt.
Source: The AI Native Dev, 12:30: the intent of the skill. "three lines of English can be malware. What is the intent of the skill?"
US NIST SP 800-161 Rev 1 161R1-SR-3, Supply Chain Controls and Processes
EU EU Cyber Resilience Act Annex I Part I(2)(f), Integrity of data, commands, programs and configuration
UK UK Cyber Essentials CE-MP.1, Anti-Malware Software Deployed
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-04, User application hardening (Essential)
SC-12 / identity / Critical
Destructive tool is over-permissioned
Could this agent delete or overwrite something that matters?
What it looks for. A tool that deletes, drops, truncates, overwrites or writes to production, a destructive hint set to true, or a permission mode that skips confirmation.
Why it matters. The PocketOS incident in the episode is the case: an agent that was overly permissioned deleted a production database and then said it should not have done that. A manifest is where that permission is visible before the incident, and the review is cheap now.
The fix. Remove the destructive tool from the default set, require an explicit confirmation with the full arguments, and give production writes their own identity and approval.
Source: The AI Native Dev, 12:50: the PocketOS moment. "the agent was overly permissioned and deleted the production database"
US NIST SP 800-161 Rev 1 161R1-AC-6, Least Privilege
EU EU Cyber Resilience Act Annex I Part I(2)(b), Secure by default configuration with reset to original state
UK UK Cyber Essentials CE-AC.4, Privileged Account Approval and Tracking
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-18, Restrict administrative privileges (Essential)
SC-13 / package / Critical
Secret is stored in the config
Is a live credential sitting in plain text?
What it looks for. An env value that matches a key or token shape, a literal password, a bearer token or a private key block.
Why it matters. ToxicSkills found hardcoded secrets in 34 skills and in 32 percent of the confirmed malicious samples. A config file is copied into repositories, screenshots and tickets; a secret in it is a secret you have already lost.
The fix. Rotate the secret now, replace it with a reference to the secret store, and keep the value out of the manifest.
Source: Snyk ToxicSkills: secrets in skills. "hardcoded secrets in 34 skills"
US NIST SP 800-161 Rev 1 161R1-IA-5, Authenticator Management
EU EU Cyber Resilience Act Annex I Part I(2)(e), Confidentiality of stored, transmitted and processed data
UK UK Cyber Essentials CE-SC.8, Process for Compromised Passwords
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-23, Protect authentication credentials (Excellent)
SC-14 / isolation / High
Destructive actions are auto-approved
Will a person see this before it happens?
What it looks for. Auto-approve true, approval never, bypassPermissions, --dangerously-skip-permissions, or instructions that say not to ask for confirmation.
Why it matters. The MCP guidance says to require explicit confirmation for destructive, financial or data-sharing operations and never to auto-approve tool calls. The agent follows instructions without reluctance, which is the strength and the risk.
The fix. Turn auto-approval off, require confirmation for destructive and data-sharing tools, and show the full arguments in the confirmation.
Source: OWASP MCP Security Cheat Sheet: human in the loop. "Never auto-approve tool calls, especially in multi-server setups."
US NIST SP 800-161 Rev 1 161R1-AC-3, Access Enforcement
EU EU Cyber Resilience Act Annex I Part I(2)(d), Protection from unauthorised access and reporting of it
UK UK Cyber Essentials CE-AC.1, User Account Approval Process
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-18, Restrict administrative privileges (Essential)
SC-15 / scope / Medium
Third-party content can steer the agent
Can something the skill reads give it orders?
What it looks for. A skill that fetches web pages, email, issues or social content and also has write access, network access or a credential, the toxic-flow combination.
Why it matters. A skill that reads untrusted content and can act on it lets an attacker who can edit that content give the agent orders. The ToxicSkills audit found 17.7 percent of skills fetching untrusted content, and the combination of private data, untrusted content and an outbound channel is the lethal trifecta.
The fix. Separate the reader from the actor, or keep the reader read-only with no outbound channel and no secret in reach.
Source: Snyk ToxicSkills: third-party content exposure. "17.7% of clawhub.ai skills"
US NIST SP 800-161 Rev 1 161R1-SI-4, System Monitoring
EU EU Cyber Resilience Act Annex I Part I(2)(f), Integrity of data, commands, programs and configuration
UK UK Cyber Essentials CE-MP.3, Anti-Malware Scans Files on Access and Web Pages
AU ASD Strategies to Mitigate Cyber Security Incidents ASD37-05, Automated dynamic analysis of email and web content (Excellent)
The four markets
The buyer runs agents in the United States, the European Union, the United Kingdom and Australia, in that order. The requirement behind each rule is stated per market below. Where a scheme does not state a requirement, the page says so and does not invent one.
US
SC-01 NIST SP 800-161 Rev 1 161R1-SR-6, Supplier Assessments and Reviews
SC-02 NIST SP 800-161 Rev 1 161R1-SR-4, Provenance
SC-03 NIST SP 800-161 Rev 1 161R1-SC-8, Transmission Confidentiality and Integrity
SC-04 NIST SP 800-161 Rev 1 161R1-AC-6, Least Privilege
SC-05 NIST SP 800-161 Rev 1 161R1-SC-7, Boundary Protection
SC-06 NIST SP 800-161 Rev 1 161R1-CM-7, Least Functionality
SC-07 NIST SP 800-161 Rev 1 161R1-CM-6, Configuration Settings
SC-08 NIST SP 800-161 Rev 1 161R1-IA-4, Identifier Management
SC-09 NIST SP 800-161 Rev 1 161R1-SR-11, Component Authenticity
SC-10 NIST SP 800-161 Rev 1 161R1-AU-2, Event Logging
SC-11 NIST SP 800-161 Rev 1 161R1-SR-3, Supply Chain Controls and Processes
SC-12 NIST SP 800-161 Rev 1 161R1-AC-6, Least Privilege
SC-13 NIST SP 800-161 Rev 1 161R1-IA-5, Authenticator Management
SC-14 NIST SP 800-161 Rev 1 161R1-AC-3, Access Enforcement
SC-15 NIST SP 800-161 Rev 1 161R1-SI-4, System Monitoring
EU
SC-01 EU Cyber Resilience Act Art. 13(5), Due diligence on third-party components, including open source
SC-02 EU Cyber Resilience Act Annex I Part II(1), Identify and document vulnerabilities and components, including an SBOM
SC-03 EU Cyber Resilience Act Annex I Part I(2)(d), Protection from unauthorised access and reporting of it
SC-04 EU Cyber Resilience Act Annex I Part I(2)(j), Limiting attack surfaces, including external interfaces
SC-05 EU Cyber Resilience Act Annex I Part I(2)(j), Limiting attack surfaces, including external interfaces
SC-06 EU Cyber Resilience Act Annex I Part I(2)(b), Secure by default configuration with reset to original state
SC-07 EU Cyber Resilience Act Annex I Part I(2)(b), Secure by default configuration with reset to original state
SC-08 EU Cyber Resilience Act Annex I Part I(2)(d), Protection from unauthorised access and reporting of it
SC-09 EU Cyber Resilience Act Art. 13(5), Due diligence on third-party components, including open source
SC-10 EU Cyber Resilience Act Annex I Part I(2)(l), Security logging and monitoring with user opt-out
SC-11 EU Cyber Resilience Act Annex I Part I(2)(f), Integrity of data, commands, programs and configuration
SC-12 EU Cyber Resilience Act Annex I Part I(2)(b), Secure by default configuration with reset to original state
SC-13 EU Cyber Resilience Act Annex I Part I(2)(e), Confidentiality of stored, transmitted and processed data
SC-14 EU Cyber Resilience Act Annex I Part I(2)(d), Protection from unauthorised access and reporting of it
SC-15 EU Cyber Resilience Act Annex I Part I(2)(f), Integrity of data, commands, programs and configuration
UK
SC-01 UK Cyber Essentials CE-MP.4, Application Allowlisting (Alternative)
SC-02 UK Cyber Essentials CE-SU.3, Critical and High Updates within 14 Days
SC-03 UK Cyber Essentials CE-FW.1, Boundary Firewalls Deployed
SC-04 UK Cyber Essentials CE-AC.4, Privileged Account Approval and Tracking
SC-05 UK Cyber Essentials CE-FW.1, Boundary Firewalls Deployed
SC-06 UK Cyber Essentials CE-MP.1, Anti-Malware Software Deployed
SC-07 UK Cyber Essentials CE-FW.1, Boundary Firewalls Deployed
SC-08 UK Cyber Essentials CE-AC.5, Separate Admin Accounts for Administrative Activities
SC-09 UK Cyber Essentials CE-MP.4, Application Allowlisting (Alternative)
SC-10 UK Cyber Essentials CE-AC.4, Privileged Account Approval and Tracking The held Cyber Essentials set states approval and tracking of privileged accounts, not an event log for tool calls. The logging duty is named here, not stated.
SC-11 UK Cyber Essentials CE-MP.1, Anti-Malware Software Deployed
SC-12 UK Cyber Essentials CE-AC.4, Privileged Account Approval and Tracking
SC-13 UK Cyber Essentials CE-SC.8, Process for Compromised Passwords
SC-14 UK Cyber Essentials CE-AC.1, User Account Approval Process
SC-15 UK Cyber Essentials CE-MP.3, Anti-Malware Scans Files on Access and Web Pages
AU
SC-01 ASD Strategies to Mitigate Cyber Security Incidents ASD37-01, Application control (Essential)
SC-02 ASD Strategies to Mitigate Cyber Security Incidents ASD37-02, Patch applications (Essential)
SC-03 ASD Strategies to Mitigate Cyber Security Incidents ASD37-22, Network segmentation (Excellent)
SC-04 ASD Strategies to Mitigate Cyber Security Incidents ASD37-18, Restrict administrative privileges (Essential)
SC-05 ASD Strategies to Mitigate Cyber Security Incidents ASD37-22, Network segmentation (Excellent)
SC-06 ASD Strategies to Mitigate Cyber Security Incidents ASD37-01, Application control (Essential)
SC-07 ASD Strategies to Mitigate Cyber Security Incidents ASD37-24, Non-persistent virtualised sandboxed environment (Very Good)
SC-08 ASD Strategies to Mitigate Cyber Security Incidents ASD37-18, Restrict administrative privileges (Essential)
SC-09 ASD Strategies to Mitigate Cyber Security Incidents ASD37-01, Application control (Essential)
SC-10 ASD Strategies to Mitigate Cyber Security Incidents ASD37-28, Continuous incident detection and response (Excellent)
SC-11 ASD Strategies to Mitigate Cyber Security Incidents ASD37-04, User application hardening (Essential)
SC-12 ASD Strategies to Mitigate Cyber Security Incidents ASD37-18, Restrict administrative privileges (Essential)
SC-13 ASD Strategies to Mitigate Cyber Security Incidents ASD37-23, Protect authentication credentials (Excellent)
SC-14 ASD Strategies to Mitigate Cyber Security Incidents ASD37-18, Restrict administrative privileges (Essential)
SC-15 ASD Strategies to Mitigate Cyber Security Incidents ASD37-05, Automated dynamic analysis of email and web content (Excellent)
What the rule set cannot decide
A manifest is a declaration. It can be wrong, stale or incomplete, and this reading cannot tell whether a publisher is honest or whether the running server matches the file. A rule that does not fire means the manifest did not show the pattern, not that the risk is absent. The method page states this in the same words the report uses.