// Agent 工具 · 安全
MCP 与 agent 安全清单
装 MCP 服务器、打开自动批准之前先看:会出什么事,以及挡住大多数问题的几个设置。要点来自 MCP 官方安全指南。
6 类风险核对于 2026-10-22依据 modelcontextprotocol.io
01最常见的 6 类问题
每条都附依据的官方来源。
- 01
本地 MCP 服务器 = 以你的身份运行的程序
stdio 服务器是你电脑上的普通进程,能读你能读的文件、用你环境里的令牌、随意联网。一条 npx 命令装上的第三方服务器,权限和你本人一样。
怎么防: 不需要碰本机的服务改用远程版;第三方服务器放进容器、沙箱或虚拟机;固定版本号,只装能确认发布者的。 来源 ↗
- 02
工具返回的内容可能带“提示注入”
会抓网页、读邮件、读工单的服务器,会把外部写的文字原样交给模型;里面藏的指令可能让 agent 去做你没让它做的事。Anthropic、OpenAI 的官方文档都专门提醒了这一点。
怎么防: 读外部内容的工具和能写、能发、能付款的工具不要同时放开自动执行;敏感操作保留人工确认。 来源 ↗
- 03
工具描述本身也是不可信输入
服务器给出的工具名称和描述会直接进模型上下文,描述可以被写成诱导模型的指令,也可能在你批准后悄悄改掉。
怎么防: 装之前扫一眼每个工具的描述;用会在工具定义变化时重新提示的客户端;只开需要的工具(多数客户端支持工具白名单)。 来源 ↗
- 04
令牌给得太宽、被转手
官方安全指南点名的几类问题:令牌透传(服务器把收到的令牌原样转给下游 API)、混淆代理、权限范围过大。一个能读写所有仓库的令牌,一旦被注入利用,损失就是全部仓库。
怎么防: 每个服务器单独发最小权限令牌(细粒度 PAT、只读数据库账号);OAuth 只申请需要的 scope;不要把 shell 里的全部环境变量继承给服务器。 来源 ↗
- 05
文件和网络不设边界
能写任意目录、能连任意地址,就能删改代码库外的文件、把数据发出去(官方指南也提到 SSRF)。
怎么防: 文件访问限定到具体目录、能只读就只读;不需要网络的服务器关掉外连,其余只放行已知地址。agent 自己的命令也尽量在沙箱里跑。 来源 ↗
- 06
“全自动”模式等于放弃最后一道闸
bypassPermissions、--allow-all-tools、Run Everything、danger-full-access、trust: true 这类开关会让 agent 不经确认执行任何命令。Cursor 官方也说明,自动审核分类器不是安全边界。
怎么防: 只在一次性容器或虚拟机里用全自动;日常用“工作区可写 + 需要时再问”这类默认档。 来源 ↗
02个人自查清单
摘自 MCP 官方《Local Server Security》。
- 清楚客户端里配置的每一个服务器,不用的删掉
- 不需要访问本机的服务器用远程版,不跑本地进程
- 每个服务器都来自可识别的发布者,并固定版本
- 第三方服务器隔离运行(容器、沙箱或虚拟机),不直接裸跑
- 每个服务器通过单独配置拿到自己的最小权限凭据,不继承 shell 环境、不复用
- 文件访问限定到具体目录,能只读就只读
- 不需要网络的服务器禁止外连,其余只放行已知目的地
- 看过每个服务器的工具描述,工具定义变化时客户端会重新提示
03团队 / 企业清单
- 维护一份已批准的服务器白名单,并公开准入标准
- 持续盘点受管电脑上的 MCP 客户端配置
- 为本地服务器定一个默认隔离方式并写成文档
- 保留受管电脑上的 MCP 活动审计日志
- 能对某个服务器全员封禁外连并轮换它的凭据
04各家客户端的安全开关
完整接入指南 →| Agent | 权限模式 | 沙箱 |
|---|---|---|
| Claude Code | 权限模式:default(逐个确认)/ acceptEdits / plan / auto(分类器审核)/ dontAsk / bypassPermissions | /sandbox 开启,默认关闭;macOS 用 Seatbelt,Linux / WSL2 用 bubblewrap,原生 Windows 不支持 |
| Codex (CLI · IDE · ChatGPT desktop) | 沙箱 read-only / workspace-write(默认,网络关)/ danger-full-access;审批 on-request / never / granular | 默认开启:macOS 用 Seatbelt,Linux 用 bwrap + seccomp,Windows 用 MXC;.git、.codex、.agents 等目录始终只读 |
| Cursor (editor · CLI) | Run Modes:Auto-review(推荐,分类器审核)/ Allowlist / Run Everything(全部自动执行) | 终端命令可在沙箱里跑(Auto-review 或 Allowlist + 沙箱);CLI 用 /sandbox 或 --sandbox 切换。官方说明 Auto-review 不是安全边界 |
| GitHub Copilot (VS Code · Copilot CLI) | CLI 默认逐项确认;--allow-tool 精确放行,--allow-all-tools 等于把你的全部权限交给它 | CLI 里 /sandbox enable 开本地沙箱;云端沙箱为公开预览 |
| Antigravity CLI | 未写明 | 官方文档有“沙箱与文件访问控制”专页,细节见链接 |
| Gemini CLI | 未写明 | -s / GEMINI_SANDBOX 开启:docker、podman、macOS Seatbelt 等 |
| Devin Desktop / Devin CLI (formerly Windsurf) | 未写明 | Devin CLI 有系统级沙箱(Linux 需 bubblewrap + socat),企业可强制开启 |
| Cline | 默认逐步确认,可按操作类型开启自动批准(Auto Approve) | 未写明 |
| OpenCode | 每类操作设 allow / ask / deny,可按命令通配符细分 | 未写明 |
| Kiro (IDE · CLI) | 未写明 | 未写明 |
| Qwen Code | 审批模式 plan / default / auto-edit / auto(分类器)/ yolo | tools.sandbox 可设为 docker 等 |
05帮你落实的工具
全部安全工具 →- ToolHive(容器化运行与管理 MCP 服务器)把 MCP 服务器装进隔离容器运行
- Container Use(给编程 agent 的容器化工作区)给编程 agent 独立容器和分支
- agent-scan扫描已装 MCP / 技能的风险
- modelcontextprotocol/inspector安装前查看服务器暴露的工具
- E2B云端沙箱跑代码
- microsandbox本地微虚拟机沙箱
- infisical密钥管理、按需注入
- gitleaks提交前扫出泄露的密钥
本地(stdio)MCP 服务器比远程的更危险吗?
它在你的电脑上以你的权限运行,恶意或被入侵的版本能读到你的文件和令牌。MCP 官方指南建议:不需要访问本机的就用远程版,第三方本地服务器要隔离运行。
开了沙箱,全自动模式就安全了吗?
沙箱限制的是文件和网络越界,你交给它的令牌、经 MCP 工具做的操作照样能执行。密钥要最小化,敏感操作保留确认。