首页 / AI 代理

让 AI 代理安全操作电脑:权限、隔离与人工确认的 5 个原则

作者 JC · 更新于 · 最后查证

简体版由繁体自动转换,少数用词可能和你习惯的不同。

要点速览

要让 AI 代理安全操作电脑,内核是限制它能造成的伤害:只给最少的权限、把可能出错的动作放进隔离环境、对难以复原的动作要求人工确认,并保留可以还原的备份。不要因为嫌麻烦就关掉所有确认,也不要让代理读到不可信的内容之后,就直接照里面的指示去运行。

AI 代理安全操作电脑,不是「相不相信 AI」的问题,而是出错时,伤害有多大的问题。代理(Agent)会读你的文件、运行指令、连网络,它做错一步的后果,取决于你一开始给了它多少权限。这篇整理五个不依赖特定工具的原则,并附上官方文档的依据。如果你还不熟悉代理,请先看 AI 代理是什么。

原则一:最小权限

最小权限原则(Least privilege)是只给程序完成工作所需的最少权限。权限越小,出错或被利用时造成的伤害越小。

Claude Code 的官方文档,就是依这个精神设计预设行为:在手动模式下,它一开始只有唯读权限,需要编辑文件、运行测试或运行指令时,会先问你。它也有「工作文件夹边界」,读写启动文件夹之外的文件前会先询问。

但文档同时提醒了一个容易被忽略的地方:这个边界是一个权限提示,你核准的 Bash 指令,仍然可以写入你的用户账号能写入的任何位置。所以想在操作系统层级限制指令,需要另外使用沙箱。

几个实用做法:

  • 只在需要的项目文件夹里启动代理,不要在整个家目录或系统磁盘机启动。
  • 用权限规则(Permission rule)把机密文件挡掉。官方文档说明,规则的评估顺序是「禁止、询问、允许」,第一个符合的决定结果,所以允许规则无法在禁止规则上开例外;禁止规则在每一种权限模式下都有效。因此 .env 这类密钥档,适合用禁止规则。要注意的是,Bash 的规则比对的是代理写出来的指令文字,并不是围着那个程序的安全边界,同一个程序换一种写法调用,规则可能拦不到。
  • 只放行你确定安全、可预测的指令,其余维持询问。

原则二:分清「可复原」与「不可复原」

不是所有动作的风险都一样。Anthropic 的提示词指南建议代理这样分:

  • 鼓励:本机、可复原的动作,例如编辑文件、运行测试。
  • 先问你:难以复原、影响共用系统、或具破坏性的动作。例子包括删除文件或分支、删除数据表、强制推送、对外发送消息。
  • 不要走捷径:遇到阻碍时,不要用破坏性动作绕过去,例如跳过安全检查,或丢掉不认得的文件(它们可能是还没做完的工作)。

Claude Code 另外提供检查点:在修改文件之前,会先保存当下内容,出问题可以还原。但官方文档也写明,检查点只涵盖文件变更,影响远程系统的动作(数据库、API、部署)无法被检查点还原。

所以:文件层级的错误,靠备份或版本控制兜底(见 给 AI 用户的 Git 入门);远程的、对外的动作,靠人工确认把关。这个「人在关键步骤确认」的做法,叫做 Human in the loop(人工把关)。

原则三:把可能出错的动作放进隔离环境

沙箱(Sandbox)是把程序限制在隔离环境运行,只能碰到你指定的文件夹与网络位置。Claude Code 的沙箱功能,由操作系统强制可执行文件案与网络的边界,所以不管模型选了什么指令,边界都有效。

但沙箱有它的范围。官方文档明确写出:

  • 沙箱只涵盖 shell 指令;文件工具、MCP 服务器与 hook 不在其中。
  • 它预设可读取整台电脑(除了部分被禁止的目录),这仍然允许读到凭证档,需要你另外保护。
  • 文档也警告:不要靠沙箱里设置的保护路径与凭证档限制,去阻挡一个恶意的指令;在自动放行的模式下,那个指令可能不经提示就运行。

另外,官方文档说明:完全略过权限确认的模式,只该在容器或虚拟机这类隔离环境使用,因为代理在那里即使出错,也伤不到你的主要系统。

结论:沙箱是多层防护的其中一层,要和权限规则、人工确认搭配使用,不能单靠它。

原则四:不要让不可信的内容直接指挥代理

提示词注入(Prompt injection)是攻击者把恶意文字藏进网页、文档或其他内容,企图盖过或操控 AI 的原本指示。代理会读网页、读别人寄来的文档、读第三方工具的回传内容,这些都是潜在的入口。

Claude Code 官方文档对处理不可信内容的建议是:

  1. 核准前,先查看它建议的指令。
  2. 避免把不可信的内容直接喂给它。
  3. 确认它对重要文件提出的修改。
  4. 在虚拟机里运行脚本与工具调用,尤其是会和外部网络服务交互时。

文档也坦白说:这些保护措施能大幅降低风险,但没有任何系统能完全免疫所有攻击。连接 MCP 服务器(让代理连到外部工具与数据的标准协定,详见 MCP 是什么)时,同样要先确认你信任它;会抓取外部内容的服务器,可能让你暴露在提示词注入的风险下。

原则五:无人看管时,条件要更严格

你在旁边盯着时,代理缺了某些信息,你很快就能发现并补上。无人看管时,没有人会纠正它,你可能隔天早上才发现它整晚都创建在错误的假设上。

Claude Code 官方文档列出的五个确认问题(整理版),在让它自己跑之前都该问:

  1. 它知道「完成」是什么样子吗?
  2. 它能检查自己的成果吗?
  3. 它被允许碰什么?(权限规则、隔离环境、只能推送的那条分支)
  4. 什么会让它停下来?(次数上限、花费上限)
  5. 结果送去哪里、由谁核准?

写这些条件的方法,请看 AI 代理任务说明怎么写。

风险与对策一览

风险对策对应原则
误删、误改文件限制工作文件夹、版本控制或备份、检查点一、二
读取密钥与密码禁止读取规则、密钥不放在工作文件夹一
对外发送消息、推送、部署等收不回来的动作人工确认、不给对应权限二
指令碰到不该碰的文件或网络沙箱、虚拟机、容器三
被网页或文档里的恶意文字操控查看指令、不喂不可信内容、隔离环境四
无人看管时越做越偏完成标准、检查、上限、人工核准五

第一次让代理操作电脑前的检查清单

  • 我只在单一项目文件夹启动它。
  • 这个文件夹有备份,或已经用版本控制记录。
  • 密钥与密码档不在这个文件夹里,或已设成禁止读取。
  • 写入、删除、对外送出的动作,我保留了确认。
  • 我知道它要处理的内容从哪里来;来路不明的内容,我会改在隔离环境处理。
  • 如果要无人看管,我回答了上面的五个问题。

延伸阅读

常见问题

AI 代理会不会把我的文件删掉?

只要你允许它运行删除,就有可能,不管是它误判还是你的说明不够清楚。降低风险的做法是:限制它能动的文件夹、对删除这类动作保留人工确认,并在有备份或版本控制的文件夹里工作。

每次都要核准很烦,可以全部关掉吗?

可以调整,但不要整个关掉。比较好的做法是只放行你确定安全的指令,其余维持询问;要完全跳过确认的模式,官方文档的建议是只在容器或虚拟机这类隔离环境使用。

什么是提示词注入?

攻击者把恶意文字藏进网页、文档或其他内容,企图盖过或操控 AI 的原本指示。代理会读取外部内容时,特别要防范:不要让不可信的内容直接喂给代理,并检查它提议的指令。

沙箱可以保证安全吗?

不行。沙箱能在操作系统层面限制指令可以碰的文件与网络,但它有涵盖范围:Claude Code 的文档指出它只涵盖 shell 指令,文件工具、MCP 服务器与 hook 不在其中。它是多层防护的一层,不是唯一一层。

代理有办法读到我的 API 密钥吗?

有可能。Claude Code 的文档提醒,沙箱的预设读取范围很广,仍可能读到凭证档,需要另外设置保护。最稳的做法是不要把密钥放在代理的工作文件夹里,并对机密文件设禁止读取。

在平常用的电脑上跑代理安全吗?

取决于你给它的权限与你要处理的内容。处理自己写的、可信的内容、只开放单一项目文件夹,风险相对低;要处理来路不明的内容,或想让它自动运行,就改到虚拟机或容器里。

留言

用 GitHub 账号登录就能留言,留言会公开显示在 GitHub Discussions。留言前请先看社区规则。

AI 代理