权限系统用于控制 Agent 在无需你批准的情况下可以执行哪些操作。你可以预先批准安全操作,阻止危险操作,并始终对敏感操作发出提示。Documentation Index
Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
Use this file to discover all available pages before exploring further.
默认权限行为
| 工具类型 | 示例 | Normal | Accept Edits | Bypass | Autonomous (sandbox) |
|---|---|---|---|---|---|
| 只读 | 文件读取、grep、glob | 否 | 否 | 否 | 否 |
| Fetch | HTTP 请求 | 是 | 是 | 否 | 否 |
| Bash 命令 | Shell 执行 | 是 | 是 | 否 | 否 |
通过 edit/write 进行文件编辑 | 编辑/写入文件 | 是 | 否 (在 工作区 内) | 否 | 是 |
edit/write 工具进行的直接文件编辑仍会触发提示,因为这些工具在沙箱之外运行。只有在操作系统级沙箱处于启用状态时,才可使用 Autonomous。
Autonomous 模式
--sandbox 标志配套的权限模式。从概念上说,它大致相当于“接受当前工作区中的编辑”,再加上可运行任意 shell 命令,并且这两种行为都受到操作系统级沙箱的约束。当 sandbox 处于激活状态时:
- 这是唯一可用的权限模式。 在 sandbox 会话中,Normal、Accept Edits 和 Bypass 都会被隐藏。Plan mode 仍然可用。
- Shell 命令和抓取操作会自动获批,而不是弹出提示,因为沙箱会限制它们可读取、写入的内容,以及可通过网络访问的范围。
- 通过
edit和write工具直接编辑文件时仍会弹出提示。 这些工具运行在 CLI 进程内,而不是沙箱内,因此无法受到沙箱约束。在提示中授予Write(...)作用域后,沙箱会动态扩展,使后续 shell 命令也能在该位置写入。 - 在会话中途授予的作用域会动态扩展沙箱,以便后续命令使用。
--sandbox (会选择 Autonomous) 。有关可写/可读根目录和域过滤的详细信息,请参阅沙箱配置参考;有关企业级控制,请参阅团队设置 → 沙箱强制执行。
权限的工作方式
- 拒绝规则 — 优先检查。如果匹配,操作会立即被阻止。
- 询问规则 — 其次检查。如果匹配,系统总会提示你确认 (会覆盖任何允许规则) 。
- 允许规则 — 最后检查。如果匹配,操作会直接继续,不会提示。
- 默认 — 如果没有任何规则匹配,系统会提示你批准。
由于系统会先检查拒绝规则,再检查询问规则,最后检查允许规则,因此拒绝规则始终优先。如果同一作用域同时匹配拒绝规则和询问规则,则以拒绝规则为准。
配置
permissions 部分中添加权限:
在 Windows 上,用户配置文件路径为
%APPDATA%\devin\config.json (通常是 C:\Users\<you>\AppData\Roaming\devin\config.json) ,而不是 ~/.config/devin/config.json。详情请参阅配置文件。- 项目配置
- 用户配置
- 本地覆盖
权限语法
基于作用域的权限
Read(glob)
Read(glob)
控制文件读取权限。glob 模式用于匹配文件路径。目录路径会自动匹配其中的所有文件。
Write(glob)
Write(glob)
控制文件写入/编辑权限。
Exec(prefix)
Exec(prefix)
控制 shell 命令执行权限。匹配以给定前缀开头的命令。
Exec(git) 会匹配 “git”、“git status”、“git commit -m ‘msg’“,但不会匹配 “gitk” 或 “github-cli”。该前缀必须作为完整单词匹配。Fetch(pattern)
Fetch(pattern)
基于工具的权限
read, edit, grep, glob, exec
MCP 工具权限
| 模式 | 匹配 |
|---|---|
mcp__server__tool | 某个特定工具 |
mcp__server__* | 某个 server 上的所有工具 |
mcp__* | 所有 server 上的全部 MCP 工具 |
路径匹配模式
Read() 和 Write() 支持以下 Glob 模式:
| 模式 | 含义 |
|---|---|
* | 单个路径段中的任意字符 |
** | 跨多个路径段的任意字符 (递归) |
~ | 主目录展开 |
当你想匹配系统中的所有文件时,请使用绝对路径前缀 (例如
Read(/**)) 。不带前导 / 的 Read(**) 会相对于你当前的工作目录解析,因此它只会匹配该目录下的文件,而不会匹配通过其他位置的绝对路径访问的文件。持久化选项
| 选项 | 保存位置 | 与团队共享? |
|---|---|---|
| 允许一次 | 不保存 | 否 |
| 在当前会话中允许 | 仅保存在内存中 | 否 |
| 对项目允许 | .devin/config.json | 是 |
| 对项目允许 (本地) | .devin/config.local.json | 否 |
| 全局允许 | ~/.config/devin/config.json (Windows 上为 %APPDATA%\devin\config.json) | 否 |
MCP 服务器级授权
list_issues) ,权限提示还会提供范围更广的服务器级选项:
| 选项 | 作用 |
|---|---|
| 允许此工具 (本次会话) | 在当前会话中授予对此特定工具的访问权限 |
| 始终允许此工具 | 将对此特定工具的授权持久保存到配置中 |
| 允许此服务器上的所有工具 (本次会话) | 在本次会话中授予对此服务器上所有工具的访问权限 |
| 始终允许此服务器上的工具 | 将对此服务器上所有工具的访问权限持久保存到配置中 |
优先级
- 组织/团队设置 (若为 Enterprise)
- 会话级授权 (交互式批准)
- 项目本地配置 (
.devin/config.local.json) - 项目配置 (
.devin/config.json) - 用户配置 (
~/.config/devin/config.json;Windows 上为%APPDATA%\devin\config.json)
