Risk scenarios
Attacks through skills take three main routes.- A skill that is malicious from the start gets distributed through a marketplace or GitHub
- A legitimate skill is compromised later and turns malicious through an update
- The skill itself is harmless, but instructions are injected through external data it loads at runtime
Supply chain risks
Community-developed skills call for particular caution. When controls like branch protection are missing, or when a developer’s personal account is compromised, the contents can be tampered with while the distribution channel stays legitimate. From the user’s side it looks like a legitimate update from a trusted source, and at the moment of adoption there is no reason to be suspicious. This pattern is not unique to skills. The same incidents have played out in package managers like npm and pip, in extensions for code editors like Visual Studio Code, and in browser extensions for Google Chrome. Skills are young enough that standards for signing and provenance verification haven’t settled, which makes the same mistakes easy to repeat.Attacks that persist
When skills ship as Claude Code plugins, auto-update is on by default. Combined with a rug pull attack that rewrites the contents after approval, this means you keep using a compromised skill for a long time without noticing. And if you don’t know which version you’ve been running since when, you can’t determine your organization’s exposure even after a compromise is disclosed.npx skills and lock files
The npx skills command used in the standalone skill ecosystem now generates a lock file when downloading a skill and can enforce pinning to a specific version. Making the version in use visible through pinning is real progress. Manage the skills under a project and push the repository to GitHub with the lock file included, and you can trace a compromise through history and diffs, whereas installing them in a user’s home directory leaves no change history, so working out after the fact what was swapped and when becomes difficult. And pinning only covers the skill package itself. Note that documentation the skill loads from an external URL at runtime can still be rewritten.Monitoring and alert response
Who is using which version of which skill, and where. Managing this as a regularly synchronized inventory is the foundation of monitoring. Manage employee endpoints with MDM, and periodically collect, parse, and inventory the configuration files sitting on local disks. Alongside the inventory, set up multiple channels for staying current on skill compromises and prepare a response process. Once a compromise is disclosed, the work is identifying affected versions, finding the devices that use them, disabling the skill, and rotating credentials. Hash each skill at installation and hash it again before execution, and the comparison also catches auto-updates and later rewrites.Visibility and centralization as prevention
A low-cost way to start is a private fork, after checking the license. Make the internal fork the sole distribution source and use only it across the organization. Versions stay pinned, and every external update passes review as it’s pulled into the fork. Malicious skills and compromised updates can be caught at the pre-fork review stage, stopping the damage before it happens.Vetting skills with scanning tools
Established security vendors publish open source scanners that detect malicious instructions and scripts. Cisco AI Defense’s skill-scanner inspects a skill directory you point it at, layering YARA-based static analysis, behavioral analysis of AST dataflows, LLM-based semantic analysis, and VirusTotal lookups to catch prompt injection, data exfiltration, and malicious code. It ships with a GitHub Actions workflow and SARIF output, so the review that runs when you pull updates into a private fork can be automated as CI. Snyk’s Agent Scan comes at the problem from the other side, starting from the endpoint. It automatically discovers configurations for Claude Code, Cursor, and other agents, enumerates the installed skills, MCP servers, and agent configurations, and checks them for more than 15 kinds of risk including prompt injection, malware, and hardcoded secrets. Because it inventories and scans a machine whose contents you don’t know in a single pass, it also serves as an entry point for building your inventory. Neither scanner is a silver bullet, though. Instructions written purely in natural language carry no code signature, encoded payloads slip through, and a skill can technically serve harmless content to the scanner while affecting only the live agent.References
- Agent Skills - Claude Docs
- Discover and install prebuilt plugins through marketplaces - Claude Code Docs
- skills - The open agent skills tool
- ToxicSkills: A Study of Agent Skills Supply Chain Compromise - Snyk
- Skill Issues: How We Discovered Supply Chain Attack Vectors in an AI Agent Skills Marketplace - Orca Security
- Malicious Coding Agent Skills and the Risk of Dynamic Context - Datadog Security Labs
- skill-scanner - Security Scanner for Agent Skills - Cisco AI Defense
- agent-scan - Security scanner for AI agents, MCP servers and agent skills - Snyk
- Action Items for Agent Platform Security

