发现(hooks 修复 PR #281 的后续审计)
src/hook/settings.ts 的 HookCommand schema(~L131-198)接受若干字段,但执行器从不消费——配置合法却静默失效(与 #281 修复的 headers 丢弃同类问题):
| 字段 |
位置 |
现状 |
allowedEnvVars |
L147 |
全仓库零消费者 |
statusMessage |
L149 |
全仓库零消费者 |
once(hooks[] 内 per-command) |
L150 |
只消费 entry 级 _sessionEntry?.once(L2019/2094/2145);per-command once 从不读取,detectUnsupportedFields 也不报 |
timeout × type:"prompt" |
头部文档 L22 承诺 |
command/mcp/http/agent 均应用(L1008/1417/1454/1604),唯 promptHandler(L1507-1558)无 Effect.timeout/abortSignal |
已确认正常消费:headers(#281 修复)、timeout(4/5 型)、if、async/asyncRewake、options(仅 command 型)、__sourceDir、url/prompt 回退。shell 丢弃但 load 时有 warn(L961-977)。
修复选项(任选其一并统一)
- 落地消费:prompt 型补
Effect.timeout;per-command once 接入 entry 级同款逻辑
- 显式拒绝:
detectUnsupportedFields 对静默字段报 warning
- schema 收缩:从 HookCommand 移除无消费意图的字段
影响
配置者的合理预期被静默违背(尤其 prompt-timeout 有文档承诺)。无安全面,故不在本次止血发布内。
发现(hooks 修复 PR #281 的后续审计)
src/hook/settings.ts的HookCommandschema(~L131-198)接受若干字段,但执行器从不消费——配置合法却静默失效(与 #281 修复的headers丢弃同类问题):allowedEnvVarsstatusMessageonce(hooks[] 内 per-command)_sessionEntry?.once(L2019/2094/2145);per-command once 从不读取,detectUnsupportedFields也不报timeout×type:"prompt"promptHandler(L1507-1558)无Effect.timeout/abortSignal已确认正常消费:
headers(#281 修复)、timeout(4/5 型)、if、async/asyncRewake、options(仅 command 型)、__sourceDir、url/prompt 回退。shell丢弃但 load 时有 warn(L961-977)。修复选项(任选其一并统一)
Effect.timeout;per-command once 接入 entry 级同款逻辑detectUnsupportedFields对静默字段报 warning影响
配置者的合理预期被静默违背(尤其 prompt-timeout 有文档承诺)。无安全面,故不在本次止血发布内。