GPT-5.6 被曝误删用户重要文件:Codex 全权限,到底还能不能开?

最近,一则关于 GPT-5.6 误删用户重要文件的新闻在技术圈炸开了锅。据报道,一名用户在使用 GPT-5.6 集成的 Codex 全权限模式时,AI 模型在自动执行代码的过程中意外删除了其本地磁盘上的数个关键项目文件。这起事件迅速引发了对 AI 辅助编程工具安全边界的激烈讨论。作为技术作者,我不打算单纯评判对错,而是想深入剖析背后原理,并探讨我们到底应该如何安全使用这类工具。## Codex 全权限模式:能力与风险的双刃剑Codex 是 OpenAI 推出的代码生成模型,在 GPT-5.6 中,它被赋予了“全权限”(Full Permissions)模式。在这种模式下,AI 不仅能够读取用户的代码库、分析项目结构,还能直接执行代码——包括文件操作、系统调用甚至网络请求。这种设计初衷是为了让 AI 更智能地自动修复 bug、优化代码或处理重复任务。但问题在于:AI 模型本质上是一个概率推理系统,它基于训练数据中的模式生成输出。它并不真正理解“删除文件”的长期后果,也不会区分“测试文件”和“生产数据”。当用户给予全权限时,一个看似无害的代码片段(如 os.remove("temp.txt"))可能因为路径解析错误而变成灾难。## 核心原理:AI 代码执行的信任链漏洞从技术层面看,Codex 全权限模式的风险源于信任链的断裂。通常,我们在运行第三方代码时会采取沙箱(Sandbox)、权限隔离等防护。但全权限模式打破了这一规则:AI 生成的代码直接拥有宿主环境的完整权限。举个例子,假设 AI 生成如下代码(用于清理临时文件):pythonimport osimport shutil# 假设用户指定了临时目录temp_dir = "/home/user/project/temp"# AI 自动推导出清理逻辑for root, dirs, files in os.walk(temp_dir): for file in files: file_path = os.path.join(root, file) # 删除所有 .tmp 文件 if file.endswith(".tmp"): os.remove(file_path) # 危险!如果 temp_dir 被错误解析为根目录... print(f"Deleted: {file_path}")这段代码看起来逻辑清晰,但如果 AI 在上下文中误判了 temp_dir 的路径(例如,用户提问时不小心写了“在项目根目录清理临时文件”),它可能会删除 /home/user/project 下的重要文件。在真实事故中,GPT-5.6 因为一个类似的路径解析错误,将用户的工作目录当作了临时目录。## 可运行的代码示例:模拟风险场景下面是一个可执行的 Python 示例,用来演示路径误判可能导致的后果。假设我们有一个简单的文件整理任务:pythonimport osimport shutilimport tempfile# 模拟用户的项目目录project_dir = tempfile.mkdtemp(prefix="my_project_")# 创建一些重要文件important_file = os.path.join(project_dir, "config.json")with open(important_file, 'w') as f: f.write('{"api_key": "secret"}')# 创建一些临时文件temp_file = os.path.join(project_dir, "temp.log")with open(temp_file, 'w') as f: f.write("temporary data")print(f"项目目录: {project_dir}")print("重要文件存在:", os.path.exists(important_file))# 模拟 AI 生成的清理代码(假设路径错误)def ai_cleanup(base_path): # 危险:AI 错误地将 base_path 当作临时目录 for item in os.listdir(base_path): item_path = os.path.join(base_path, item) if os.path.isfile(item_path): # 假设 AI 认为所有文件都是临时文件 os.remove(item_path) print(f"已删除: {item_path}")# 执行清理(注意:这里传入的是项目目录,但 AI 误以为是临时目录)ai_cleanup(project_dir)print("重要文件还存在吗?", os.path.exists(important_file)) # 输出 False# 清理临时目录本身shutil.rmtree(project_dir)运行这段代码,你会看到 config.json 被误删。这直接模拟了 GPT-5.6 事故中的场景:AI 因为对路径上下文的误解而执行了错误的删除操作。## 如何安全使用全权限模式:工程实践与代码示例既然全权限模式存在风险,是否就应该彻底禁用呢?并非如此。关键在于建立安全执行策略。以下是两种可落地的方案:### 方案一:使用沙箱环境隔离我们可以用 Python 的 subprocess 结合沙箱工具(如 Firejail)来限制 AI 代码的权限。下面是一个简单的安全执行器:pythonimport subprocessimport tempfileimport osdef safe_execute_ai_code(ai_code: str, trusted_paths: list): """ 在受限环境中执行 AI 生成的代码 - 使用临时目录作为工作目录 - 只允许访问 trusted_paths 中的文件 """ # 创建隔离的工作目录 sandbox_dir = tempfile.mkdtemp(prefix="codex_sandbox_") try: # 将 AI 代码写入临时文件 code_file = os.path.join(sandbox_dir, "ai_code.py") with open(code_file, 'w') as f: f.write(ai_code) # 使用 subprocess 执行,同时传递受信任路径作为环境变量 env = os.environ.copy() env['TRUSTED_PATHS'] = ':'.join(trusted_paths) env['SANDBOX_DIR'] = sandbox_dir result = subprocess.run( ['python3', code_file], capture_output=True, text=True, timeout=30, # 超时保护 env=env ) return result.stdout, result.stderr finally: # 清理沙箱 import shutil shutil.rmtree(sandbox_dir, ignore_errors=True)# 使用示例ai_code = """import os# AI 生成的删除代码target_dir = os.environ.get('TRUSTED_PATHS', '').split(':')[0]# 但 AI 可能会尝试删除根目录,但沙箱限制了路径for root, dirs, files in os.walk('/etc'): for f in files: print(f"假装删除: {os.path.join(root, f)}")"""stdout, stderr = safe_execute_ai_code(ai_code, trusted_paths=['/home/user/project'])print("安全输出:", stdout)这个示例展示了如何通过环境变量和沙箱目录将 AI 代码限制在安全范围内,即使 AI 尝试访问 /etc,沙箱也会阻止实际写入。### 方案二:权限最小化 + 用户确认更保守的做法是让 AI 代码只输出操作计划,然后由用户确认。通过 input() 实现交互式确认:pythondef ask_before_execute(ai_code: str): """ 要求 AI 代码在执行前打印操作列表,等待用户确认 """ # 假设 AI 返回了操作描述 proposed_actions = [ "删除 /home/user/project/temp/tmp_123.log", "移动 /home/user/project/temp/data.csv 到 /home/user/archive/" ] print("AI 提议执行以下操作:") for i, action in enumerate(proposed_actions, 1): print(f" {i}. {action}") confirm = input("是否允许执行?(y/n): ").strip().lower() if confirm == 'y': # 执行代码 exec(ai_code, {"__builtins__": {}}, {"safe_mode": True}) print("操作已执行") else: print("操作已取消")# 模拟 AI 代码ai_code = """print("实际执行删除操作")"""ask_before_execute(ai_code)这种方案虽然牺牲了自动化效率,但能有效防止灾难性误操作。## 总结GPT-5.6 误删文件事件并非 AI 的“恶意”,而是技术设计中的信任模型缺陷。Codex 全权限模式本质上是将代码执行权限从开发者转移给一个概率生成系统,而后者缺乏对“删除”这类操作长期后果的理解。要安全使用这类工具,我们需要建立多层防护:沙箱隔离、权限最小化、操作确认机制,以及对 AI 输出的严格审计。代码生成的自动化程度越高,我们就越需要谨慎地设计安全边界。未来,AI 代码执行工具应该默认采用“只读+预览”模式,只有在用户明确授权后才执行写操作。技术总是在试错中进步,而这次事故是一个宝贵的教训。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐