子账号(role=user)只能使用 Bot 模式。管理员在「设置 → 用户与权限」创建账号时分配当前服务的基础 Profile,也可以随后修改分配。子账号只能基于这些 Profile 创建自己的 Bot Agent;不能读取原生 Profile、聊天和历史,不能使用原生 Hermes Bot、看板、节点配对或全局设置。
assignedProfiles 保存在本地账号记录中。旧账号没有该字段时视为未分配,不自动授权 default 或全部 Profile。/Users/...、/attachments/...)均拒绝。自己的附件使用 owner 隔离的 /api/app/files/:id/...。/conversations。iOS 按当前服务身份强制 Bot 模式;服务器仍是最终权限边界,旧客户端也无法绕过。本实现是 Web/iOS 账号与服务 API 的授权隔离,不创建 Hermes 工具执行的操作系统沙箱。分配的 Profile 仍按 Hermes 自身的工具权限运行,工具可访问的磁盘和外部服务范围需要在 Hermes 执行环境中约束。
tests/server/subaccountPermissions.test.ts 使用真实账号、Cookie 和 CSRF,覆盖默认拒绝、Profile/节点伪造、REST/实时/媒体/密钥入口、跨 owner 资源和撤权。tests/e2e/workspace-chat.spec.ts 的 subaccount 用例验证管理员分配、首次改密、限制后的创建列表、隐藏模式菜单和手输旧路由重定向。WorkspaceChatTests 和 AuthAndRESTTests 覆盖服务权限解析、能力撤回和保留的原生模式设置被纠正。