目录与网络访问权限
分别控制路径和 URL 批准,并理解 Shell 检测的边界。
This page has not been translated into English yet. The original Chinese version is shown below.
工具权限、文件路径权限和 URL 权限控制不同维度。允许运行 Shell,不代表所有路径或所有网址都已批准;同样,批准一个域名也不等于允许任意工具执行。
默认路径范围
CLI 默认能访问当前工作目录、子目录和系统临时目录。路径检查覆盖 Shell、文件创建与编辑、读取,以及 grep / glob 等搜索工具。
| 选项 | 效果 |
|---|---|
--allow-all-paths | 关闭路径校验,允许任意路径 |
--disallow-temp-dir | 不授予默认的临时目录访问 |
Shell 中的路径通过分析命令文本启发式提取。复杂 Shell 结构中的路径可能无法识别;只展开 HOME、TMPDIR、PWD 等特定环境变量,自定义变量不一定得到正确校验。已有文件会解析符号链接,待创建文件的符号链接处理不同。因此,路径批准不是操作系统级文件隔离。
URL 批准
默认情况下,URL 访问需要批准。检查适用于 web_fetch 和 curl、wget、fetch 等选定的联网 Shell 命令。
copilot --allow-url=github.com
copilot --deny-url=github.com两行分别演示预先批准和拒绝域名,应按需要选择。--allow-all-urls 关闭 URL 校验。
Shell URL 检测使用正则表达式,不能保证发现从文件、配置或环境变量读取的网址,也可能无法识别拼接或转义后的地址。HTTP 与 HTTPS 被视为不同协议,需要分别批准。
批准保存在哪里
工具和额外目录的持久批准位于 permissions-config.json,按 Git 仓库根或非仓库工作目录区分。永久 URL 批准则把域名加入 settings.json 的 allowedUrls,作用于所有会话,而不是单一项目。
这一区别解释了为什么在某个项目中永久允许的网址会影响其他项目。命令行 --allow-tool 和 --deny-tool 本身只适用于本次会话,不会自动保存成项目永久规则。
宽泛批准与沙箱
--allow-all / --yolo 同时启用 --allow-all-tools、--allow-all-paths、--allow-all-urls。交互会话也提供 /allow-all / /yolo。Business 或 Enterprise 管理员可以限制这些入口。
这些选项改变批准流程,不会凭空创建沙箱。需要系统层限制时,应另外配置本地沙箱,或把会话运行在云端沙箱中。工具的允许、拒绝和重置规则见权限与工具控制。