工具权限与沙箱
用 agent.tool_permissions 的正则规则自动放行、自动拒绝或总是确认工具调用,以及对 Zed Agent 的 terminal 与 fetch 启用操作系统级沙箱。
工具权限
配置 Agent Panel 里哪些工具自动运行、哪些需要你批准:用 Zed 的 Settings Editor,或直接在 settings 文件里写规则。tool_permissions 设置用正则模式让你:自动批准信任的动作;自动拒绝危险动作(即使 tool_permissions.default 设成 "allow" 也被阻止);总是确认敏感动作(无论其他设置如何)。例如自动批准 cargo/npm 命令、对 sudo 命令总是确认:
{
"agent": {
"tool_permissions": {
"default": "allow",
"tools": {
"terminal": {
"default": "confirm",
"always_allow": [{ "pattern": "^cargo\\s+(build|test|check)" }, { "pattern": "^npm\\s+(install|test|run)" }],
"always_confirm": [{ "pattern": "sudo\\s+/" }]
}
}
}
}
}规则匹配的输入:terminal(shell 命令字符串)、edit_file/write_file/delete_path/create_directory(路径)、move_path/copy_path(源和目标路径)、fetch(URL)、search_web(搜索查询)、skill(技能 SKILL.md 的绝对路径);MCP 工具用 mcp:<server>:<tool_name>。每个工具可设 default(allow、confirm、deny)、always_allow、always_confirm、always_deny,模式支持 case_sensitive。注意 Profiles 控制工具可用性,工具权限控制允许/拒绝/确认行为。内置工具包括 diagnostics(读取文件或整个项目的错误和警告)、fetch(抓取 URL 并转成 Markdown)、find_path(按 glob 找文件)、grep、读/编辑/写文件、终端命令、网页搜索、技能等;具体清单随 profile、模型服务商和 Zed 版本而变。
沙箱
Tool Permissions 限制智能体能不能运行某些工具动作,但对「运行复杂脚本」这类情况作用有限;沙箱则用操作系统特性强制限制工具调用能访问的资源,不依赖智能体遵循某套指令,智能体试图访问被沙箱限制的资源时由 OS 阻止。两者可叠加:工具权限限制是否运行,沙箱限制运行起来之后能做什么。沙箱只作用于 Zed Agent,不沙箱 Zed 本身、语言服务器、扩展、任务、普通终端标签页、External Agents 或 Terminal Threads。目前作用于 terminal(命令的文件系统写入和出站网络访问,Git 元数据受保护)和 fetch(可访问的主机)。要求:Linux 上需要 PATH 里有可运行的非 setuid bwrap(Bubblewrap);Windows 需要 WSL;macOS 无额外要求;fetch 在所有平台都无额外要求。默认访问:可读大部分文件系统(含受保护的 Git 元数据);可写打开的项目目录(受保护的 Git 元数据除外);.git 目录与关联 worktree 的 Git 元数据可读但不可写;有可写的临时位置;其他写入被阻止,除非你批准更宽的沙箱请求;出站网络被阻止,除非你批准特定主机或不受限的网络请求(并非所有平台都支持按主机强制);沙箱内命令不能打开 Unix 域套接字(防止借桌面会话总线或容器守护进程在沙箱外运行命令)。