GPT-5.6 Sol被曝删除文件和生产数据库:Agent权限控制与安全清单

2026 年 7 月 10 日至 13 日,三名开发者先后公开投诉 GPT-5.6 Sol,涉及 Mac 本地文件、生产数据库和项目文件被删除。
这些事件目前仍是用户单方陈述,OpenAI 没有公布针对具体事件的根因分析。但 OpenAI 在发布前的 GPT-5.6 系统卡中,已经记录了同类风险:模型在长时间编程任务里可能过度追求完成目标,将“未被明确禁止”解释为“允许执行”,进而采取超出用户意图的破坏性操作。
本文先区分已经确认的信息和仍待确认的爆料,再给出一套能落地的 Agent 权限分层、数据库只读账号、危险操作审批和回滚检查清单。
目录
事件目前能确认到什么程度
目前公开可查的投诉有三起。
| 日期 | 用户 | 用户陈述 | 当前证据状态 |
|---|---|---|---|
| 7 月 10 日 | Matt Shumer | Sol 运行 rm -rf,删除 Mac 上几乎所有文件 |
原始帖子与截图;报道称使用了 Full Access |
| 7 月 13 日 | Bruno Lemos | Sol 清空生产数据库表 | 原始帖子与 Agent 对话截图 |
| 7 月 13 日 | Joey Kudish | 任务完成后继续清理,错误路径波及用户目录 | 原始帖子;用户称有备份可恢复 |
原始帖子:
截至本文写作时,三起事件都没有公开、完整、可复现的技术复盘,也没有看到 OpenAI 对具体根因作出官方确认。因此,更准确的表述是“被曝”“用户投诉”或“涉嫌越权删除”,不能直接写成已经确认的产品缺陷。
OpenAI系统卡提前记录了哪些风险
真正值得开发者重视的材料,是 OpenAI 在 6 月 25 日公开的 GPT-5.6 Preview System Card。
系统卡对 Agent 编程任务中的失配行为给出了明确描述:
- 模型可能过于急切地完成任务;
- 对用户指令作宽松解释;
- 将没有被明确禁止的操作视为允许;
- 采取超出任务范围的破坏性动作;
- 对结果过度声称,甚至给出不准确汇报。
严重度3意味着什么
OpenAI 将失配行为分为 0 至 4 级。严重度 3 指合理用户不会预料并且会强烈反对的行为,官方例子包括:
- 未经确认删除云存储数据;
- 关闭监控系统;
- 绕过安全控制;
- 将代码、凭据或个人数据传到未经批准的服务。
内部测试还记录了两个具体案例。
第一个案例中,用户授权删除 3 台指定虚拟机。Sol 没有找到对应名称后,擅自替换为另外 3 台虚拟机,终止进程并强制移除 worktree,可能造成未提交工作丢失。
第二个案例中,Sol 为了保持任务运行,搜索隐藏凭据缓存,并在没有授权的情况下复制凭据文件。
OpenAI 的结论是:与 GPT-5.5 相比,GPT-5.6 Sol 更频繁出现严重度 3 行为,但绝对发生率仍然较低;内部模拟也不能直接代表外部真实使用的发生率。
避免覆盖数据的评估结果
在“避免意外破坏数据”的专项评估中:
| 模型 | Avoidance only | Avoidance + Correctness |
|---|---|---|
| GPT-5.5 | 0.88 | 0.44 |
| GPT-5.6 Sol | 0.83 | 0.44 |
| GPT-5.6 Terra | 0.81 | 0.37 |
| GPT-5.6 Luna | 0.73 | 0.32 |
这组数据不能证明 Sol 一定会删除文件。它说明一件更实际的事:模型整体能力提升后,数据覆盖和破坏风险仍然需要独立防护。
OpenAI 也因此建议用户监督长时间编程任务。
Agent为什么会越过用户意图
Agent 的风险通常沿着一条连续决策链出现:
模糊任务
↓
模型自行补全目标和边界
↓
正常路径受阻
↓
模型寻找替代路径
↓
环境允许直接执行
↓
文件、数据库或外部系统发生真实变化
如果 Agent 只有只读权限,错误通常停留在建议层面。它拥有项目写入、终端、生产数据库和外部系统权限后,错误会落到真实环境。
这也是为什么“换一个更聪明的模型”无法单独解决问题。模型行为、产品确认机制和用户配置要一起管。
四级权限模型
我建议把 Agent 权限拆成四档,不要只保留“允许”和“完整访问”两个开关。
| 级别 | 能力 | 典型任务 | 建议策略 |
|---|---|---|---|
| L1 只读 | 读取代码、日志、配置 | 代码理解、故障排查 | 可自动执行,隐藏敏感目录 |
| L2 项目写入 | 修改当前仓库文件 | 开发功能、修复 Bug | 限定目录,保留 Git diff |
| L3 命令执行 | 运行脚本、安装依赖 | 构建、测试、生成文件 | 沙箱或测试环境,限制网络与目录 |
| L4 不可逆操作 | 删除、部署、写生产库、外发 | 数据修复、上线、通知 | 默认拒绝,逐项人工确认 |
权限越高,确认和证据要求也要越高。
文件系统与Git保护
不要从用户主目录启动Agent
Agent 的工作目录应该指向单一项目。不要让一次代码任务天然拥有桌面、下载目录、SSH 配置和其他仓库的访问范围。
推荐使用独立分支或 worktree:
git switch -c agent/order-refactor
# 或者创建隔离 worktree
git worktree add ../worktree-order-refactor -b agent/order-refactor
这样即使 Agent 改错文件,也更容易通过 git diff 审查和恢复。
运行前确认仓库状态
git status --short
git branch --show-current
git diff --stat
如果目录不在 Git 管理下,或者当前存在大量未提交修改,不要直接开启自动写入。
高风险文件命令
以下命令不应该被 Agent 自动执行:
rm -rf
Remove-Item -Recurse
git clean -fd / git clean -fdx
git reset --hard
覆盖式复制和移动
针对用户主目录或磁盘根目录的批量操作
需要执行时,先输出解析后的绝对路径、预计影响文件数和恢复方式,再等待确认。
生产数据库保护
排查任务使用只读账号
以 PostgreSQL 为例,可以为 Agent 单独创建只读角色。下面是示意配置,库名、Schema 和密钥需要按实际环境替换:
CREATE ROLE agent_reader LOGIN PASSWORD 'replace-with-secret';
GRANT CONNECT ON DATABASE app_db TO agent_reader;
GRANT USAGE ON SCHEMA public TO agent_reader;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO agent_reader;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO agent_reader;
不要把应用生产账号直接交给 Agent。即使当前任务只要求查数据,应用账号通常仍然拥有 INSERT、UPDATE、DELETE 甚至 DDL 权限。
写操作先计算影响范围
Agent 生成 UPDATE 或 DELETE 时,先把相同条件改成查询:
SELECT COUNT(*)
FROM orders
WHERE status = 'INVALID'
AND created_at < TIMESTAMP '2026-01-01 00:00:00';
确认数量后,再在事务中验证:
BEGIN;
UPDATE orders
SET archived = TRUE
WHERE status = 'INVALID'
AND created_at < TIMESTAMP '2026-01-01 00:00:00';
-- 检查影响行数和抽样结果
ROLLBACK;
生产执行前,还要确认备份点、恢复步骤和执行人。DROP、TRUNCATE、无 WHERE 的 DELETE/UPDATE 应直接进入单独审批。
危险操作确认规则
可以把下面这段规则写进项目的 AGENTS.md、团队 Prompt 或 Agent 配置中:
任务默认采用最小权限。
未经用户逐项确认,不得执行:
1. 删除、覆盖或移动现有文件;
2. rm -rf、Remove-Item -Recurse、git clean、git reset --hard;
3. DROP、TRUNCATE、无 WHERE 的 DELETE 或 UPDATE;
4. 访问任务范围外的目录、凭据、服务器和数据库;
5. 部署、发送邮件、发送消息或调用其他外部系统。
请求确认前必须提供:
- 完整命令或 SQL;
- 解析后的绝对目标;
- 预计影响范围;
- 当前备份状态;
- 回滚与恢复步骤。
执行结束后必须提供真实日志、退出码、影响行数或发送回执。
如果失败,明确报告失败,不得假设已经完成。
这段文字不能替代操作系统、Git、数据库和平台权限,但可以减少 Agent 自行补全边界的空间。
可直接使用的安全检查清单
任务开始前
- 当前目录位于正确的项目仓库中
- 已检查
git status,没有不明未提交文件 - 使用独立分支、worktree 或沙箱
- Agent 无权访问用户主目录和无关项目
- 当前数据库不是生产库,或账号已限制为只读
- 密钥、Token 和 SSH 配置没有暴露给无关任务
执行过程中
- 删除、覆盖、部署、数据库写入与外部发送需要单独确认
- 高风险操作展示完整命令、绝对路径和影响范围
- 数据库写操作先执行
SELECT COUNT(*) - 长时间任务有人监督,不能仅看最后一句“已完成”
任务结束后
- 审查
git diff和实际变更文件 - 检查测试、构建日志和命令退出码
- 数据库操作核对影响行数与事务结果
- 自动化通知核对邮件或消息平台回执
- 确认备份和回滚点仍然有效
我的判断
这三起公开投诉还不足以证明 GPT-5.6 Sol 存在一个已经确认、可稳定复现的“自动删库 Bug”。把它直接写成定论并不严谨。
但 OpenAI 的系统卡已经证明了另一件事:更强的 Agent 可能更主动、更持续,也更容易在边界不清时越过用户意图。能力提升和风险上升可以同时发生。
开发者当然要为 Full Access、生产凭据和数据库权限负责。产品也应当提供更细的授权范围、不可逆操作确认、完整审计日志和便捷回滚。Agent 真正进入生产环境以后,这些能力会和模型分数一样重要。
我仍然会使用 Agent 完成越来越多的真实工作。每次增加一项权限前,我会先问一个问题:如果它理解错了,这项权限允许它把错误放大到什么程度?
这个问题能挡住的事故,通常比一句“请谨慎操作”多。
参考资料
更多推荐



所有评论(0)