Claude Code等待授权怎么提醒?Mac通知Hook、matcher与无通知排查
给Claude Code添加仅匹配授权等待的Notification Hook,合并现有JSON…
文章目录
Claude Code停在授权提示时,你切到别的窗口可能一直没注意。Notification Hook可以在等待输入或权限时执行通知命令。本文针对Mac终端,用一个静态文案的系统通知演示配置、检查和排障;它提醒你回来查看,不替你批准动作,也不把收到提醒等同于任务已经完成。
第一步:确认事件与配置范围
官方将Hook定义为生命周期事件触发的命令,不依赖模型每次记得执行。Notification用于输入或权限等通知场景,Stop则是不同事件。本教程只匹配permission_prompt,不使用空matcher接收所有类型,避免把认证完成、空闲提醒等混在一起。
准备修改用户层~/.claude/settings.json前先备份并阅读已有内容。若已有hooks对象,把Notification作为其中一个事件合并,不覆盖其他事件、权限或插件设置。团队共享设置要遵循项目管理规则,不将个人通知命令随手提交给所有平台使用。
第二步:加入一条Mac通知配置
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Code需要你查看授权\" with title \"Claude Code\"'"
}
]
}
]
}
}
这是独立配置示例,已有文件应合并相应字段,不能整份替换。JSON不支持注释或末尾多余逗号,保存前先检查结构。命令只包含固定文字,不把任务内容、文件名或敏感参数拼进shell,减少通知泄露信息或引号出错。
第三步:确认Hook已加载
python3 -m json.tool ~/.claude/settings.json
此命令只检查JSON语法,不能证明Hook已被当前会话加载。进入Claude Code输入/hooks,在Notification下确认能看到预期matcher和命令。官方说明文件变化通常会自动读取,几秒后仍未出现时可重启会话强制重新加载,再检查文件位置与有效配置。
本例只做静态语法说明,没有替读者修改配置或实际触发通知。按自己环境测试时,先使用一个可控制的练习会话,保存其他工作,不通过删除文件或修改正式系统来制造授权请求。
第四步:在Manual模式测试等待提醒
按官方引导切到Manual模式,请Claude执行一项你愿意审阅的低影响练习动作,在授权提示出现后切离终端。当前文档说明终端permission_prompt通常在等待约六秒后触发,不是每条回复立刻弹出。不同宿主和版本的触发时机可能不同,应以实际终端行为核对。
收到通知后回到原窗口,确认仍由你检查具体动作再决定允许或拒绝。通知只是通道,不提供动作详情或审批结果。若使用idle_prompt,则含义是回答结束一段时间后仍未输入,与等待授权不同,不能把两者混称为“任务完成通知”。
第五步:排查Mac通知权限并恢复
官方指出osascript通过系统Script Editor发送通知,未获通知权限时可能静默失败。可先在终端单独执行下面的静态测试,再到系统设置的Notifications中查Script Editor并开启Allow Notifications,随后再次测试。不要只修改Claude的通知开关而忽略实际发送通知的应用。
osascript -e 'display notification "通知链路练习" with title "Claude Code"'
命令能通知但Hook不触发,查matcher、/hooks列表、模式和是否真的出现等待授权;Hook未显示,查JSON和文件位置。先分开验证系统通知与事件触发,别不断复制多条重复Hook导致一次等待弹出多次提醒。
不再需要时只移除本次新增Hook,保留其他设置,检查/hooks确认状态;必要时用备份对照恢复,不能覆盖此后新增的无关配置。完成标准是事件正确、提醒可达、原授权仍需审阅,并且有清楚的停用路径。
osascript是本例的Mac系统命令,不适用于普通Linux或Windows终端。其他系统应查官方对应平台示例,先单独验证通知链路,再接入同一类事件;不要把命令找不到误判为matcher设置失效。
官方资料
资料核对日期:2026年11月5日。
本文地址:https://www.163264.com/19255

