Agent 安全与权限:它能做什么、不能做什么、怎么防止越权
Agent 的权力很大,风险也很大
它不是只能聊天——它能读你的文件、执行命令、访问网络。搞清楚边界。
1
Agent 手里有多大的权力?
Chat AI 只能跟你说话。Agent 能真的动手——读文件、写文件、删文件、跑程序、访问网络、调用外部服务。这意味着它做错事的后果是真实的,不是"说错话"那么简单。
读你的文件
包括你没主动给它的文件——只要在工作目录下,它都能 cat 读取
写/改/删文件
能创建新文件、修改已有文件、甚至删除文件——不可撤销
执行任意命令
能跑 bash 命令——理论上能做你在终端里能做的一切
访问网络
能发 HTTP 请求、调 API、下载文件、甚至 SSH 到其他服务器
安装软件
能 pip install、npm install——可能引入恶意依赖
调用外部服务
通过 MCP 连接邮箱、日历、代码仓库、数据库……
⚠
真实发生过的事故
这些不是假想——都是社区里真实报告过的
误删文件:Agent 在整理目录时把用户的源码文件删了——它判断"这个文件看起来是临时的"。没有确认,直接 rm 了。
泄露密钥:Agent 在生成代码时把 .env 文件里的 API Key 写进了 README。推送到 GitHub 后密钥被公开。
恶意技能:OpenClaw 早期有人在 ClawHub 上传了恶意技能——安装后会把用户文件内容发送到外部服务器。
Token 爆炸:用户设了一个 /loop 定时任务,忘了设预算上限。Agent 跑了一整晚,第二天早上收到 $800 的账单。
越权操作:Agent 在"帮你清理磁盘空间"时执行了
sudo rm -rf,删掉了系统文件。2
权限三档:自动放行 / 需要确认 / 禁止
大部分框架把操作分成三档。理解这三档,就知道哪些操作 Agent 会"先斩后奏",哪些会停下来问你。
操作
权限
说明
读取项目目录下的文件
自动
Agent 默认能读工作目录下所有文件
在项目目录下创建/修改文件
自动
大部分框架允许写入项目目录
运行安全命令(ls, cat, grep)
自动
只读类命令通常自动放行
运行 pip install / npm install
需确认
安装依赖前 Agent 会问你
修改项目外的文件
需确认
动项目目录之外的文件需要你同意
执行 shell 脚本
需确认
运行 .sh 脚本通常需要确认
网络请求(curl, wget, API 调用)
需确认
对外发请求需要确认(可配置)
sudo / 管理员权限命令
禁止
不应该给 Agent sudo 权限
删除项目外的文件
禁止
绝对不要让 Agent 动系统文件
访问 ~/.ssh / ~/.aws 等密钥目录
禁止
密钥文件必须完全隔离
以上是推荐做法。实际权限取决于你的配置。Claude Code 默认较严(很多操作要确认),OpenClaw 默认较松(建议手动收紧)。
3
沙箱隔离:把 Agent 关在笼子里
"沙箱"就是给 Agent 一个隔离的环境——它只能在这个环境里活动,碰不到环境外的东西。就像给小孩一个围栏,里面随便玩,外面碰不到。
各框架的沙箱机制
Claude Code
默认限制在项目目录内。
有权限确认机制(每次危险操作弹窗)。
组织管理员可用 managed-settings.json 强制收紧。
默认限制在项目目录内。
有权限确认机制(每次危险操作弹窗)。
--permission-mode 可设为 strict/normal/permissive。组织管理员可用 managed-settings.json 强制收紧。
Codex
Cloud 模式在远程容器中执行(天然隔离)。
本地模式有 sandbox 选项。
Cloud 模式在远程容器中执行(天然隔离)。
本地模式有 sandbox 选项。
--sandbox 开启文件系统隔离。
OpenClaw
强烈建议用 Docker 运行。
每个 Agent 可以设独立的 sandbox scope。
工具级权限:tools.allow / tools.deny 精确控制。
强烈建议用 Docker 运行。
sandbox.mode: "all" 在 openclaw.json 中配置。每个 Agent 可以设独立的 sandbox scope。
工具级权限:tools.allow / tools.deny 精确控制。
Hermes
工具级开关:
config.yaml 里 toolsets 限制每个 Profile 能用什么工具。
可配合 Docker 做文件系统隔离。
工具级开关:
hermes tools 逐个启用/禁用。config.yaml 里 toolsets 限制每个 Profile 能用什么工具。
可配合 Docker 做文件系统隔离。
4
敏感文件怎么隔离
你的电脑上有很多 Agent 不应该碰的东西:API 密钥、SSH 私钥、数据库密码、个人照片、银行信息。怎么确保 Agent 看不到?
.gitignore / .claudeignore / .codexignore
# 告诉 Agent 忽略这些文件——不读、不引用、不提及
.env ← API 密钥、数据库密码
.env.local
*.pem ← SSH 私钥
*.key
secrets/ ← 所有密钥文件
credentials/
*.sqlite ← 本地数据库
personal/ ← 个人文件
.env ← API 密钥、数据库密码
.env.local
*.pem ← SSH 私钥
*.key
secrets/ ← 所有密钥文件
credentials/
*.sqlite ← 本地数据库
personal/ ← 个人文件
# Claude Code — 配置忽略规则
# 在 .claude/settings.json 中:
{
"permissions": {
"deny": ["read:.env", "read:secrets/", "read:*.pem"]
}
}
# OpenClaw — 工具级权限
# openclaw.json 中:
"tools": {
"deny": ["write", "edit"] ← 只允许读,不允许写
}
# 在 .claude/settings.json 中:
{
"permissions": {
"deny": ["read:.env", "read:secrets/", "read:*.pem"]
}
}
# OpenClaw — 工具级权限
# openclaw.json 中:
"tools": {
"deny": ["write", "edit"] ← 只允许读,不允许写
}
.env 文件是最常见的泄露源。Agent 在生成代码时可能"好心"把 .env 里的值硬编码到代码文件中。一定要把 .env 加入忽略列表,并在 AGENTS.md 里明确写"不要读取或引用 .env 文件的内容"。
5
安全检查清单
用 Git 管理项目文件。Agent 改错了?
git checkout . 一秒恢复。没有 Git = 没有后悔药。设置 API 预算告警。在 Anthropic / OpenAI / DeepSeek 的控制台设月度上限。Agent 7×24 跑可以一天烧掉几百美元。
敏感文件加入忽略列表。.env、密钥、私人文件——写进 .claudeignore 或 settings.json 的 deny 规则里。
在 AGENTS.md 里画红线。"不要删除任何文件""不要修改 .env""不要执行 sudo 命令"——明确写出来。
社区技能安装前检查。打开 SKILL.md 看一眼内容。有 scripts/ 目录的一定要检查脚本在做什么。不装不认识的人写的技能。
OpenClaw 必须用 Docker。OpenClaw 权限较松,不用 Docker 等于裸奔。
docker pull openclaw/openclaw:latest永远不要给 Agent sudo 权限。它不需要管理员权限来完成绝大多数任务。给了 = 给它删系统文件的能力。
不要把 API Key 放在项目文件里。用环境变量或 .env(并确保 .env 被忽略)。Agent 可能把文件内容泄露到输出中。
不要在公共仓库里提交 CLAUDE.md 中的密钥。CLAUDE.md 会被 Git 跟踪——不要在里面写 API Key 或密码。
最低限度的安全:Git + 预算告警 + .env 隔离。做好这三件事就能防住 90% 的风险。Git 让你能回滚任何误操作,预算告警防止账单爆炸,.env 隔离防止密钥泄露。剩下的沙箱、权限配置是锦上添花——先把这三个基础搞定。