# Claude Code 在等你授权?怎么第一时间知道

> Claude Code 一要授权就停下来干等。教你用 Notification hook 发系统通知,以及多开时怎么一屏看清哪个 Claude 在跑、哪个在等你。

Published: 2026-10-13 · DobbyLab · https://gtree.dobbylab.com/zh/blog/claude-code-waiting-for-approval-notifications/

Claude Code 只要执行某个工具需要你授权,就会停下来等,你不点它就不动。想第一时间知道,就接上它的 **`Notification` hook**:授权提示出现后几秒你没理,或者它答完一轮后一分钟左右你没回,都会触发。只开一个 Claude 时,用这个 hook 发一条系统通知就够了;同时开好几个,你还得知道**是哪一个**在等 —— gtree 的侧栏、「待处理」和 Dock 角标就是干这个的。

![gtree 的「待处理」:「2 件事在等你」(auth 要用 Bash 等你授权,webhooks 等你回复),「也许要留意」里两条同改,「正在干活」三条;侧栏里 auth 是铃铛、dark-mode 是闲着的机器人、retry 和 search 在转圈](/media/app/inbox-zh-light.webp "「待处理」把所有项目里在等你的事排在一页上,点一行直接进到那个会话")

## Claude Code 为什么会停下来等?

凡是你没有提前放行的操作,Claude Code 都会先问:跑一条 shell 命令、改允许范围以外的文件、抓一个网页……授权提示出现在这个会话的终端里,你不选,会话就卡在那儿。

这个默认设置是对的。问题出在你同时在干别的事的时候:本来十分钟能做完的任务,四十分钟后回来一看,还停在一个授权提示上(「Do you want to proceed?」)—— 因为那个终端被别的窗口挡住了。

如果你在[用 git worktree 多开 Claude Code](/zh/blog/run-multiple-claude-code-git-worktree/),问题就成倍放大:五个标签,哪个都可能在等你。

## Claude Code 要授权时,怎么让它通知我?

先看 Claude Code 自带的:在 Ghostty、Kitty、iTerm2 里,它做完任务或停在授权提示、而你像是离开了终端时,会自己发桌面通知(iTerm2 要在偏好设置里打开 Notification Center Alerts)。别的终端可以在 `~/.claude/settings.json` 里设 `"preferredNotifChannel": "terminal_bell"` 改成响铃,有的终端会把响铃变成 Dock 图标跳动或角标。

想自己控制通知内容,就用 **hook**:Claude Code 在特定事件发生时执行的 shell 命令。要用的是 `Notification` 事件。把下面这段加进 `~/.claude/settings.json`(已有 `hooks` 的话合并进去):

```json
{
  "hooks": {
    "Notification": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Claude Code 在等你\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}
```

重启各个 Claude Code 会话,之后只要有一个在等你,macOS 右上角就会弹通知。它在两种时候触发:

- **要授权:** 授权提示出现后,大约 6 秒内你没有操作;
- **答完在等你:** Claude 回复完,大约 60 秒内你没有输入。

hook 还会从 stdin 收到一段 JSON,里面有说明原因的消息和会话的工作目录,写个小脚本就能把项目名放进通知里。想一答完就提醒、不等那一分钟,可以再挂一个 `Stop` hook(每次 Claude 回复完成都会触发。注意别让脚本以退出码 2 结束,那表示「别停」,Claude 会接着干)。

### 自己配 hook 的局限

hook 能用,但真依赖它之后会碰到几个问题:

- **`osascript` 发的通知挂在「脚本编辑器」名下。** 系统设置里关掉了脚本编辑器的通知(这很常见),命令照样返回成功,却什么都不显示。
- **点通知不会带你过去。** 还是得自己找到那个终端标签。
- **它只是一瞬间的提醒,不是状态。** 横幅错过了,就没有地方能看「还有谁在等」。
- **没有全局视图。** 看不出哪些会话在跑、哪些空闲、哪些已经半小时没动静了。

## gtree 怎么让你一眼看出哪个 agent 在等你

[gtree](https://gtree.dobbylab.com/zh/) 把同样的事件变成一眼就能看懂的界面。先连一次 Claude Code:在欢迎引导的最后一页,或者在设置(⌘,)里。没连上之前,开始页顶部会有一条「还没连上 Claude Code」的提示,带「连上 Claude Code」按钮。gtree 往 `~/.claude/settings.json` 里加上自己的 hook 条目,文件里别的内容一概不动;从此每个会话的状态它都知道,包括你在自己终端里开的。在设置里把 Codex 也连上,Codex 的会话一样会上报:在干活、在等你授权或回答问题。

### 侧栏:每个 worktree 一个标记

侧栏每个 worktree 的行尾只放一个状态标记,看形状,不用读字:

- **紫色转圈**:它的 agent 在思考或执行工具;
- **红色铃铛一闪一闪**:在等你;
- **淡紫色机器人**:会话开着,但闲着;
- **淡色终端图标**:只开了终端,里面没跑 agent。

悬停在图标上能看到它在做什么、在等什么,比如「等你回应」。收起的项目里有会话在等你,项目名后面会挂一个红点。

### 「待处理」:所有要你处理的事,一张列表

**「待处理」**(⌘1)只回答一个问题:*现在有没有东西在等我?* 最上面是「N 件事在等你」,一事一行。点一行直接进到那个会话,也可以用 ↑↓ 和 ↩。在 gtree 里开的会话会切到它的终端标签;在别的终端应用里开的,gtree 没法替你切窗口,就打开这段对话的只读回放。

下面的**「也许要留意」**收的是还没卡住、但可能要你看一眼的事:

- 一个会话还说自己在干活,却 10 分钟以上没有任何动静;
- 两个 worktree 改了同一批文件,两边都还没提交;
- 一个 agent 等另一个 agent 回答它的问题,等得太久了;
- 一个 agent 给另一个留的话,10 分钟了还没送到;
- 你请教另一个 agent 的问题有了回答,可以就地展开看。

每条都能点「知道了」(或按 ⌫)收起,情况变了会再出现。再往下是**「正在干活」**,列出忙着的会话。什么都不在等你时,这一页就显示**「一切正常」**。

「待处理」的数字统计的是你**所有**项目,不只是当前打开的那个。同一个数字也会显示在 gtree 的 **Dock 图标**上,窗口关着也照样更新。

### 点一下就能跳过去的系统通知

会话一开始等你,gtree 就以自己的名义发一条 macOS 通知,不依赖「脚本编辑器」的通知设置。点通知直接跳到那个 worktree 的会话(在别的终端里开的会话,就跳到它的只读回放)。不必打扰你的时候,gtree 也会保持安静:

- 你在 gtree 里正看着那个会话,就不发通知;
- 同一个 worktree 10 秒内不重复通知,所以一连串授权提示只算一条。

gtree 在欢迎引导的最后一页请求通知权限,不会在你干活时突然弹出来。设置里能确认通知已开启,点「发条测试通知」试一下。

<!-- TODO 截图:0.3.14 设置 › 通知(已开启 + 发条测试通知,中文界面)。旧图 settings-general-notifications-zh-light.webp 拍于 0.3.8,核对 0.3.14 布局一致后可直接复用 -->

### 「做完了」怎么知道?

agent 答完一轮,转圈就停了。如果你一直没回,Claude Code 大约 60 秒后会发出空闲通知,gtree 把它当成一次普通的「在等你」:铃铛、「待处理」里一条、系统通知。所以任务做完一分钟左右你就会知道。这种「答完了等你回复」的铃铛,切到那个会话的终端标签就会消失,不用非得打字。(Codex 不发空闲事件,所以它的会话只在要授权或问你问题时才响铃。)

### 不在 gtree 里开的会话

在 iTerm 或别的终端里启动的会话,通过同样的 hook 上报,一样会出现在侧栏和「待处理」里。状态栏会告诉你它们开在哪,比如「iTerm 里开着 1 个 AI」。

## 自己配 hook vs gtree

| | `Notification` hook + `osascript` | gtree |
|---|---|---|
| agent 要授权时提醒 | 能 | 能 |
| 显示是哪个项目、哪个 worktree | 自己写脚本才行 | 能 |
| 点通知直达那个会话 | 不能 | 能 |
| 还在等你的事有个清单 | 没有 | 「待处理」 |
| Dock 图标上的数字 | 没有 | 有,覆盖所有项目 |
| 你正看着时不打扰 | 做不到 | 能 |
| 每个会话在跑 / 闲着 | 看不到 | 侧栏图标和「待处理」 |

## 常见问题

### Claude Code 要授权时触发的是哪个事件?

`Notification` hook。授权提示出现后约 6 秒你没操作、或者 Claude 回复完约 60 秒你没输入时触发,payload 里带一段说明原因的消息。想在授权对话框一出现就收到,用 `PermissionRequest` hook。

### Codex 也能这样吗?

能。在设置里连上 Codex,它的会话一样有转圈;要授权或问你问题时一样响铃。Codex 不发空闲事件,所以没有「答完了等你回复」那种铃铛。

### gtree 会拖慢 Claude Code 吗?

不会。gtree 的 hook 每次只要几毫秒,从不卡住对话;就算 gtree 那边出了问题,也只是安静地跳过。

### 能不让 gtree 改我的 Claude Code 设置吗?

可以。设置里能看到 gtree 加了哪几条 hook、各管什么,可以单独关掉某一条,也可以整个断开 Claude Code(Codex 也能在那里断开)。gtree 只增删自己的条目。

### 一定要在 gtree 里跑 agent 才行吗?

不用。连上 Claude Code 之后,任何终端里的会话都会上报状态。在 gtree 内嵌终端里跑多一个好处:还没触发任何 hook 时,gtree 也能从终端标题看出 Claude 在不在干活。

gtree 本地功能免费、不用注册;gtree 不上传你的代码。[下载 gtree](https://gtree.dobbylab.com/zh/),连上 Claude Code,剩下的交给侧栏里的铃铛。

*本文已按 gtree 0.3.14 更新(2026 年 10 月)。*
