Skip to content
FunCoding

Search

Search docs, Skills and MCP

托管权限与域名边界

编写 deny、ask、allow,理解多来源交集、强制人工批准和 Shell 写入识别。

This page has not been translated into English yet. The original Chinese version is shown below.

托管权限独立于个人批准。管理员可以明确禁止某些操作、强制每次询问,或在规定范围内自动允许;匹配规则与普通命令行工具模式的写法不同。

示例

{
  "permissions": {
    "deny": ["Read(~/.ssh/**)", "Edit(//etc/**)"],
    "ask": ["Shell(git push *)"],
    "allow": ["Read(/src/**)"]
  }
}

这是按官方选择器组织的示例,需要按团队实际路径调整。Read 中 / 表示工作区根,// 表示文件系统根,~/ 表示家目录,./ 表示当前工作目录。

匹配家族

选择器范围
Shell(...) / Bash(...)Shell 命令;Bash 是兼容别名
PowerShell(...)同类命令规则,忽略命令大小写
Read(...)文件读取与查看,支持 glob
Edit(...) / Write(...)文件写入与编辑,Write 是别名
Domain(...)网络 origin,裸 host 默认为 HTTPS

Shell 的 命令 * 匹配前缀,否则匹配精确文本。Domain 的 host 忽略大小写,*.example.com 包含根域及子域。

合并与默认行为

优先级为 deny > ask > allow。任一托管来源的 deny 都阻止;deny 和 ask 跨来源取并集。allow 跨声明它的来源取交集,每个来源都必须允许,没有声明 allow 的来源不增加该项限制。

出现任一管理规则后,未匹配的受支持操作默认 ask。托管 ask 要求每次新的一次性人工批准,不能被 allow-all、自动批准、Hook 或以前保存的批准满足。

Shell 写文件的限制

Edit / Write 不只覆盖内置编辑工具,还识别一组明确的 Shell 写入:Bash、PowerShell 输出重定向,以及常见 sed -i / --in-place / BSD 原地编辑形式。能推断目标路径时,路径 deny 或 ask 仍生效,即使 Shell(*) 较宽泛地允许命令。

路径来自变量等无法预先确定的情况,不套用这些路径规则,转由普通 Shell 规则判断。它不是对任意脚本写入的操作系统级跟踪,系统隔离需另配沙箱。

禁止全部允许

permissions.disableBypassPermissionsMode 设为 disable 时,所有 allow-all 相关启动选项与交互入口被抑制。allow-auto-only 禁止完整放开,但允许 assisted;未知值会警告并按 disable 执行。

账号服务器策略在切换到不受该限制账号时可能清除;设备 MDM 限制不会随账号切换消失。用户本地设置也有自己的持久作用域,应区分来源。

limitTo 域名边界

permissions.limitTo 限定允许到达的域名范围,越界直接拒绝,用户批准或 allow-all 不能拓宽。空数组拒绝所有域名;无效列表或条目按空列表执行并报告错误。多个托管来源取交集,deny 继续优先。

CLI 参考的示例数组使用裸域名,但相邻正文又说仅支持 Domain(...) 条目,存在格式口径差异。因此这里不提供可直接部署的 limitTo JSON 模板,具体格式以当前客户端校验和官方更新为准。该边界本身不限制 shell/read/write,Shell 中能识别的网址会按域名请求检查。