Skip to content

13. 插件权限矩阵

翻译说明: 本页是与 英文源规格 一一对应的机器辅助翻译。代码、协议字段和标识符保持原文;如翻译与英文源事实有歧义,以英文版本为准。

1. 目标

提供权限-能力-风险-默认策略参考表,供 UI 复制和验证重用。

2. 矩阵

许可风险允许的 API/功能默认政策注释
ui.panel打开插件面板安装时授予几乎所有 UI 插件都需要
ui.themecontributes.themes CSS 已在“设置”中加载并提供安装时授予CSS 由主机清理;它无法编写脚本
clipboard.read中等clipboard.readText首次使用时确认可能会读取敏感信息
clipboard.write中等clipboard.writeText首次使用时确认防止剪贴板污染
notifyui.notifyui.getNotificationPermissionui.requestNotificationPermissionui.showNativeNotification可以默认授予本机交付由操作系统控制;避免通知垃圾邮件滥用
fs.read.workspace中等fs.readText / fs.glob首次使用时确认仅工作区
fs.write.workspacefs.writeText每次或每次会话确认高风险
fs.delete.workspacefs.remove每次或每次会话确认非递归;工作区根目录受到保护
agent.tool.register注册代理工具安装时确认工具执行情况单独审核
agent.prompt.inject注入系统提示符;激活 contributes.skills默认拒绝/强确认容易导致行为劫持
net.fetchnet.fetch默认拒绝必须显示目标域策略(稍后)
shell.openExternal中等打开外部链接首次使用时确认防止网络钓鱼链接
mcp.server.local生成清单中声明的 transport: "stdio" MCP 服务器默认拒绝运行本地可执行文件;其工具到达代理
mcp.server.remote连接 transport: "http" MCP 服务器默认拒绝将工具参数发送到第三方端点
background.service中等启动 contributes.services 并保持插件进程常驻安装时确认受后退监督;在插件页面上可见
bus.publish中等bus.publish 声明的主题安装时确认其他插件可以对消息进行操作
bus.subscribe中等bus.subscribe 到声明的模式安装时确认可以观察另一个插件的消息

3. 权限依赖

  • 加载面板条目需要 ui.panel
  • 需要agent.tool.register来贡献agent工具
  • fs.write.workspace 存在时,建议同时声明 fs.read.workspace
  • 缺少权限的贡献未通过清单验证 (themesmcpServersservicesbus); skills 是例外,并且是 相反,在加载时跳过(参见 02-plugin-manifest-schema.md §7)

3A。 Plan 操作状态规则

每个 agentTools 贡献都会在 Plan 中被拒绝,无论此矩阵的值如何 风险或违约政策。 agent.tool.register 授权注册 Agent,在 Plan 中不可见。主机返回 PLUGIN_DISABLED_IN_PLAN 直接 Plan 调用并记录拒绝。仅插件工具符合资格 在同一个 Agent 被批准进入 Agent 模式后。

4. 权限显示副本

英文是主要副本。 zh-CN 列保存本地化的示例字符串。

许可英文副本zh-CN 示例
fs.read.workspace读取当前项目中的文件读取当前项目文件
fs.write.workspace修改当前项目中的文件修改当前项目文件
fs.delete.workspace删除当前项目中的文件删除当前项目文件
notify显示应用内和本机通知显示应用内和系统通知
agent.tool.register为AI Agent提供可执行工具向AI Agent提供可执行工具
agent.prompt.inject调整代理指令调整智能体指令
net.fetch访问网络访问网络
shell.openExternal打开外部链接打开外部链接
ui.theme提供一个主题提供主题
mcp.server.local运行本地 MCP 服务器运行本地 MCP 服务
mcp.server.remote到达远程 MCP 服务器连接远端 MCP 服务
background.service保持后台服务运行保持后台服务运行
bus.publish向其他插件发送消息向其他插件发送消息
bus.subscribe接收来自其他插件的消息接收其他插件的消息

5. 添加升级权限

如果升级时出现新权限:

  1. 计算差异 2.强制用户确认
  2. 如果没有确认,请取消升级或禁用新功能(建议取消升级)

6. 运行时检查伪代码

ts
assertPermission(pluginId, perm) {
 if (!granted(pluginId, perm)) throw ERROR_PERMISSION_DENIED
}

每个主机 API 入口点必须首先置位。

7. 验收

  1. 未经授权的API调用失败
  2. 权限副本在安装 UI 中可见 3.添加权限提示用户的升级

为本地优先开发而构建。