Skip to content

[P3] Repo Hooks 发现与 Workspace Trust Gate #491

@Cai-Tang-www

Description

@Cai-Tang-www

Parent: #487
Depends on: #490

目标

支持项目级 hooks 声明,但默认不执行;只有 trusted workspace 才允许执行 repo hooks。

范围(In Scope)

  1. repo hooks 路径:<repo>/.neocode/hooks.yaml
  2. trust 存储(v1):~/.neocode/trusted-workspaces.json
  3. 启动流程:
    • 发现 repo hooks
    • 检查 workspace trust
    • 未信任:发 warning/event,不执行
    • 已信任:合并到可执行 hooks 集合
  4. 事件扩展:标记 hook 来源 source=repo|user|internal

非目标(Out of Scope)

  • 不引入 GUI 级信任管理页面
  • 不支持 repo hooks 拥有更高能力等级
  • 不支持 external hook kinds(command/http/...)

约束

  1. 默认 deny:未 trust 的 repo hooks 必须 0 执行。
  2. repo hooks 权限不高于 user hooks。
  3. trust 判断应绑定 workspace 路径(可扩展 hash 校验)。
  4. 信任状态变化必须可观测(事件/日志)。

任务清单

  • 实现 repo hooks 发现逻辑
  • 实现 trusted workspace 存储与读取
  • 合并执行计划(internal > user > repo 的顺序规则需明确)
  • 未信任场景 warning/event
  • 已信任场景执行链路与测试

验收标准(AC)

  1. 未信任项目的 repo hooks 不执行。
  2. 已信任项目的 repo hooks 可执行。
  3. 执行事件里可区分 source=repo
  4. repo hooks 无法越权访问敏感上下文。

测试要求

  • trusted/untrusted 双场景
  • hooks 合并顺序与冲突策略
  • source 标记与事件覆盖
  • trust 文件损坏/缺失容错分支

风险与回滚

  • 风险:误信任导致安全风险。
    • 缓解:默认不执行 + 明确提示 + 显式 trust gate。
  • 回滚:禁用 repo hooks 发现,保留 internal/user 路径。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions