Agent supply chain security scanner.
Project description
Snyk Agent Scan
Discover and scan agent components on your machine for prompt injections
and vulnerabilities (including agents, MCP servers, skills).
NEW Read our technical report on the emerging threats of the agent skill eco-system published together with Agent Scan 0.4, which adds support for scanning agent skills.
Agent Scan helps you keep an inventory of all your installed agent components (harnesses, MCP servers, and skills) and scans them for common threats like prompt injections, sensitive data handling, or malware payloads hidden in natural language. By default it focuses on MCP servers; add --skills to autodiscover and scan agent skills.
Security Warning
⚠️ IMPORTANT: Scanning MCP configurations will execute the commands defined in them.
When Agent Scan scans an MCP configuration file, it starts the stdio MCP servers by executing the commands and arguments specified in the config. This is necessary to retrieve tool descriptions and perform security analysis.
Recommendations:
- Run scans inside a sandbox (Docker container, VM, or disposable environment) when evaluating untrusted or third-party MCP configs
- Review the consent prompt carefully during interactive scans, it shows the exact command and arguments that will be executed for each server
- Use
--dangerously-run-mcp-serversonly in trusted environments where you've verified all MCP server commandsBy default, Agent Scan requires explicit user consent (y/n) before starting each stdio MCP server during interactive runs. This gives you control over what gets executed on your system.
Highlights
- Auto-discover MCP configurations, agent tools, skills
- Scanning of Claude, Cursor, Windsurf, Gemini CLI, Amp, Amazon Q, and other agents.
- Detects 15+ distinct security risks across MCP servers and agent skills:
Supported agents and capabilities
Agent Scan auto-discovers agents and their capabilities (MCP servers or skills) when their install paths exist. The table reflects well-known agent definitions.
- ✓: at least one path is defined for that capability.
- ✗: the agent is listed for that OS but has no paths for that capability.
- —: that agent is not included for that OS.
- Skills columns apply when using
--skills.
| Agent | macOS MCP | macOS Skills | Linux MCP | Linux Skills | Windows MCP | Windows Skills |
|---|---|---|---|---|---|---|
| Windsurf | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Cursor | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| VS Code | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Claude Desktop | ✓ | ✗ | — | — | ✓ | ✗ |
| Claude Code | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Gemini CLI | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| OpenClaw | ✗ | ✓ | ✗ | ✓ | ✗ | ✓ |
| Amp | ✗ | ✓ | ✗ | ✓ | ✗ | ✓ |
| Kiro | ✓ | ✗ | ✓ | ✗ | ✓ | ✗ |
| OpenCode | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Antigravity | ✓ | ✗ | ✓ | ✗ | ✓ | ✗ |
| Codex | ✗ | ✓ | ✗ | ✓ | — | — |
| Amazon Q | ✓ | ✗ | ✓ | ✗ | — | — |
Quick Start
To get started:
- Sign up at Snyk and get an API token from https://app.snyk.io/account (API Token → KEY → click to show).
- Set the token as an environment variable before running any scan:
export SNYK_TOKEN=your-api-token-here
- Have uv installed on your system.
Scanning
To run a full scan of your machine (auto-discovers agents, MCP servers, skills), run:
uvx snyk-agent-scan@latest
This will scan for security vulnerabilities in MCP servers, tools, prompts, and resources. It will automatically discover a variety of agent configurations, including Claude Code/Desktop, Cursor, Gemini CLI, and Windsurf.
To also auto-discover and scan agent skills, pass the --skills flag:
uvx snyk-agent-scan@latest --skills
You can also scan particular MCP configuration files or skills:
# scan a specific mcp configuration
uvx snyk-agent-scan@latest ~/.vscode/mcp.json
# scan a single agent skill
uvx snyk-agent-scan@latest --skills ~/path/to/my/SKILL.md
# scan all claude skills
uvx snyk-agent-scan@latest --skills ~/.claude/skills
Example Run
Scanner Capabilities
Agent Scan is a security scanning tool to both scan and inspect the supply chain of agent components on your machine. It scans for common security vulnerabilities like prompt injections, tool poisoning, toxic flows, or vulnerabilities in agent skills.
Agent Scan operates in two main modes which can be used jointly or separately:
-
Scan Mode: The CLI command
snyk-agent-scanscans the current machine for agents and agent components such as skills and MCP servers. Upon completion, it will output a comprehensive report for the user to review. -
Background Mode (MDM, Crowdstrike). Agent Scan scans the machine in regular intervals in the background, and reports the results to a Snyk Evo instance. This can be used by security teams to monitor the company-wide agent supply chain in a central location. To set this up, please contact us.
How It Works
Scanning
Agent Scan searches through your local agent's configuration files to find agents, skills, and MCP servers. For MCP, it connects to servers and retrieves tool descriptions.
Interactive Consent for MCP Servers
⚠️ Security Note: Scanning an MCP config executes the commands defined in it. Always review what will be executed before approving.
By default, Agent Scan prompts for user consent before starting each stdio MCP server during interactive runs. This consent flow:
- Shows the server name, command, and environment variables (redacted) that will be executed
- Allows you to approve or decline each server individually
- Prevents potentially untrusted servers from running without your explicit permission
- Records declined servers with a
user_declinederror (they are never started)
Best Practices:
- Review the command and arguments carefully before approving
- When scanning untrusted or third-party MCP configs, run Agent Scan inside a sandbox (Docker, VM, or disposable environment)
- Decline any servers with unfamiliar or suspicious commands
For non-interactive environments (e.g., CI/CD pipelines), you must use the --dangerously-run-mcp-servers flag to bypass the consent prompt and start all servers automatically. Only use this flag in trusted environments where all MCP server commands have been verified.
Analysis and Validation
Agent Scan validates the components, both with local checks and by invoking the Agent Scan API. For this, skills, agent applications, tool names, and descriptions are shared with Snyk. By using Agent Scan, you agree to the Snyk terms of use for Agent Scan.
A unique, persistent, and anonymous ID is assigned to your scans for analysis. You can opt out of sending this information using the --opt-out flag.
Agent Scan does not store or log any usage data, i.e. the contents and results of your MCP tool calls.
CLI Parameters
Agent Scan provides the following commands:
snyk-agent-scan - Security scanner for agents, MCP servers, and skills
Common Options
These options are available for all commands:
--storage-file FILE Path to store scan results and scanner state (default: ~/.mcp-scan)
--base-url URL Base URL for the verification server
--verbose Enable detailed logging output
--print-errors Show error details and tracebacks
--json Output results in JSON format instead of rich text
Commands
scan (default)
Scan MCP configurations for security vulnerabilities in tools, prompts, and resources.
snyk-agent-scan scan [CONFIG_FILE...]
Options:
--skills Also scan agent skills (default: off)
--checks-per-server NUM Number of checks to perform on each server (default: 1)
--server-timeout SECONDS Seconds to wait before timing out server connections (default: 10)
--suppress-mcpserver-io BOOL Suppress stderr from stdio MCP servers (stdout carries the JSON-RPC protocol
and is never shown). Default: False for interactive runs (stderr is streamed
with a [server-name] prefix), True otherwise.
--dangerously-run-mcp-servers ⚠️ DANGER: Skip the interactive consent prompt and automatically start every
stdio MCP server listed in the scanned configs. Only use in trusted
environments where you've verified all MCP server commands.
inspect
Print descriptions of tools, prompts, and resources without verification.
snyk-agent-scan inspect [CONFIG_FILE...]
Options:
--server-timeout SECONDS Seconds to wait before timing out server connections (default: 10)
--suppress-mcpserver-io BOOL Suppress stderr from stdio MCP servers (stdout carries the JSON-RPC protocol
and is never shown). Default: False for interactive runs (stderr is streamed
with a [server-name] prefix), True otherwise.
--dangerously-run-mcp-servers ⚠️ DANGER: Skip the interactive consent prompt and automatically start every
stdio MCP server listed in the scanned configs. Only use in trusted
environments where you've verified all MCP server commands.
help
Display detailed help information and examples.
snyk-agent-scan help
Examples
# Scan all known MCP configs
snyk-agent-scan
# Scan all known MCP configs and agent skills
snyk-agent-scan --skills
# Scan a specific config file
snyk-agent-scan ~/custom/config.json
# Scan a specific skill file
snyk-agent-scan --skills ~/path/to/my/SKILL.md
# Scan a directory for skills
snyk-agent-scan --skills ~/.claude/skills
# Just inspect tools without verification
snyk-agent-scan inspect
# Skip consent prompts and run all servers (ONLY for CI/CD or fully trusted environments)
snyk-agent-scan --dangerously-run-mcp-servers
# Suppress MCP server stderr output during scanning
snyk-agent-scan --suppress-mcpserver-io=true
# CI mode (requires --dangerously-run-mcp-servers in non-interactive environments)
snyk-agent-scan --ci --dangerously-run-mcp-servers
Demo
This repository includes a vulnerable MCP server that can demonstrate Model Context Protocol security issues that Agent Scan finds.
How to demo MCP security issues?
- Clone this repository
- Create an
mcp.jsonconfig file in the cloned git repository root directory with the following contents:
{
"mcpServers": {
"Demo MCP Server": {
"type": "stdio",
"command": "uv",
"args": ["run", "mcp", "run", "demoserver/server.py"],
},
},
}
- Run Agent Scan:
uvx --python 3.13 snyk-agent-scan@latest scan --full-toxic-flows mcp.json
Note: if you place the mcp.json configuration filepath elsewhere then adjust the args path inside the MCP server configuration to reflect the path to the MCP Server (demoserver/server.py) as well as the uvx command that runs Agent Scan with the correct filepath to mcp.json.
Agent Scan is closed to contributions
Agent Scan does not accept external contributions at this time.
We welcome suggestions, bug reports, or feature requests as GitHub issues.
Development Setup
To run Agent Scan from source, follow these steps:
uv run pip install -e .
uv run -m src.agent_scan.cli
Including Agent Scan results in your own project / registry
If you want to include Agent Scan results in your own project or registry, please reach out. There are designated APIs for this purpose. Using the standard Agent Scan API for large scale scanning is considered abuse and will result in your account being blocked.
Documentation
- Scanning — How scanning works, CLI parameters, and usage examples.
- Issue Codes — Reference for all security issues detected by Agent Scan.
Further Reading
- Introducing MCP-Scan
- MCP Security Notification Tool Poisoning Attacks
- WhatsApp MCP Exploited
- MCP Prompt Injection
- Toxic Flow Analysis
- Skills Report
Changelog
See CHANGELOG.md.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file snyk_agent_scan-0.5.1.tar.gz.
File metadata
- Download URL: snyk_agent_scan-0.5.1.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95d259e2459bc062f9648f9312466121ebd5392d958cf183c1f87cd01b8af672
|
|
| MD5 |
f2653c1170027e74cdb1b3f4fa6eef20
|
|
| BLAKE2b-256 |
692cc2a508fa0eb0a95f14e0ec269baa65a831a4a70177f62e3ae0389c846f68
|
File details
Details for the file snyk_agent_scan-0.5.1-py3-none-any.whl.
File metadata
- Download URL: snyk_agent_scan-0.5.1-py3-none-any.whl
- Upload date:
- Size: 73.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3575ba55d90568f8571f8667989b30db3bdb4bd5c7040dbdece88fb967d9731a
|
|
| MD5 |
fec887b7cdaff1f375a32984e1a80d61
|
|
| BLAKE2b-256 |
cdfb8f14a8f3beda760532cfc2aa2a36b73a7dac9082713985a5286d674173ed
|