Skip to content

[Grok/dsh 32] Hooks 生命周期与阻断语义 #164

Closed

Description

@Blackman99

Parent

#132

Ticket: 32

Status: ready-for-agent

User Stories: 25, 38(见父规格)

What to build

用户原有兼容 Hook 在对应 dsh 生命周期运行,按公开退出码与输入输出契约允许、阻断或反馈操作。

Acceptance criteria

  • 覆盖固定版本公开的 Hook 事件、输入字段、退出语义和来源优先级,实际接入对应执行阶段。
  • 阻断时真实操作不执行;允许 Hook 不能跳过后续权限检查,自动审批不能绕过阻断。
  • 超时、取消、异常输出、重复通知和未信任来源安全终止且不挂起会话。
  • 用临时可执行脚本从 Prompt 到工具结果验证顺序、副作用和界面反馈,不只单测解析器。

Blocked by

Delivery contract

用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。

Activity

  1. Blackman99 commented on Sep 24, 2026

    @Blackman99
    OwnerAuthor

    Ticket 32 / #164 已合入 rewrite/grok-dsh-20260920 的 ec9d6ae。

    已发布的 dsh 不运行 Grok 命令 Hook,所以由本客户端在 SessionStart、UserPromptSubmit、PreToolUse、PostToolUse、Stop、SessionEnd 运行。阻断会停掉真实操作:--always-approve 下仍然显示 Denied by hook,bash 不执行。允许不会跳过随后的权限检查。退出码 7 显示为失败并忽略,工具继续。未信任项目的 Hook 不运行。超时、取消和异常输出会结束,不挂起会话。

    HTTP Hook、updatedInput 改写输入,以及完整的 Stop 续写循环没有做。updatedInput 改为阻断。子代理、压缩和通知事件只解析,不接入。文档只声称上面六个事件。

    验证:合并后的 scripts/rust-hook-pty-test.py 通过,阻断为 true。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions