TRAE,致力于打造安全可信的 IDE
随着大模型与 Agent 能力越来越强,AI 编程助手早已成为我们每天写代码的“副驾驶”,但一个严肃的问题也逐渐被开发者们意识到:真的能放心把代码仓库的“编辑权限”交给 AI 吗?
社区里的一些开发者也曾分享自己的“惊魂一刻”:有位网友说,在使用某 AI 产品时,自己的 AI 运行了如下命令,导致自己的 800G 文件都被删除。
乍一看,这个命令没什么问题:AI 期望删除 C:\Users\xxx xxx\Documents\SCE 这个目录,但是实际上这个命令实际执行时,会静默删除整个 C 盘 。
因为在 PowerShell 中 \ 就是一个常规字符而不是转义字符,使用 PowerShell 语法高亮可以看出这个问题,在 Windows 中 \ 作为路径参数表示的是当前进程 cwd 所在盘符的根路径,这个例子中为 C: 。
因此如上命令等价于使用 cmd 执行:
如何规避这样的风险呢?最佳处理方法当然不是退回手动编码的“安全区”。实际上,AI 编码安全需要 LLM(大模型)、开发者(使用者)和 IDE(开发环境)三方的共同努力:
-
LLM 生产商需努力让模型更精准、更可控。
-
开发者自身需提升提示工程能力和审查意识。
-
而作为 IDE 的构建者,TRAE 团队也愿意在这条责任链上多往前走一步——打造一个“默认安全”的环境,将防护内置于工具之中。
通过 “沙箱” 等多重安全机制,降低命令运行风险
TRAE 支持沙箱、 Shell 拦截等多重安全机制,将终端命令对文件的操作,限制在一个相对可控的范围内,从而降低文件被意外的修改或删除等风险,为开发者减少后顾之忧。
沙箱模式
最近,TRAE 正在灰度「沙箱运行模式」,这种模式即为 Agent 命令的执行提供一个沙箱环境。
我们明确定义了文件系统的权限边界:仅对项目目录、临时目录、以及常见依赖目录赋予了读写权限。命令在沙箱环境中执行文件操作时,操作系统会根据沙箱环境配置识别该操作是否越权进而拦截。
- 在未识别到越权错误时,则代表命令在沙箱中执行完成,TRAE 会将执行结果反馈给 AI。
- 在识别到越权错误时,会提供给用户多个选项进行手动选择:
➤
跳过: 如果 AI 生成的命令确实有安全问题,则用户可以取消命令运行,让 AI 尝试其他方式。
➤
运行: 越权不代表不安全,当用户确认 AI 生成的命令无安全问题时,可以在沙箱外重新运行一次。
➤
添加命令到白名单: 当用户认为这个命令永远不会出现安全问题,可以放心的让 AI 执行,则可以添加到白名单,后续该命令的执行将永远在沙箱外执行。
Shell 拦截
除了沙箱模式,TRAE 还增加了 Shell 拦截机制进行兜底,对 rm 等高危命令的越权操作进行检测和拦截。
例如,对于上述社区案例中的命令,在 PowerShell 中,会拦截 cmd 以及 cmd 内部 rmdir 的执行,当检测到 rmdir 的路径参数不在 Agent 允许操作的范围内时,将直接拒绝,从而避免此类问题的发生。除了 PowerShell,我们也为 bash / git-bash / zsh / fish 这几种常见 Shell 提供了安全删除的 Shell 拦截能力。
TRAE 中如何使用沙箱
当前,沙箱功能正在灰度中,功能可支持 macOS 系统及远程使用 Linux,Windows 系统的功能正在开发中,敬请期待。 使用 Windows 的用户建议直接使用白名单模式来保障命令执行的安全性。
对于可以使用到此功能的 macOS 用户可以发现:运行对话流中的命令行,会被切换为沙箱中自动运行模式。
当然,用户也可以在【设置 > 对话流 > 自动运行】模块,调整命令行运行方式:
沙箱运行(支持白名单)--默认启用,推荐使用
-
macOS 支持沙箱能力,命令在沙箱中自动运行和判定风险。可以通过设置白名单将部分可信命令逃逸出沙箱环境直接运行,请务必确认清楚再加进去。
-
Linux (通过 Remote SSH 使用)支持沙箱能力。
手动运行
-
所有命令需手动确认后执行
自动运行--这种运行方式风险高,不推荐使用
-
所有命令自动在沙箱外执行
与开发者共同建设安全防线
TRAE 在带给开发者一个更安全可信的工具的时候,不是去限制 AI 的能力,而是为它铺设一条安全的轨道;不是增加开发者的负担,而是为大家配备最可靠的警报器和制动系统。
沙箱功能虽然可以在绝大多数场景下帮助我们拦截风险,但仍然可能有当前还未知以及暂时无法覆盖的特殊情况出现。对于当前还不能支持的 Windows 系统以及网络权限边界问题,我们也在积极探索中。也欢迎各位开发者在实践过程中提出自己遇到的问题,我们一同建设更安全的工具。
