跳转到主要内容
权限系统用于控制 Agent 在无需你批准的情况下可以执行哪些操作。你可以预先批准安全操作,阻止危险操作,并始终对敏感操作发出提示。

默认权限行为

Devin CLI 使用分层权限系统,在功能性与安全性之间取得平衡。默认行为取决于当前的模式 每个单元格显示该工具在该模式下是自动运行 (自动,不提示) 还是等待你批准 (提示) : Normal 模式 (默认模式) 下,只读操作会自动获批,而写入和 shell 命令则需要你明确批准。每次批准某个操作时,你都可以选择仅允许一次、在当前 会话 期间允许,或永久允许该项目执行。 Accept Edits 模式下,工作区 内的文件编辑会自动获批,但 shell 命令以及对 工作区 外的写入仍然会触发提示。 Bypass 模式下,所有工具调用都会自动获批,不再提示。 Autonomous 模式下,shell 命令和网络抓取会自动获批,因为操作系统级沙盒会限制它们可访问的范围。通过 edit/write 工具进行的直接文件编辑仍会触发提示,因为这些工具在沙盒之外运行。只有在操作系统级沙盒处于启用状态时,才可使用 Autonomous。
Bypass 和 Autonomous 模式不会覆盖组织级权限。通过 团队设置 配置的、由 Admin 强制执行的拒绝和询问规则,无论用户使用哪种权限模式,都会继续生效。详情请参阅优先级

Autonomous 模式

Autonomous 是与 --sandbox 标志配套的权限模式。从概念上说,它大致相当于“接受当前工作区中的编辑”,再加上可运行任意 shell 命令,并且这两种行为都受到操作系统级沙箱的约束。当 sandbox 处于激活状态时:
  • 这是唯一可用的权限模式。 在 sandbox 会话中,Normal、Accept Edits 和 Bypass 都会被隐藏。Plan mode 仍然可用。
  • Shell 命令和抓取操作会自动获批,而不是弹出提示,因为沙箱会限制它们可读取、写入的内容,以及可通过网络访问的范围。
  • 通过 editwrite 工具直接编辑文件时仍会弹出提示。 这些工具运行在 CLI 进程内,而不是沙箱内,因此无法受到沙箱约束。在提示中授予 Write(...) 作用域后,沙箱会动态扩展,使后续 shell 命令也能在该位置写入。
  • 在会话中途授予的作用域会动态扩展沙箱,以便后续命令使用。
如果你希望在不进行操作系统级隔离的情况下不受限制地执行,请使用 Bypass;如果你希望在操作系统强制限制文件系统和网络访问的前提下进行无人值守执行,请使用 --sandbox (会选择 Autonomous) 。有关可写/可读根目录和域过滤的详细信息,请参阅沙箱配置参考;有关企业级控制,请参阅团队设置 → 沙箱强制执行

权限的工作方式

当 Agent 调用工具时,权限系统会按优先级顺序检查你的规则:
  1. 拒绝规则 — 优先检查。如果匹配,操作会立即被阻止。
  2. 询问规则 — 其次检查。如果匹配,系统总会提示你确认 (会覆盖任何允许规则) 。
  3. 允许规则 — 最后检查。如果匹配,操作会直接继续,不会提示。
  4. 默认 — 如果没有任何规则匹配,系统会提示你批准。
由于系统会先检查拒绝规则,再检查询问规则,最后检查允许规则,因此拒绝规则始终优先。如果同一作用域同时匹配拒绝规则和询问规则,则以拒绝规则为准。

配置

在配置文件的 permissions 部分中添加权限:
在 Windows 上,用户配置文件路径为 %APPDATA%\devin\config.json (通常是 C:\Users\<you>\AppData\Roaming\devin\config.json) ,而不是 ~/.config/devin/config.json。详情请参阅配置文件

权限语法

权限匹配器分为两种类型:基于作用域的 (控制可访问的路径/命令/URL) 和 基于工具的 (控制可使用哪些工具) 。

基于作用域的权限

Read(glob)

控制文件读取权限。glob 模式用于匹配文件路径。
目录路径会自动匹配其中的所有文件。
控制文件写入/编辑权限。
控制 shell 命令执行权限。匹配以给定前缀开头的命令。
Exec(git) 会匹配 “git”、“git status”、“git commit -m ‘msg’“,但不会匹配 “gitk” 或 “github-cli”。该前缀必须作为完整单词匹配。
使用 URL 模式控制 HTTP fetch 权限。
URL 模式遵循 WHATWG URL Pattern 标准。domain: 简写会匹配该精确域名下的任意路径。

基于工具的权限

按工具名称匹配,以控制整个工具:
可用工具名称: read, edit, grep, glob, exec

MCP 工具权限

管理对 MCP 服务器工具的访问:

路径匹配模式

Read()Write() 支持以下 Glob 模式: 示例:
当你想匹配系统中的所有文件时,请使用绝对路径前缀 (例如 Read(/**)) 。不带前导 /Read(**) 会相对于你当前的工作目录解析,因此它只会匹配该目录下的文件,而不会匹配通过其他位置的绝对路径访问的文件。

持久化选项

当 Agent 在会话期间请求权限时,你可以选择如何保存你的决定:

MCP 服务器级授权

当系统就某个特定 MCP 工具请求授权时 (例如 Figma 服务器上的 list_issues) ,权限提示还会提供范围更广的服务器级选项: 这样,你就可以快速向受信任的 MCP 服务器授予整体访问权限,而无需逐个批准每个工具。

优先级

当多个权限来源定义了规则时,会按以下优先级进行合并 (从高到低) :
  1. 组织/团队设置 (若为 Enterprise)
  2. 会话级授权 (交互式批准)
  3. 项目本地配置 (.devin/config.local.json)
  4. 项目配置 (.devin/config.json)
  5. 用户配置 (~/.config/devin/config.json;Windows 上为 %APPDATA%\devin\config.json)
组织级拒绝规则不能被项目配置或用户配置覆盖。这可确保企业策略得到强制执行。

示例

最小开发设置

允许常见的只读操作,其他一律提示:

项目完全信任

自动批准该项目中的大多数操作:

严格管控的企业版

仅限特定的安全操作,所有写入前一律提示:
在此示例中,对 .env* 的写入会被直接拒绝,所有其他写入都会提示用户,且只有少数只读命令会被自动批准。由于 deny 会先于 ask 进行检查,因此对 .env* 的拒绝优先于 Write(**) 的 ask 规则。