Skip to content

bug(hooks): permission.request 词表与远端会话身份不一致导致处理器漏执行 #37

Description

@heibaitouxinshu-cmyk

功能影响

显式启用权限 Hook 的会话可能完全不执行插件处理器:main 的前端词表缺少 permission.request;PR #34 补齐词表后,ACP 远端会话 ID 与本地 ID 不同时仍查找失败。可能漏掉插件预期的 deny/modify 决策。此报告不声称已证明真实工具越权或所有配置下的最终授权结果。

固定基线:main 3127ee4336b30c3f349fd7fe6cb2b69923c4ef3e;PR #34 39cad2925c59129d82aa217b6039a0b48d26a12d。2026-09-10重跑结果一致。

执行证据

直接执行真实 TypeScript 生产模块,只模拟 Tauri IPC、身份存储与 HookRuntime 边界。会话:id local-session、source profile:local-session、periId remote-acp-session,hooks显式含测试插件。

源码 Hook 请求ID类型 handler调用次数
main message.user.beforeSend 本地 1
main permission.request 本地 0
main permission.request ACP远端 0
PR #34 message.user.beforeSend 本地 1
PR #34 permission.request 本地 1
PR #34 permission.request ACP远端 0

main警告:Pylon hook bridge received unknown anchor: permission.request。PR远端ID用例无警告,返回 action: continue, executed: 0, skipped: 0

完整结果可运行脚本。准备包含上述两个提交的仓库(可 fetch pull/34/head),在仓库根目录用 Node22 的类型擦除支持运行该脚本;可用第一个参数指定仓库目录。脚本固定提交,并断言对照与失败行为。这是模块级复现,不是原生 ACP 端到端权限证明。

源码链条

修复与验收

补齐跨语言词表契约;在 owner/runtime 和连接代次明确的入口规范化为本地会话身份。不要做无 owner 的全局 periId 回退。覆盖两运行时重复远端 ID、重连旧请求、未 opt-in、deny/modify/continue、超时取消、原生 ACP 往返,并让无法映射的请求有可诊断状态。

#34的文本冲突可以整合,但本功能问题不随文本合并自动解决,建议作为其验收阻塞项。

Activity

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions