Claude Code always allow 为什么存不住
2.1.252 修复:项目还没有 .claude/settings.local.json 时,点 always allow 不会写入。新仓库第一次放行后请确认该文件已出现。

claude code always allow 保存不了:2.1.252 之前,项目里还没有 .claude/settings.local.json 时,批准窗上的 always allow 点了也不落盘。下次同一条命令还会再问。新 clone、刚 git init 的目录最容易踩:你以为已经永久放行,其实本地规则文件根本没建出来。
旧行为和文件在哪
Changelog 写得很窄:a project that has no .claude/settings.local.json yet。用户级 ~/.claude/settings.json、项目共享的 .claude/settings.json 不在这句里。always allow 写的是本机、通常不进 git 的 local 文件。团队若把 settings.local.json 误提交,那是另一件事。
新项目只有 CLAUDE.md、没有 .claude/ 目录时,旧客户端可能连创建文件都跳过。升到 2.1.252 后,第一次 always allow 应能把目录和文件一起建出来。
怎么确认已经修好
claude --version到 2.1.252+。- 找一个没有
.claude/settings.local.json的目录开会话。 - 触发一条要批准的 Bash,选 always allow。
- 看该文件是否出现,以及里面是否有对应 allow 规则。
文件没出现:检查工作区是不是只读、或公司同步盘把点文件忽略了。权限模式若是 auto,很多命令不再弹窗,你点不到 always allow,不要当成这条 bug。auto 默认见 auto mode 默认。
和托管规则、restricted 的关系
企业托管 settings 可以盖过本机 allow。/status 出现 Skipped sources 时,local 文件写成功也不生效。2.1.248 的 --restricted 会忽略用户/项目/本机 settings,always allow 在那一模式下没有意义。
/permissions 在 2.1.246 加了 Auto 页签,改的是分类器,不是 local allow 列表。always allow 仍走 local JSON。不要在 Auto 页里找刚才点的那条。
已经点过但下次还问
先升 252 再点一次。旧会话不会回写已经丢掉的点击。规则里若是 Bash(git * main) 这种子命令前通配,2.1.246 会警告它也能匹配插在前面的选项;看起来「存了但行为怪」,先收紧规则,不是保存失败。
.gitignore 若忽略了整个 .claude/,文件其实写在磁盘上,只是 git status 看不见。用 ls -la .claude/settings.local.json 确认,不要只看工作区树。