Parent: #487
Depends on: #490
目标
支持项目级 hooks 声明,但默认不执行;只有 trusted workspace 才允许执行 repo hooks。
范围(In Scope)
- repo hooks 路径:
<repo>/.neocode/hooks.yaml
- trust 存储(v1):
~/.neocode/trusted-workspaces.json
- 启动流程:
- 发现 repo hooks
- 检查 workspace trust
- 未信任:发 warning/event,不执行
- 已信任:合并到可执行 hooks 集合
- 事件扩展:标记 hook 来源
source=repo|user|internal
非目标(Out of Scope)
- 不引入 GUI 级信任管理页面
- 不支持 repo hooks 拥有更高能力等级
- 不支持 external hook kinds(command/http/...)
约束
- 默认 deny:未 trust 的 repo hooks 必须 0 执行。
- repo hooks 权限不高于 user hooks。
- trust 判断应绑定 workspace 路径(可扩展 hash 校验)。
- 信任状态变化必须可观测(事件/日志)。
任务清单
验收标准(AC)
- 未信任项目的 repo hooks 不执行。
- 已信任项目的 repo hooks 可执行。
- 执行事件里可区分
source=repo。
- repo hooks 无法越权访问敏感上下文。
测试要求
- trusted/untrusted 双场景
- hooks 合并顺序与冲突策略
- source 标记与事件覆盖
- trust 文件损坏/缺失容错分支
风险与回滚
- 风险:误信任导致安全风险。
- 缓解:默认不执行 + 明确提示 + 显式 trust gate。
- 回滚:禁用 repo hooks 发现,保留 internal/user 路径。
Parent: #487
Depends on: #490
目标
支持项目级 hooks 声明,但默认不执行;只有 trusted workspace 才允许执行 repo hooks。
范围(In Scope)
<repo>/.neocode/hooks.yaml~/.neocode/trusted-workspaces.jsonsource=repo|user|internal非目标(Out of Scope)
约束
任务清单
验收标准(AC)
source=repo。测试要求
风险与回滚