安全边界
August 14, 2026 · View on GitHub
凭据
- 配置只保存 credential reference,不保存远程 Provider token。
- 每个远程操作调用
ctx.credentials.resolve();不跨操作缓存 secret。Jira 的邮箱与 API token 是两个独立引用。 - Configuration 只使用
describe()的configured/source/writable,不接收 credential value;Local 显示“不需要凭据”。 - RPC snapshot、事件、日志和浏览器 fixture 均不包含真实 token。
- 非 loopback Linear、GitHub、Jira、Asana 与 GitLab endpoint 必须使用 HTTPS。
- REST Agent tool 拒绝 origin、查询、fragment、反斜杠以及原始或多重百分号编码的点段,避免 URL 规范化越出已验证的 Provider 路径前缀。
工作区
- 相对 workspace root 只相对于当前项目
WORKFLOW.md所在目录解析;~仅作为完整首段展开。 - issue leaf 只允许 ASCII 字母、数字、点、下划线和横线;发生净化时附加 SHA-256 前缀以抵抗碰撞。
- root 与 issue 目录在使用和删除前检查符号链接。
- containment 要求目标是 root 的严格后代;root 本身和任何
..逃逸都被拒绝。 - terminal 清理在 hook 后再次检查实际路径,避免 hook 替换目标。
命令与权限
- Hook 是用户在受信任
WORKFLOW.md中写入的本机命令,具备 Harness 进程权限;它不是沙箱。仓库 clone/build 脚本必须由部署者审核。 - Agent permission preset 是插件必填配置,不静默选择或提升权限。
- Dashboard 的 Stop 是 Agent cancel;Pause 只停止派发新任务,已经运行的 Agent 不被自动中断。
- Provider Agent tool 可以写入远程任务,具体操作同时受路径约束、prompt、permission policy 与 token 权限约束;Board 本身不向远程 Provider 发 mutation。
- Local
+、编辑与删除只调用 trusted-host RPC。编辑提交携带打开任务时的更新时间,Host 会拒绝覆盖 Agent 或其他编辑器产生的较新版本。Local Agent tool 不开放删除;Dashboard 删除任务记录时保留已有 workspace。
Local 任务文件
- 本地任务保存在 Host 配置的单一 JSON 文件中,不使用浏览器
localStorage。 - 同一插件实例内 mutation 串行执行;写入使用同目录独占临时文件、flush 和原子 rename。
- 已存在的目标必须是普通文件,符号链接或非文件目标会被拒绝。
- JSON 损坏或 schema 版本不受支持时 fail closed,不会用空 store 覆盖原文件。
Project Catalog
- Catalog 通过 Harness
storage-domain写入 profile 选择的持久化 backend,不覆盖共享路由,也不写入浏览器存储。 - 手动注册只接受绝对目录;Discovery Root 也必须是绝对真实目录,深度限制为 1–8。
- 扫描不跟随 symlink/junction,跳过依赖与构建目录,并对每个真实路径重新执行 root containment 检查。
- 扫描结果只生成十分钟有效、单次使用的进程内确认令牌;移除 root 会使其全部候选立即失效。
- Project 和 Repository 分表保存,Git 检查使用参数化
execFile,不经过 shell。 - Project 的
autonomousClaims固定为false;注册项目不等于授权 Agent 自动领取任务。
网络与浏览器
- 客户端使用 Harness connection 的 trusted-host RPC,不自带对外 HTTP server。
- 本地 Vite fixture 只用于开发验证,不包含真实连接或凭据。
- issue URL 作为 provider-native 外链打开,并使用
noopener/noreferrer语义。
已知边界
- 当前 claim 仅在单个插件进程内互斥,不提供多主机分布式锁。
- Hook 和 Agent 对 workspace 内资源的影响取决于部署者选择的 permission preset。
- 远程 raw API tool 是能力较大的 Provider seam;生产部署应使用最小权限 token,并审核 WORKFLOW prompt。
- 当前未实现 webhook、审计数据库或跨重启 runtime 恢复;工作区与 Local 任务持久,但 running/retry 内存状态不持久。