所有文章
AIClaude

Claude Code /permissions 怎么用:工作目录、allow/deny 与 blockWritesOutsideWorkingDirectories

把 Claude Code 的权限相关说明收在一篇:/permissions、settings.json 里的权限规则、不建议乱开 bypass,以及 2.1.314 的 blockWritesOutsideWorkingDirectories。我们也看了本机 claude --help 里的 --permission-mode 和 --add-dir。

Claude Code /permissions 与 blockWritesOutsideWorkingDirectories:浅紫色黏土盾牌护着工作目录

Claude Code 的权限相关问题容易散在好几篇里。这篇收在一处:/permissions 怎么看 allow/deny、settings.json 里的权限字段、为什么不建议乱开 bypass,以及 2.1.314 新增的 permissions.blockWritesOutsideWorkingDirectories。顺带区分「工作目录不存在」和「禁止写到工作目录外」。

我看到了:本机 claude --help 里有 --permission-mode、--add-dir、--dangerously-skip-permissions、--effort 等开关;claude --version 仍是 2.1.312,所以 blockWritesOutsideWorkingDirectories 的行为以官方 CHANGELOG 2.1.314 为准,本文标成文档结论。settings 路径见 settings.json 在哪。

/permissions 做什么

在会话里运行 /permissions,可以查看当前的允许 / 拒绝规则,以及最近被拦下的调用(CHANGELOG 里多处提到 /permissions 会列出被 block 的调用)。当你觉得「明明点了允许怎么又拦」或「auto mode 说 blocked」时,先打开它对照,比改一堆配置更省事。

和 auto mode 暂不可用相关的现象,见 auto mode temporarily unavailable。其他报错总入口:报错速查。

settings.json 里的权限

权限规则可以写在 settings.json(用户级 / 项目级等,路径见上面那篇)。常见思路是:用 allow / deny 约束 Bash、文件编辑、MCP 等工具;默认模式由 permission mode 决定。本机帮助里 --permission-mode 可见取值包括 bypassPermissions、manual 等(以你安装版本的 --help 为准)。

额外目录用 --add-dir 加入工作目录集合。我看到了 help 原文里写:工具在工作目录(含 --add-dir)范围内工作;并提到与 bypass 相关的限制说明——具体句子以你本机 claude --help 为准。

不要把「图省事」理解成默认开启 --dangerously-skip-permissions。帮助里写得很清楚:那是绕过全部权限检查。只在你完全理解风险、且环境可丢的时候才考虑;日常开发用 allow/deny 和正常确认更合适。本文不教「怎么永久关闭所有确认」。

blockWritesOutsideWorkingDirectories(2.1.314)

官方 CHANGELOG 2.1.314 新增:

> permissions.blockWritesOutsideWorkingDirectories:Write、Edit、NotebookEdit 在每一种权限模式下,都会拒绝对工作目录之外路径的写入。

我推测(来自这句 changelog,非本机复现):打开该选项后,即使你处于很宽的 permission mode,也不能靠 Write/Edit 改到工作目录(和 --add-dir 加入的目录)以外。这和「整站 bypass」不是一回事——它是写路径边界。

配置位置仍在 settings 体系内;改完用 /permissions 或实际写一个目录外路径做验证(在可丢的测试目录里做)。本机尚未升到 2.1.314,所以没有在这里点开该开关做截图。

工作目录不存在 vs 禁止写出

两件不同的事:

现象通常含义先做什么
工作目录 / 文件夹已经不存在项目路径被挪走、删掉,或会话还记着旧路径重新打开正确目录;不要只盯着 permissions
写入被拒在目录外命中工作目录边界或 deny 规则;2.1.314 起还可能是 blockWrites…确认路径是否在项目 / --add-dir 内;看 /permissions 最近拦截
index.lock File existsgit 索引锁,不是权限 JSON见 index.lock 专文

常用斜杠命令速查(用法教程并入)

下面是会话里常用的一组(不完整,以你版本 UI / help 为准),方便和「用法教程 / 常用命令」词合并:

命令做什么
/permissions查看 allow/deny 与最近拦截
/model换模型或 effort / thinking 档
/status看当前连接与账号侧状态
/login /logout登录相关
/compact压缩上下文(长会话)
/resume恢复会话

启动参数侧(本机 help 可见):--permission-mode、--add-dir、--effort、--dangerously-skip-permissions(慎用)。更细的安装与报错仍回 报错速查;effort 400 见 Invalid effort level。

常见问题

bypass 开了是不是就不用管 blockWrites?

按 2.1.314 的表述,blockWritesOutsideWorkingDirectories 在每一种权限模式下都会让 Write/Edit/NotebookEdit 拒绝目录外路径。我推测:它不是被 bypass 一笔勾销的普通提示,而是写路径硬边界。以你升级后的实际行为为准。

权限改完不生效?

检查改的是哪一层 settings(用户 / 项目 / 托管策略)、是否被 --setting-sources 排除,以及有没有托管策略覆盖。路径优先级见 settings.json 位置。

和企业 effort 上限有关吗?

无关。effort 400 是模型努力档;权限是工具调用边界。effort 专文:Invalid effort level。

留下你的想法

你的邮箱不会公开。