之所以能在手机上批准 Claude Code 的权限请求,是因为 Claude Code 在显示权限提示前会先运行 PermissionRequest hook,而这个 hook 可以直接返回决定。只要有工具把请求发到你的手机、等你点按,再返回 allow 或 deny,你就能随时随地作答。Claude Code Notifier 就是这样做的:一个小巧的命令行工具 ccn,支持 Mac、Windows 和 Linux,再配一个 iPhone 或 Android app。
01为什么权限提示会卡住你的工作
在默认权限模式下,Claude Code 在运行大多数 shell 命令、编辑文件或抓取网页前都会询问。提示会一直停在 terminal 里,直到有人回应。如果你去泡了杯咖啡,整个任务就卡在这个问题上,回来才发现。
有三种办法解决:
- 减少批准次数。为信任的命令添加 allow 规则,或者换用更宽松的模式。这适合日常工作,详见 Claude Code 权限模式详解。
- 收到通知,再走回去。通知 hook 会告诉你有 prompt 在等待,但你还是得回到键盘前。
- 远程回复。
PermissionRequesthook 会把问题发到你的手机上,再把你的回复交回给 Claude Code。
本指南讲的就是第三种方式。
02PermissionRequest hook 如何替你作答
当某个工具调用需要权限决定时,Claude Code 会触发 PermissionRequest。hook 会从标准输入收到 JSON,其中包含 tool_name 和 tool_input(例如 Bash 命令),以及可选的 permission_suggestions 列表,里面是 Claude Code 建议保存的规则。
hook 通过输出类似下面的 JSON 来作答:
{
"hookSpecificOutput": {
"hookEventName": "PermissionRequest",
"decision": {
"behavior": "allow"
}
}
}
behavior 的值为 allow 或 deny。拒绝时可以加上 message 告诉 Claude 原因,也可以加上 interrupt: true 让 Claude 直接停下。批准时,可以用 updatedPermissions 应用权限规则,之后就不会再问。如果 hook 什么都不返回,Claude Code 会照常显示提示。
所以远程审批 hook 要做三件事:把请求发到你能看到的地方,等待回复,并在 hook 超时前输出正确的 JSON。完整的字段列表和可用脚本见通过 hook 回复权限请求。
注册 hook
hook 配置在 ~/.claude/settings.json(对所有项目生效)或 .claude/settings.json(仅对单个项目生效)中:
{
"hooks": {
"PermissionRequest": [
{
"matcher": "*",
"hooks": [
{ "type": "command", "command": "/path/to/your-approval-script" }
]
}
]
}
}
matcher 按工具名过滤,所以设为 "Bash" 就只会把 shell 命令发到手机。命令类 hook 默认超时为 600 秒,这也是 hook 等你回复的最长时间。
03自己动手实现
自己做一个也可行。常见做法是把请求发到 ntfy 之类的 push 服务,附带两个操作按钮,回调到一个小型 Web 端点,然后让 hook 轮询该端点,直到收到回复或计时结束。发送部分可参考用 ntfy 实现 Claude Code push 通知。
真正费时间的是各种边界情况:
- 你就在键盘前。如果 hook 总是等手机回复,你在等待期间就没法在 terminal 里作答。好的 hook 会察觉你在场并自动让路。
- 超时。hook 必须在 Claude Code 超时之前放弃,并干净地回退。
- 安全。任何能访问你回调端点的人都能批准在你电脑上执行的命令,所以必须加认证。
- 多个会话。每个请求都要发到正确的会话,并回到该会话。
如果你喜欢折腾,这是个不错的周末项目。如果想今天就用上,现成的工具能省不少事。
04使用 Claude Code Notifier
Claude Code Notifier 是由 TouchTap Ltd 开发的独立工具,并非 Anthropic 出品,也与其无关联。它由两部分组成:ccn,一个适用于 Mac、Windows 和 Linux 的免费命令行工具;以及 iPhone 和 Android 手机 App。
1. 安装 ccn
在 Mac 和 Linux 上:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
在 Windows 上,使用 PowerShell(Windows 支持目前为 beta):
irm https://claudecodenotifier.com/install.ps1 | iex
Homebrew、npm 和插件的安装方式见 ccn 页面。安装后会在 ~/.claude/settings.json 中添加七个 hook 条目,每个都运行 ccn hook,并保留原文件的备份。其中之一就是 PermissionRequest hook。Claude Code 调用 ccn 时,它只运行几毫秒就退出,不会有任何后台进程,并且能在任意 terminal 中使用,包括 IDE 内置 terminal。
2. 配对手机
运行 ccn pair 并扫描二维码,或输入 App 中的 6 位数字码。各操作系统的详细步骤见将手机连接到 Claude Code。
3. 直接在通知里作答
当 Claude 需要权限而你不在电脑前时,手机会显示它想做什么,比如要运行的命令。你可以:
- 允许一次,仅限本次调用。
- 本会话内允许,该会话中同类请求不再询问。
- 拒绝,Claude 会知道请求被拒并继续工作。
hook 返回你的回复,Claude 继续执行。
你在电脑前时会怎样
ccn 会检测你是否在场。如果你在最近 30 秒内有键盘输入,就不会等待:terminal 照常询问,手机最多收到一条提醒。如果你不在,terminal 会等待手机的回复,最长等到你设定的上限,而一旦你碰键盘就立即停止等待。所以你总能在离你更近的地方作答。
这个上限可以设置:
ccn config set hold_ceiling_seconds 900
取值范围为 30 到 3600 秒,默认 600。presence_threshold_seconds 用来修改那个 30 秒的窗口。大多数设置也可以在手机 App 中按电脑分别修改。
验证是否生效
ccn doctor # checks hooks, credentials, server connection and presence detection
ccn test # sends a test notification
手机 App 可免费下载,使用需要订阅或一次性买断,详见价格。即使没有手机,Claude 需要权限时 ccn 也会在电脑上免费显示桌面通知。
05顺便减少需要审批的事项
远程审批最好配合合理的 allow 规则一起用。如果你一天要批准二十次 npm test,就在 permissions.allow 里加一条 Bash(npm test *) 这样的规则,把手机留给真正值得看一眼的请求。在小屏幕上批准之前,先读一遍命令。在手机上批准 Claude Code 的操作安全吗?介绍了需要检查哪些内容。
06常见问题
不装额外工具,Claude Code 能在手机上请求权限吗?
Anthropic 的 Remote Control 功能在支持的套餐上可以让你通过 Claude 应用或 claude.ai/code 继续本地会话,包括回答 prompt。Claude Code Notifier 这类基于 hook 的工具思路不同:它不需要开启 Remote Control,只推送需要你处理的时刻。在手机上使用 Claude Code对两者做了对比。
如果我没在手机上回应会怎样?
使用 ccn 时,hook 最多等待 hold_ceiling_seconds 设置的时长。如果你回来先碰了键盘,它就停止等待,改由你在 terminal 里回答 prompt。
“本次会话允许”会修改我的 settings.json 吗?
不会。它只对当前会话生效。要永久允许某项操作,请在 /permissions 或设置文件里添加 allow 规则。
支持 Windows 和 Linux 吗?
支持。ccn 可在 Mac、Windows 和 Linux 上运行,手机应用三者都能配合使用。Windows 支持目前处于 beta 阶段。
可以在多台电脑上使用吗?
可以。一部手机可以和多台电脑配对,一台电脑也可以配对多部手机。用 ccn devices 可以列出或撤销已配对的手机。