
agent-scan v0.6.4-snapshot-6e2d290-1638
AI代理、MCP服务器和代理技能的安全扫描器。
Snyk Agent Scan
发现并扫描你机器上的 agent 组件,以检测提示注入
和漏洞(包括 agents、MCP servers、skills)。
注意:CLI 输出为实验性内容,可能会发生变化
Agent Scan v0.5.x(计划弃用)
此 CLI 的原始输出——包括问题代码、字段名称、严重性标签和响应结构——均为实验性内容,可能会在版本之间不经通知而发生变化。我们不建议构建依赖特定 CLI 输出字段或问题代码的生产工作流。
Agent Scan v0.6 及更高版本
此 CLI 的原始输出——包括风险指标名称、评分、字段名称和响应结构——均为实验性内容,可能会在版本之间不经通知而发生变化。我们不建议构建依赖特定 CLI 输出字段或风险名称的生产工作流。
如果你是使用 Snyk 大规模管理 agent 安全风险的企业客户,CLI 输出可能无法反映发送到 Evo 平台并在其中显示的内容。支撑企业部署的底层集成、发现和风险评估是稳定且受支持的——任何变更都将按照 Snyk 标准产品实践进行沟通。请联系你的客户团队获取部署指导。
新功能 阅读我们与 Agent Scan 0.4 一同发布的关于 agent skill 生态系统新兴威胁的技术报告,该版本新增了对扫描 agent skills 的支持。
Agent Scan v0.5.x 输出
[!WARNING] Agent Scan v0.5.x 使用问题代码输出。此 CLI 行计划弃用。
Agent Scan v0.6 及更高版本输出
Agent Scan 可帮助你发现所有已安装的 agent 组件(harnesses、MCP servers 和 skills),并扫描它们是否存在常见威胁,例如提示注入、敏感数据处理或隐藏在自然语言中的恶意软件载荷。使用 --no-skills 可忽略对 skills 的分析。
安全警告
⚠️ 重要:扫描 MCP 配置将执行其中定义的命令。
当 Agent Scan 扫描 MCP 配置文件时,它会通过执行配置中指定的命令和参数来启动 stdio MCP servers。这是检索工具描述并执行安全分析所必需的。
建议:
- 在沙箱中运行扫描(Docker 容器、VM 或一次性环境),以评估不受信任或第三方的 MCP 配置
- 仔细查看同意提示,在交互式扫描期间,它会显示将为每个 server 执行的确切命令和参数
- 仅在已核实所有 MCP server 命令的可信环境中使用
--dangerously-run-mcp-servers默认情况下,Agent Scan 在交互式运行期间启动每个 stdio MCP server 之前,需要用户明确同意(y/n)。这让你可以控制系统中执行的内容。
快速开始
选择以下两种方式之一来运行 Agent Scan:
- 使用
uvx运行 Python 包,按照以下说明操作。 - 从 GitHub Releases 下载适用于你平台的独立二进制文件。发布版本还包括 SBOM、校验和、签名校验和以及源代码归档。
在使用任一选项之前:
- 在 Snyk 注册,并从 https://app.snyk.io/account 获取 API token(API Token → KEY → 点击显示)。
- 在运行任何扫描之前,将 token 设置为环境变量: ```bash
export SNYK_TOKEN=your-api-token-here
使用 uvx 运行
在你的系统上安装 uv。根据你的 CLI 版本选择相应的说明。
Agent Scan v0.5.x
以下示例固定使用 v0.5.17 作为具体的 v0.5.x 版本:```bash
Scan the whole machine
Scan a specific MCP configuration
uvx [email protected] ~/.vscode/mcp.json
Scan a single agent skill
uvx [email protected] ~/path/to/my/SKILL.md
Scan all Claude skills
uvx [email protected] ~/.claude/skills
> [!WARNING]
> v0.5.x 使用 issue-code 输出和 `2025-09-02` 分析 API。此 CLI 行计划弃用。
#### Agent Scan v0.6 及更高版本```bash
# Scan the whole machine
uvx snyk-agent-scan@latest
# Scan a specific MCP configuration
uvx snyk-agent-scan@latest ~/.vscode/mcp.json
# Scan a single agent skill
uvx snyk-agent-scan@latest ~/path/to/my/SKILL.md
# Scan all Claude skills
uvx snyk-agent-scan@latest ~/.claude/skills
v0.6 及更高版本使用基于风险的输出和 2026-07-10 分析 API。
两个版本都会扫描 MCP 服务器、工具、提示词、资源和技能,并自动发现受支持的代理配置,例如 Claude Code/Desktop、Cursor、Gemini CLI 和 Windsurf。
使用独立二进制文件运行
从最新的 GitHub Release 下载适用于你的操作系统和架构的二进制文件。发布页面还提供 SBOM(sbom-<version>.json)、校验和文件以及 GitHub 生成的源代码归档。请参阅验证独立二进制文件以验证你的下载。
亮点
- 自动发现 MCP 配置、代理工具、技能
- 扫描 Claude、Cursor、GitHub Copilot、Windsurf、Gemini CLI、Amp、Amazon Q 及其他代理。
Agent Scan v0.5.x
Agent Scan v0.6 及更高版本
支持的代理与能力
当代理的安装路径存在时,Agent Scan 会自动发现代理及其能力(MCP 服务器或技能)。下表显示了每个代理在哪些操作系统上会被扫描。
- ✓:该能力至少定义了一个路径。
- ✗:该代理在该操作系统下列出,但没有该能力的路径。
- —:该代理未包含在该操作系统中。
- 技能 可以使用
--no-skills忽略技能
| 代理 | macOS MCP | macOS 技能 | Linux MCP | Linux 技能 | Windows MCP | Windows 技能 |
|---|---|---|---|---|---|---|
| Windsurf | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Cursor | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| VS Code | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| GitHub Copilot | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Claude Desktop | ✓ | ✗ | — | — | ✓ | ✗ |
| Claude Code | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Gemini CLI | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| OpenClaw | ✗ | ✓ | ✗ | ✓ | ✗ | ✓ |
| Amp | ✗ | ✓ | ✗ | ✓ | ✗ | ✓ |
| Kiro | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| OpenCode | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Antigravity | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Codex | ✓ | ✓ | ✓ | ✓ | — | — |
| Amazon Q | ✓ | ✗ | ✓ | ✗ | ✓ (WSL) | ✗ |
按范围划分的检测覆盖
上方的矩阵显示了每个代理在哪些操作系统上会被扫描。此矩阵则按配置范围和组件类型(技能与 MCP 服务器)细分检测情况,并跨操作系统合并展示。“服务器”指 MCP 服务器。
四种范围:
- 系统 — 适用于所有用户的机器级 / 管理员管理 / 企业配置(例如
managed-mcp.json、/etc、/Library/Application Support或ProgramData下的文件)。 - 用户 — 用户主目录配置(适用于其所有项目)。
- 项目 / 工作区 — 限定于已打开项目或工作区的配置。
- 扩展 / 插件 — 捆绑在已安装扩展或插件内部的组件。
图例:✓ 已检测 · ✗ 代理支持此项,但 Agent Scan 尚未扫描 · N/A 代理在此范围没有此类组件。
| 代理 | 系统 技能 | 系统 服务器 | 用户 技能 | 用户 服务器 | 项目 / 工作区 技能 | 项目 / 工作区 服务器 | 扩展 / 插件 技能 | 扩展 / 插件 服务器 |
|---|---|---|---|---|---|---|---|---|
| Windsurf | ✓ | N/A | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Cursor | N/A | N/A | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| VS Code | N/A | N/A | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| GitHub Copilot § | N/A | N/A | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Claude Desktop | N/A | N/A | ✗ | ✓ | N/A | N/A | N/A | ✗ |
| Claude Code | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Gemini CLI | N/A | ✗ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ |
| OpenClaw | N/A | N/A | ✓ | ✗ | ✓ † | N/A | ✗ | ✗ |
| Amp | N/A | ✗ | ✓ | ✗ | ✗ ‡ | ✗ | ✗ | ✗ |
| Kiro | N/A | N/A | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| OpenCode | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | N/A | N/A |
| Antigravity | N/A | N/A | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Codex | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Amazon Q | N/A | N/A | N/A | ✓ | N/A | ✗ | N/A | N/A |
† OpenClaw 没有已打开项目的枚举:其项目/工作区技能仅在固定的 ~/.openclaw/workspace/skills 处被发现
‡ Amp 将项目/工作区技能存储在 .agents/skills(以及 .claude/skills 兼容路径);目前仅检测用户范围的 ~/.config/agents/skills,因此项目范围的技能虽受支持但尚未被扫描。
§ GitHub Copilot 涵盖 CLI 和桌面应用,它们与 VS Code 中的 Copilot 共享 ~/.copilot 主目录,并且是从该主目录而非 VS Code 安装中检测的。在扫描你自己的主目录时,会遵循 COPILOT_HOME 重定位。项目范围涵盖仓库相对的 .mcp.json / .github/mcp.json 文件以及 .github/skills、.claude/skills 和 .agents/skills 目录,适用于传递给扫描的文件夹以及 Copilot 记录在 permissions-config.json 中的目录,外加它们的祖先目录。插件范围涵盖 ~/.copilot/installed-plugins,包括会重定位其 MCP 配置或声明额外技能根目录的 plugin.json 清单。未扫描:session-state/*/workspace.yaml 中的每会话项目根目录。Copilot 的用户级路径也列在 VS Code 下,因为 VS Code 读取相同的文件。
验证独立二进制文件
我们对发布校验和文件使用 GPG 签名,以确保分发的完整性和真实性。
分步验证指南
-
下载发布资产: 从 GitHub Releases 页面下载适用于你平台的二进制文件(例如
agent-scan-<version>-<os>-<arch>)以及已签名的校验和文件(sha256sums.txt.asc)到同一目录。 -
验证校验和文件的 GPG 签名: 将 GPG 公钥下载到同一目录,然后运行: ```bash gpg --import snyk-code-signing-public.pgp gpg --verify sha256sums.txt.asc
在输出中查找一行显示 gpg: Good signature from "Snyk Limited <[email protected]>"。
- 验证二进制文件的完整性:
确认签名有效后,检查下载的二进制文件是否与校验和匹配:
- 在 Linux(或带有
coreutils的 macOS)上:grep agent-scan-<version>-<os>-<arch> sha256sums.txt.asc | sha256sum -c - - 在 macOS 上(使用默认的
shasum):grep agent-scan-<version>-<os>-<arch> sha256sums.txt.asc | shasum -a 256 -c -
agent-scan-<version>-<os>-<arch>: OK。 - 在 Linux(或带有
扫描器功能
Agent Scan v0.5.x
Agent Scan 是一款安全扫描工具,用于扫描和检查您机器上 agent 组件的供应链。它会扫描常见的安全漏洞,例如提示注入、工具投毒、有毒流程或 agent 技能中的漏洞。
Agent Scan v0.6 及更高版本
Agent Scan 会针对提示注入、暴露于不受信任或私有数据、破坏性能力以及恶意 agent 技能等威胁,报告评分后的风险指标。
Agent Scan 有两种主要运行模式,可以联合使用或单独使用:
-
扫描模式:CLI 命令
snyk-agent-scan会扫描当前机器上的 agent 以及 agent 组件,例如技能和 MCP 服务器。完成后,它会输出一份全面的报告供用户查看。 -
后台模式(MDM)。Agent Scan 会在后台定期扫描机器,并将结果报告给 Snyk Evo 实例。安全团队可以使用此功能,在一个中心位置监控整个公司的 agent 供应链。要进行此设置,请联系我们。
工作原理
扫描
Agent Scan 会搜索本地 agent 的配置文件,以查找 agent、技能和 MCP 服务器。对于 MCP,它会连接到服务器并检索工具描述。
MCP 服务器的交互式同意
⚠️ 安全提示:扫描 MCP 配置会执行其中定义的命令。在批准之前,请务必查看将要执行的内容。
默认情况下,Agent Scan 在交互式运行期间,会在启动每个 stdio MCP 服务器之前提示用户同意。此同意流程:
- 显示将要执行的服务器名称、命令和环境变量(已脱敏)
- 允许您逐个批准或拒绝每个服务器
- 防止潜在不受信任的服务器在未经您明确许可的情况下运行
- 将拒绝的服务器记录为
user_declined错误(它们永远不会被启动)
最佳实践:
- 在批准之前,请仔细查看命令和参数
- 在扫描不受信任或第三方 MCP 配置时,请在沙箱(Docker、VM 或一次性环境)中运行 Agent Scan
- 拒绝任何带有不熟悉或可疑命令的服务器
对于非交互式环境(例如 CI/CD 流水线),您必须使用 --dangerously-run-mcp-servers 标志来绕过同意提示并自动启动所有服务器。仅在已验证所有 MCP 服务器命令的可信环境中使用此标志。
分析与验证
Agent Scan 会通过本地检查和 Agent Scan API 验证发现的组件。它会发送分析所需的组件信息,包括 agent 应用程序详细信息、MCP 服务器配置和签名、工具名称和描述以及技能内容。配置值和文本中的机密信息在传输前会被脱敏。
使用 Agent Scan 即表示您同意 Snyk 的 Agent Scan 使用条款。
Agent Scan 不会存储或记录任何使用数据,即您的 MCP 工具调用的内容和结果。
CLI 参数
完整的标志参考位于 docs/cli-reference.md。大多数命令和标志在 v0.5.x 和 v0.6 及更高版本中通用。
共享命令```text
snyk-agent-scan scan [CONFIG_FILE...] Scan MCP servers and skills (default) snyk-agent-scan inspect [CONFIG_FILE...] Inspect components without analysis snyk-agent-scan help Display help
### 两个版本线共用的选项
这些选项在 v0.5.x 和 v0.6 及更高版本中都存在。它们的命令适用性在完整的 CLI 参考中有详细说明。```text
--storage-file FILE Path to store scan state (default: ~/.mcp-scan)
--analysis-url URL Analysis endpoint; the default API version depends on the CLI version
--verification-H HEADER Additional analysis request header (repeatable)
--mcp-oauth-tokens-path PATH OAuth tokens for protected remote MCP servers
--verbose Enable detailed logging
--print-errors Show error details and tracebacks
--print-full-descriptions Show full entity descriptions without truncation
--json Emit JSON; the response schema depends on the CLI version
--skip-ssl-verify Disable TLS certificate verification
--skills / --no-skills Include skills (default) or skip them
--scan-all-users Scan all readable user home directories
--show-analysis-results Force synchronous analysis so results display for push-key scans
--ci Exit non-zero when findings or operational failures remain
--server-timeout SECONDS MCP connection timeout (default: 10)
--suppress-mcpserver-io BOOL Suppress stdio MCP server stderr
--dangerously-run-mcp-servers Skip consent and start configured stdio MCP servers
--control-server URL Upload destination (repeatable)
--control-server-H HEADER Header for the current control-server block
--control-identifier ID Identifier for the current control-server block
--no-bootstrap Accepted compatibility no-op; does not change behavior
--checks-per-server NUM Accepted compatibility no-op; does not change behavior
Agent Scan v0.5.x
[!WARNING] v0.5.x 计划弃用。示例中固定使用 v0.5.17 作为具体的 v0.5.x 版本。```text --analysis-url URL Defaults to the 2025-09-02 analysis API --ignore-issues-codes CODES Comma-separated E/W security finding codes and X failure codes to ignore in CI
v0.5.x 会输出问题代码发现结果和以路径为键的 `ScanPathResult` JSON。请参阅 [v0.5.x CLI 参考](https://github.com/snyk/agent-scan/blob/main/docs/cli-reference.md#agent-scan-v05x) 和 [问题代码参考](https://github.com/snyk/agent-scan/blob/main/docs/issue-codes.md)。
### Agent Scan v0.6 及更高版本```text
--analysis-url URL Defaults to the 2026-07-10 analysis API
--ignore-risks NAMES Comma-separated risk names to omit from output and CI evaluation
--ignore-failure-codes CODES Comma-separated X codes to omit from CI evaluation
--show-full-discovery List every MCP entity and skill file instead of compact scan summaries
v0.6 及更高版本会输出评分风险指标和 scan_path_responses JSON。人类可读的扫描输出默认是紧凑的;--show-full-discovery 会展开它,但不会改变 JSON 或 inspect 输出。请参阅 v0.6 及更高版本 CLI 参考、风险参考 和 失败代码参考。
示例```bash
Scan all known MCP configs and agent skills
snyk-agent-scan
Scan a specific config file or skill
snyk-agent-scan ~/custom/config.json snyk-agent-scan ~/path/to/my/SKILL.md
Inspect without security analysis
snyk-agent-scan inspect
CI mode
snyk-agent-scan --ci --dangerously-run-mcp-servers
## 演示
此仓库包含一个存在漏洞的 MCP 服务器,用于演示 Agent Scan 所报告的 Model Context Protocol 安全发现。
如何演示 MCP 安全发现?
1. 克隆此仓库
2. 在克隆的 git 仓库根目录中创建一个 `mcp.json` 配置文件,内容如下:```jsonc
{
"mcpServers": {
"Demo MCP Server": {
"type": "stdio",
"command": "uv",
"args": ["run", "mcp", "run", "demoserver/server.py"],
},
},
}
-
运行相应版本:
- Agent Scan v0.5.x(issue-code 输出):
uvx --python 3.13 [email protected] scan mcp.json - Agent Scan v0.6 及更高版本(基于风险的输出):
uvx --python 3.13 snyk-agent-scan@latest scan mcp.json
- Agent Scan v0.5.x(issue-code 输出):
注意:如果你将 mcp.json 配置文件放在其他位置,请调整 MCP 服务器配置中的 args 路径,以反映 MCP 服务器(demoserver/server.py)的路径,以及运行 Agent Scan 的 uvx 命令中 mcp.json 的正确文件路径。
Agent Scan 不接受贡献
Agent Scan 目前不接受外部贡献。
我们欢迎通过 GitHub issues 提交建议、错误报告或功能请求。
开发环境设置
要从源代码运行 Agent Scan,请按照以下步骤操作:```bash uv run pip install -e . uv run -m src.agent_scan.cli
## 将 Agent Scan 结果纳入你自己的项目 / 注册表
如果你希望将 Agent Scan 结果纳入你自己的项目或注册表,请[联系我们](https://evo.ai.snyk.io/#contact-us)。为此提供了专门的 API。将标准 Agent Scan API 用于大规模扫描会被视为滥用,并会导致你的账户被封禁。
## 文档
- [文档索引](https://github.com/snyk/agent-scan/blob/main/docs/README.md) — 两条 CLI 线的版本化文档。
- [CLI 参考](https://github.com/snyk/agent-scan/blob/main/docs/cli-reference.md) — v0.5.x 和 v0.6 及更高版本的命令、标志、选项和环境变量。
- [扫描](https://github.com/snyk/agent-scan/blob/main/docs/scanning.md) — v0.5.x 和 v0.6 及更高版本的扫描行为与示例。
- [JSON 输出](https://github.com/snyk/agent-scan/blob/main/docs/json-output.md) — v0.5.x 的路径键控输出和 v0.6 的响应模式。
- [问题代码](https://github.com/snyk/agent-scan/blob/main/docs/issue-codes.md) — v0.5.x 的 `E*` 和 `W*` 安全发现参考。
- [风险参考](https://github.com/snyk/agent-scan/blob/main/docs/risks.md) — v0.6 的安全风险指标、评分和证据字段。
- [失败代码](https://github.com/snyk/agent-scan/blob/main/docs/failure-codes.md) — v0.6 的运行发现、检查和解析失败。
## 延伸阅读
- [Introducing MCP-Scan](https://invariantlabs.ai/blog/introducing-mcp-scan)
- [MCP Security Notification Tool Poisoning Attacks](https://invariantlabs.ai/blog/mcp-security-notification-tool-poisoning-attacks)
- [WhatsApp MCP Exploited](https://invariantlabs.ai/blog/whatsapp-mcp-exploited)
- [MCP Prompt Injection](https://simonwillison.net/2025/Apr/9/mcp-prompt-injection/)
- [Toxic Flow Analysis](https://invariantlabs.ai/blog/toxic-flow-analysis)
- [Skills Report](https://github.com/snyk/agent-scan/blob/main/.github/reports/skills-report.pdf)
## 变更日志
参见 [CHANGELOG.md](https://github.com/snyk/agent-scan/blob/main/CHANGELOG.md)。