这套配置我自己用了很久了,久到记不清是哪一版 Claude Code 开始上的——反正现在每台新机器装完 Claude Code,第一件事就是把这份 settings.json 抄进去,不然根本没法干活。
用 Claude Code 跑长任务的人都体验过两件痛苦事:
- 它每调一次工具就弹"允许吗?",重构跑完一轮,鼠标点出腱鞘炎。
- 长任务后台跑半小时,你不知道它跑完了没、卡住没、是不是又在等你回个 yes。
两个问题各有一个一行配置就能解决的方案:dontAsk 模式和 Hook 推送(我用 Bark,你也可以换别的,下面会说)。配在一起,Claude Code 就从"互动式编辑器"变成了"半自动施工队"——你下完单去干别的,干完了它自己叫你回来验收。
这篇讲清楚两件事:怎么配,以及配之前你得想清楚的红线在哪。
一、dontAsk:把"允许吗"交给配置预先回答
默认行为为什么烦人
Claude Code 默认每调一次 Read / Edit / Write / Bash 都会弹一次确认。设计初衷是好的——别让 AI 偷偷改你硬盘。但实际跑起来:
- 一次重构平均 80~150 次工具调用,全弹窗
- 你点同意点到一半被电话打断,回来 Claude 在等你,思路也断了
- 你为了快,闭眼狂点"全部允许"——这反而把"思考是否安全"的环节彻底跳过了
更好的方式不是"全开"或"全弹",而是白名单 + 黑名单 + 灰区默认放行:
| 命中规则 | 行为 |
|---|---|
permissions.allow 命中 | 直接放行 |
permissions.deny 命中 | 直接拒绝(红线,比 allow 优先) |
都没命中 + defaultMode: "dontAsk" | 也直接放行,不弹窗 |
| 都没命中 + 默认模式 | 弹窗问你 |
红线锁死高危操作,剩下的灰色地带全部预先放行。Claude 在白名单里跑得飞起,越界一步直接被 deny 挡回来。
配置文件位置
C:\Users\<你的用户名>\.claude\settings.json
不存在就新建。已有就合并字段进去——别整段覆盖,会洗掉你已有的 enabledPlugins、model 这些。
完整配置
| |
字段说明:
| 字段 | 作用 |
|---|---|
permissions.allow | 不弹窗直接放行的工具/匹配模式 |
permissions.deny | 红线:SSH 密钥、系统目录、危险 git 命令、全局安装等 |
defaultMode: "dontAsk" | 未命中 allow/deny 的也不弹窗(核心开关) |
skipAutoPermissionPrompt | 跳过启动时的"自动模式"确认弹窗 |
skipDangerousModePermissionPrompt | 跳过"危险模式"确认弹窗 |
<你的用户名> 换成你 Windows 用户名(看资源管理器 C:\Users\ 下哪个文件夹是你的)。
deny 这几条为什么必须留
.ssh/**:SSH 私钥被读走 = 你的 GitHub / 服务器全裸。这条比啥都重要。C:/Windows/**、C:/Program Files/****:系统目录写坏了直接重装系统。Claude 不会主动写这里,但 deny 一条挂着安心。git reset/clean/reflog/gc:这几条一旦命中就是"work 没了找不回来"。要回滚自己手动来。python:*/pip:*:强制走uv,跟我全局规则一致——不污染系统 Python。npm install -g:*:全局污染源头,要装也是 npx 临时跑。
适合谁
- ✅ 在 git 项目里干活、每天 commit 的人
- ✅ 受得了 Claude 偶尔多读几个文件、多跑几条 ls 的人
- ❌ 直接拿 Claude 改生产配置 / 没 git 兜底的系统目录里干活的人——别开
二、Hook 推送:任务跑完手机响一声
为什么需要
dontAsk 解决了 “Claude 一直问你”,但带来了新问题:它不问你了,你也不知道它跑完了。
后台跑十分钟的重构,你切去看 B 站还是盯着窗口?两个都不对。正确姿势是:跑完它叫你。
Claude Code 有 hook 机制,Stop 钩子在每轮回答跑完时触发,Notification 钩子在它需要你输入时触发。Hook 本质就是一条 shell 命令,给自己发消息的方式有很多种——我个人用 Bark(iOS 推送服务,一个 curl 就响),单纯因为习惯了。可替代方案一抓一大把:
- Telegram Bot:跨平台、API 极简,
curl 'https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<ID>&text=任务完成'一行搞定,全球可用 - iOS / Android 通用:ntfy(开源,自部署友好)、PushDeer
- 国内微信:Server 酱(推到微信服务号)、企业微信群机器人
- 桌面通知:Windows 直接
powershell -c "..."弹气泡,macOSosascript -e 'display notification ...' - 想骚一点:飞书 / Slack / Discord webhook、邮件、甚至打到自己手机上
逻辑都一样:把 hook 命令换成对应平台的 curl/命令即可。 下面用 Bark 演示,照着抄就能跑。
配置(接在上面 JSON 同层)
| |
| Hook | 触发时机 | 推送内容 |
|---|---|---|
Stop | Claude 一轮回答跑完 | “任务完成” |
Notification | Claude 需要你输入/确认 | “需要你协助”(level=timeSensitive 锁屏也响) |
装机三步(以 Bark 为例)
- 装 App:iOS 在 App Store 搜 Bark 装。Android 用户走上面列的替代方案(ntfy / PushDeer / Server 酱都行)。
- 拿 Key:打开 Bark App → 首页有一串
https://api.day.app/xxxxxxxxx/的 URL,xxxxxxxxx就是你的 key。把 JSON 里两处<你的Bark Key>全替换掉。 - 自测:保存 settings.json → 重启 Claude Code → 随便问一句让它回答 → 手机应该立刻收到"任务完成"推送。
想换文案
URL 路径里那两段中文是 URL-encoded 的:
%E4%BB%BB%E5%8A%A1%E5%AE%8C%E6%88%90= “任务完成”%E9%9C%80%E8%A6%81%E4%BD%A0%E5%8D%8F%E5%8A%A9= “需要你协助”
去 https://www.urlencoder.org/ 编码新文案后替换即可。比如想改成"老板,活儿干完了",编码完粘进去就行。
三、完整配置(直接抄)
| |
常见坑
- 改完不生效:Claude Code 完全退出(不只是关窗口,托盘也退)再重开。
- 手机收不到推送:浏览器直接访问
https://api.day.app/<你的Key>/test,能弹就是 key 对的,不能弹就回 Bark App 重新复制 key。 - Windows 上
curl找不到:Win10+ 自带curl.exe,没自带的话把命令换成powershell -Command "Invoke-RestMethod ..."。 - 不想要 deny 里某条限制:直接删那一行;但
.ssh/Windows/Program Files三条强烈建议留着。生产机器上别图省事。
一句话总结
dontAsk解放你的鼠标,Hook 推送解放你的眼睛。配上之后 Claude Code 才真正像一个"能托管的同事",而不是"每行代码都要你陪审的实习生"。
红线划清楚(deny 列表 + git 兜底),剩下的就让它自己跑——跑完了手机会响。推送渠道随你换,Bark 只是我自己用顺手了,别被这一种方案框住。
