跳转到内容

让 Claude 跑命令:六种权限模式怎么选

📍 Claude Code 干活

Claude 在终端里跑命令,工具图标 git/npm/docker/curl 飞舞

那个让洁柔第一次相信 AI 工具的瞬间

Section titled “那个让洁柔第一次相信 AI 工具的瞬间”

5 月初某个晚上,洁柔做完一个静态站,要部署到 GitHub Pages。

她原本打算 Google 「GitHub Pages 怎么部署」——之前她每次都是这个流程,Google 半小时 + 复制粘贴 10 个命令 + 出错回来 google + 再试。

那天我(小牛)跟她说:「你直接跟 Claude Code 说『帮我部署这个项目到 GitHub Pages』,它会自己跑。」

她半信半疑地说了一句。

没过多久,她的网站已经在 https://yourname.github.io/my-site 上跑起来了。命令一条都不用她自己敲,但也不是全程没碰键盘:那时的默认模式还是每一步都先问(现在叫 Manual,手动确认),建仓库、推送代码这类会改动东西的命令,终端都会先弹出来问她,她看一眼、确认了才继续;GitHub 的命令行工具 gh,也得事先装好、登录过。

她那一刻发了一句「嗯,我懂了」给我。

这一篇讲的就是这个能力——Claude Code 不只告诉你「应该跑什么命令」,还能直接帮你跑;而它跑之前会不会先问你,取决于你选的权限模式。

它跟聊天 AI 的区别:按任务选工具

Section titled “它跟聊天 AI 的区别:按任务选工具”

聊天 AI 擅长告诉你「应该跑什么命令」:你问怎么部署,它一步步列给你,你再一条条复制粘贴。

能直接在你电脑上跑命令的工具,会自己动手:跑命令、看结果、出错了接着改。这类工具不止 Claude Code 一家,OpenAI 的 Codex、字节的 TraeCode、DeepSeek Harness 都能在本地跑命令,豆包工作也能操作电脑和浏览器。能做多少,看具体功能、套餐和你给的权限,按任务选就行,见 Claude Code、豆包、ChatGPT 怎么选。

举一个具体场景。你想把一个网页项目部署到 GitHub Pages:

只告诉你命令的版本:

「你需要先 git init,然后 git add .,然后 git commit -m 'init',然后……」

你看完,还要手动一条一条复制粘贴跑。每条出错都要回来问。

Claude Code 动手的版本: 你说一句:「把这个项目部署到我的 GitHub Pages,仓库名 my-site,提交用的邮箱设成 you@example.com。」

它依次:

  1. git init,创建 README 和 .gitignore
  2. git add .、git commit,做第一次提交
  3. git branch -M main,把分支名改成 main
  4. 跑 gh repo create my-site --public,在 GitHub 上建仓库(需要事先装好 GitHub 命令行工具 gh 并登录)
  5. git remote add origin …,再 git push -u origin main
  6. 打开仓库的 GitHub Pages 设置,等部署完成
  7. 跟你说「好了,你的站现在在 https://yourname.github.io/my-site」

命令不用你自己敲;中间要不要你点头,看权限模式,下面细讲。

简短答案:几乎所有终端命令。新手第一年最常碰到的:

类别例子典型用途
找 / 看文件ls / find / cat列目录、找文件、看内容
装软件npm install / pip install / brew install装工具 / 装依赖
下载curl / wget从网上拿文件
代码版本git commit / push / pull提交 / 推到 GitHub
一键部署网站wrangler / vercel把网页推到 Cloudflare / Vercel
跑你自己的脚本任何 Python / Bash / Node 脚本批量处理、自动化

老手会用的(进阶,第一年不用懂):构建(npm run build / cargo build)、容器(docker)、数据库(psql / mysql / redis)、K8s(kubectl)、系统进程(systemctl / cron)… 这些 Claude Code 都能跑,你看到再来查。

⚠️ 默认只跑命令:要用鼠标点图形界面的活(比如改某些系统设置、在网页上点按钮),默认做不了。想让它操作浏览器,可以装 Claude in Chrome 扩展、用 claude --chrome 启动;macOS 上的 Pro、Max、Ultra 用户还可以试 computer use(让它看屏幕、点鼠标,目前是研究预览)。这两样都要用 claude.ai 付费订阅登录,走 DeepSeek 时用不了;而且它们会用到你已经登录的网站和账号,放权要更谨慎(官方说明:Chrome、computer use)。

六种权限模式(最重要的概念)

Section titled “六种权限模式(最重要的概念)”

三个机器人:一个举手先问,一个边敲电脑边示意暂停,一个撒腿快跑,示意从严到松的几种放手程度

Claude Code 跑命令、改文件之前会不会先问你,取决于权限模式(permission mode)。官方一共有六种:日常常用四种(Manual、plan、acceptEdits、auto),另外两种有特殊用途(dontAsk、bypassPermissions)。

模式不问你就执行的适合
Manual(手动确认,配置值写 default)只有读取和只读命令新手第一周、陌生项目、敏感资料
plan(计划模式)读取和研究用的命令;批准方案之前不改文件大改动前先看方案,最适合新手
acceptEdits(自动接受编辑)改工作目录里的文件,加上 mkdir、touch、rm、rmdir、mv、cp、sed 这几条文件命令用 git 管着项目、打算事后统一检查改动的人
auto(自动模式,现在的默认)几乎所有操作,由另一个模型在后台审核熟悉之后的日常使用、长任务
dontAsk(不问就拒)只跑你事先放行的,其余一律拒绝无人值守的脚本、CI(持续集成)
bypassPermissions(跳过权限检查)全部只在隔离的容器或虚拟机里

「工作目录」就是你启动 Claude Code 时所在的那个文件夹。另外,ls、cat、grep、find、git status 这类只读命令,在任何模式下都不弹窗,所以 Manual 也不是「每条命令都问」。

新手怎么选:第一周用 Manual 或 plan,每一步看清楚;熟悉之后可以用默认的 auto,但删东西、推代码、动系统配置这类重要操作之前,切回 Manual;别碰 bypassPermissions。

以下按 Claude Code 2.1.283 和官方权限模式说明核对(英文版更新最快,也有中文版)。

改文件、跑会改动东西的命令之前,都先弹窗问你,你选了才执行(弹窗长什么样、每个选项什么意思,见下面「确认弹窗看什么」)。

怎么进入:启动时加参数:

Terminal window
claude --permission-mode default

(写 manual 也行。)界面底部的状态栏会显示 ⏸ manual mode on。想以后每次启动都是它,在 ~/.claude/settings.json 里写上:

{
"permissions": {
"defaultMode": "default"
}
}

✅ 适合:

  • 完全新手第一周
  • 跑陌生项目 / 不熟悉的代码库
  • 让 Claude 操作你「很怕弄坏」的东西(银行文件 / 重要数据)

❌ 缺点:

  • 一个大任务几十条命令,你要点几十次,体验差
  • 容易疲劳到不看就点 Yes(反而更危险)

🗺️ 2. plan(计划模式:先出方案再动手)

Section titled “🗺️ 2. plan(计划模式:先出方案再动手)”

它先读文件、跑些查看用的命令,把情况摸清楚,写出一份方案;你批准之前,它不改你的文件。 这是最适合新手的模式:先看它打算怎么干,再决定让不让它干。

注意它不是「只读」:研究阶段它也会跑命令,auto 可用时,经分类器(负责审核的那个模型)批准的查看类命令会直接执行。

怎么进入(三选一):

  • 会话里按 Shift+Tab,切到底部显示 ⏸ plan mode on
  • 在提示词前面加 /plan,比如 /plan 把这个项目部署到 GitHub Pages
  • 启动时加参数:claude --permission-mode plan

方案出来后,它会问你怎么继续,常见选项有:

  • Yes, and use auto mode:批准方案,接下来用 auto 模式干(auto 用不了时,这一项会换成自动接受编辑)
  • Yes, manually approve edits:批准方案,但每一处改动还要你点头,新手选这个
  • No, keep planning:不批准,告诉它哪里要改,接着出方案

想不批准、直接离开 plan 模式,再按一次 Shift+Tab。

⚡ 3. acceptEdits(自动接受编辑)

Section titled “⚡ 3. acceptEdits(自动接受编辑)”

改文件不问,常见的文件命令也不问:

动作行为
改工作目录里的文件(Edit / Write)✅ 自动通过
工作目录里的 mkdir、touch、rm、rmdir、mv、cp、sed✅ 自动通过
工作目录以外的路径⚠️ 问你
.git、.claude、.bashrc 这类受保护的路径⚠️ 问你
删根目录、家目录、工作目录本身或它上级的 rm / rmdir(比如 rm -rf .)⚠️ 问你
其他命令(git push、npm install、curl 等)⚠️ 问你

⚠️ 注意 rm 也在自动通过的名单里:项目子目录里的 rm -rf node_modules 在这个模式下会直接执行,不弹窗。想让 rm 每次都问,用 Manual 模式,或者加一条 ask(询问)规则 Bash(rm *),写法见后面「真正拦得住的」一节。

✅ 适合:

  • 写代码 / 写文档 / 改简历,改动多、你打算事后统一检查
  • 项目用 git 管着、随时能看改了什么、能退回去的人

怎么进入:在 Manual 模式下按一次 Shift+Tab,或者启动时加 --permission-mode acceptEdits;状态栏显示 ⏵⏵ accept edits on。

🤖 4. auto(自动模式,现在的默认)

Section titled “🤖 4. auto(自动模式,现在的默认)”

由另一个模型(官方叫分类器)代替你审核每一步:常规操作直接放行,危险的拦下来。

它是这样一步步变成默认的:

  • 2026-03-24:以研究预览推出,要加 --enable-auto-mode 参数才能用
  • 2026-04-16(v2.1.111):不用再加这个参数
  • 2026-07-10:对所有用户正式可用
  • 2026-08-14:Pro、Max、Team 套餐的新会话默认进 auto(官方 8 月 7 日宣布;需要 v2.1.228 以上,Windows 原生版 v2.1.233 以上)
  • 2026-09-25(v2.1.283):扩大到所有套餐、所有接入方式(包括 API Key、企业版、各家云平台和网关)的交互式终端和 VS Code 会话

这些情况会从 Manual 开始:

  • 用 claude -p 跑的非交互任务,以及 Agent SDK(给开发者写程序用的开发包)。v2.1.285 到 v2.1.301 有过例外:走各家云平台、或者关掉了遥测(telemetry,向官方回传使用数据)的会话,没另外指定模式时从 auto 开始;v2.1.302(2026-10-16)起这类会话又改回从 Manual 开始,想用 auto 要加 --permission-mode auto(见官方更新日志和权限模式说明页,英文)
  • 你或管理员在设置里指定了别的默认模式(按设置来)
  • 模型不支持(Haiku 4.5、Sonnet 4.5、Opus 4.5 及更早的模型;2026-10-07 发布的 Haiku 5.5 支持 auto,要 Claude Code v2.1.293 以上)、组织关掉了 auto,或者官方服务端临时关闭
  • 接 DeepSeek 时 auto 大概率用不了,会从 Manual 开始,以状态栏显示为准

它默认怎么判:

动作默认
改工作目录里的文件✅ 放行
按项目里写明的依赖清单装包、只读的网络请求✅ 放行
推送到当前仓库的分支(gh-pages、production 这类发布用的分支除外,单独判断)✅ 放行
下载并直接执行代码(curl ... | bash)、强推(force push)🚫 拦下
git reset --hard 这类丢弃未提交改动的命令、删掉会话开始前就有的文件🚫 拦下
生产环境部署、把敏感数据发到外部🚫 拦下

被拦下时,不是停下来问你,而是拒绝这一步、让 Claude 换个做法;同一个会话里连续被拦 3 次、或者累计 20 次,才退回到弹窗问你。你自己写的 ask(询问)规则,在 auto 下照样弹窗。

⚠️ 注意:

  • 「危险不危险」是分类器判的,不是你定的。官方原话:auto 模式减少了弹窗,但不保证安全
  • 装好后发现它「问得比教程里少」,就是因为你在 auto 模式;想稳一点,Shift+Tab 切回 Manual
  • 团队管理员可以统一固定默认模式,或者关掉 auto,公司电脑以管理员的设置为准
  • 在 Manual 或 acceptEdits 模式下,auto 可用时,命令确认弹窗里会多一个 Yes, and switch to auto mode:放行这一条,并把会话切到 auto

✅ 适合:

  • 熟悉 Claude Code 之后的日常使用、跑时间长的任务
  • 嫌弹窗太多、又不敢用 bypass 的人

下面两种有特殊用途,新手基本用不上。

只执行你事先放行的操作(读取、只读命令、你在 allow 规则里写过的),其余一律直接拒绝,不弹窗。给无人值守的脚本、CI(持续集成,代码一提交就自动跑测试的流水线)用。它不在 Shift+Tab 的循环里,要在启动时用 claude --permission-mode dontAsk 指定,或者写进设置文件的默认模式。

🚨 6. bypassPermissions(跳过权限检查):新手不要用

Section titled “🚨 6. bypassPermissions(跳过权限检查):新手不要用”

全部自动通过,几乎什么都不问。 它真的会自己跑 rm、sudo、删数据库表,出错没有人能拦住。

  • 官方只建议在隔离的容器或虚拟机里用(最好不联外网),在那里它弄坏了也碰不到你的真电脑
  • 在哪个目录启动都圈不住它:在 /tmp 里启动,只是把 /tmp 设成工作目录,它照样能改你的家目录
  • 它下面还会问你的只有几类:你写的 ask 规则、需要你回答的提问,以及删根目录、家目录、工作目录这类关键路径的 rm / rmdir(v2.1.281 起,终端里 2 分钟不答就自动拒绝)。像 find ~ -delete 这种不是 rm 的删除,会直接执行
  • 它平时不会出现在 Shift+Tab 的循环里,除非你用 --dangerously-skip-permissions、--permission-mode bypassPermissions 这类参数启动,或者在用户设置里把它设成默认

🚨 想少一些确认,用 auto 或 acceptEdits;想把命令真正圈住,用沙箱(见后面);真要全部放开,只在容器或虚拟机里。


切换方式:

  • 会话中:按 Shift+Tab 循环切换(部分 Windows 终端是 Alt+M),界面底部实时显示当前模式。在 auto 时按一次回到 Manual,之后按 Manual → acceptEdits → plan →(auto 可用时)auto 的顺序循环
  • 启动时:claude --permission-mode 模式名,可选 manual(也可以写 default)、acceptEdits、plan、auto、dontAsk、bypassPermissions
  • 每次都用同一种:在 ~/.claude/settings.json 的 permissions.defaultMode 里写上模式名

(顺带说清:/permissions 这个命令管的是 allow / ask / deny 三种规则,也就是放行、询问、拒绝哪些操作;它不负责切模式,别搞混。)

终端弹窗下面三个按钮:绿色对勾、红色叉号、黄色星标,示意允许一次、拒绝、以后不再问

在会问你的模式里(比如 Manual),跑命令前的弹窗大致这样(示意,具体文字以你的界面为准):

Bash command
git push origin main
Do you want to proceed?
❯ 1. Yes
2. Yes, and don't ask again for git push commands in /home/you/my-site
3. No

每个选项的意思:

选项含义
Yes只放行这一次
Yes, and don’t ask again for …保存一条放行规则,后面写明放行哪一类命令。命令类通常按开头保存成 Bash(git push *) 这样的规则,永久写进这个仓库根目录的 .claude/settings.local.json,以后这个仓库所有子目录里的会话都不再问,放行的是一整类命令,不只是眼前这一条。改文件的弹窗,第二个选项是「Yes, and switch to accept edits … for this session」:选了就把本次会话切到 acceptEdits 模式,改文件和 rm、mv 这类文件命令都不再问,直到会话结束
No拒绝。可以按 Tab 附一句话,告诉它换什么做法
Yes, and switch to auto mode只在 Manual、acceptEdits 模式下、auto 可用时出现:放行这一条,并把会话切到 auto

新手关键:

  • 看清楚是 git push 还是 git push --force(后者会强推,覆盖别人的提交)
  • 看清楚操作的是 当前目录 还是 ~/ 整个主目录
  • 看清楚最后那个 > output.csv 是否会覆盖现有文件
  • 不要随手选「don’t ask again」,放行规则越攒越多,权限模式就形同虚设;隔一阵在会话里输入 /permissions,把已保存的规则过一遍,不认识的删掉
看一下我当前目录最近改了什么,帮我写一个合理的 git commit message,
然后 commit + push。

它做的事:git status → git diff → 分析改动 → 写 message → git commit -m "..." → git push。比你自己想 commit message(提交说明)5 分钟、敲命令 1 分钟,一共省下 4 分钟,文案往往也更规整。

在 auto 模式下,推送到当前仓库默认直接放行。想在推送前自己看一眼,就在提示词里写「commit 之后先停下,给我看过再 push」:auto 模式下,你在对话里划的界线分类器也会照着拦,但不如权限规则牢靠;想每次推送都先问你,加一条 ask 规则 Bash(git push *)(见后面「真正拦得住的」)。

~/Pictures/旅行 2024/ 里有 200 张照片,
帮我:
1. 按照片里记录的拍摄方向(EXIF 信息)把歪着的照片摆正。
2. 文件名按拍摄时间排序,重命名为 旅行-001.jpg ~ 旅行-200.jpg。
3. 每张压缩到 1MB 以下。
4. 输出到 ~/Pictures/旅行 2024-处理后/。
原文件不动。先处理 3 张给我看;需要安装工具的话,先问我。

它做的事:先看本机有没有 ImageMagick 这类图片工具(没有就先问你要不要装)→ 写一个脚本 → 先处理 3 张给你看 → 你点头后跑完剩下的 → 你的硬盘里多出一个干净的新文件夹。200 张图,一段几十行的脚本就搞定。

当前目录是一个 hugo blog 项目,帮我部署到 Cloudflare Pages,
项目名 my-blog,我之前没在 Cloudflare 配过。

它做的事:hugo 构建 → 装 wrangler(Cloudflare 的命令行工具,要求 Node.js 22 以上)→ 跑 wrangler login(给你弹浏览器)→ wrangler pages deploy ./public → 给你部署完的 URL。第一次部署的人手动 google 半小时的事,AI 5 分钟。

「部署上线」这类动作,在 auto 模式下可能被分类器拦下,Claude 会换个做法或者回头问你。第一次部署,建议在 Manual 模式下一步步看着它跑。

危险命令清单(放行规则慎加)

Section titled “危险命令清单(放行规则慎加)”

下面这些命令永远不要选「don’t ask again」,每次都该自己看一眼。

先弄清一个前提:「看一眼」的前提是它会问你。 在 auto 模式下,大多数命令不再逐条弹窗,强推、git reset --hard 这类由分类器默认拦下,但不保证全拦住;在 acceptEdits 模式下,删项目里子目录的 rm -rf 根本不弹窗。所以做这类事之前先切到 Manual;想让某类命令在任何模式下都先问你,就加 ask 规则(见下一节)。

危险命令风险
rm -rf <path>永久删除整个目录,不进回收站
sudo 任何东西拿到 root 权限,改你电脑系统级文件
git push --force强推覆盖别人代码,他人 commit 丢失
curl ... | sh直接跑从网上下载的脚本,内容你看不见

第一年看见这 4 类命令,永远手动确认——它们是最常见、后果最严重的几类误操作。

老手会用、新手第一年大概率碰不到

Section titled “老手会用、新手第一年大概率碰不到”

(知道存在就行,真用时再回来查)

  • git reset --hard —— 丢弃所有未提交改动
  • dd if=... —— 底层磁盘操作,写错会毁硬盘
  • psql -c "DROP TABLE" —— 删数据库表
  • docker system prune -a —— 删全部 docker 镜像
  • kubectl delete —— 删 K8s 资源
  • wrangler delete —— 删线上 Cloudflare 服务

凡是包含删除、强制、root、生产环境 关键词的命令,新手第一年永远手动确认。

真正拦得住的:拒绝规则、钩子和沙箱

Section titled “真正拦得住的:拒绝规则、钩子和沙箱”

在 CLAUDE.md 里写「不许删文件」,或者在对话里说「别 push」,只能影响它倾向怎么做,拦不住它。官方说得很直白:权限规则由 Claude Code 程序执行,不由模型决定;提示词和 CLAUDE.md 里的指令,改变不了程序允许它做什么。auto 模式下,你在对话里划的界线分类器也会参考,但对话被压缩(自动总结前文)之后,这句话可能就不在了。

真要拦住,靠下面三道闸(官方说明:权限规则、沙箱)。

1. 权限规则:allow(放行)/ ask(询问)/ deny(拒绝)

在会话里输入 /permissions 就能查看和增删;也可以直接写进项目根目录的 .claude/settings.json(跟着项目走)或 ~/.claude/settings.json(对你所有项目生效):

{
"permissions": {
"allow": ["Bash(npm test)"],
"ask": ["Bash(rm *)", "Bash(git push *)"],
"deny": ["Bash(sudo *)"]
}
}
  • deny 规则在所有模式下都生效,包括 bypassPermissions;你写的 ask 规则在 acceptEdits、auto 甚至 bypassPermissions 下也会弹窗
  • 局限:Bash 规则只按命令文字匹配。Bash(rm *) 拦得住 rm -rf build/,拦不住 /bin/rm -rf build/ 或 bash -c 'rm -rf build/'。它是闸,不是墙

2. 钩子(Hook)

每次动手前,先跑你写的检查脚本(PreToolUse 钩子)。它能看到完整的命令,按你的逻辑决定放不放行;脚本判定拒绝时,连 bypassPermissions 也拦得住。写法见 Hooks:Claude 改完文件自动跑你的脚本。

3. 沙箱(Sandbox)

在会话里输入 /sandbox 打开(macOS、Linux、WSL2 上内置,原生 Windows 不支持)。它由操作系统限制命令能写哪些目录、能连哪些网站,不管命令是怎么写的。在 Mode 里选 auto-allow(自动放行),沙箱里的命令就不用逐条确认,这是比 bypass 安全得多的少弹窗办法。

再往外一层是容器和虚拟机:真要让它什么都不问地跑,就放在这里面。

三个 commands 坑 在系统目录 / 没看清就按 y / 没备份

❌ 坑 1:bypassPermissions 在主目录跑大任务

Section titled “❌ 坑 1:bypassPermissions 在主目录跑大任务”

「帮我把 ~/ 下所有 .DS_Store 文件删了,清理掉。」 (你在 bypass 模式)

它会跑 find ~ -name ".DS_Store" -delete。多数时候没事,但万一它理解错指令,跑了 find ~ -delete,你整个 home 目录就没了:find … -delete 不是 rm,bypass 下连最后那道关键路径保护都不会触发。

修正:bypass 不管你在哪个目录启动,都能改到整台电脑,在 /tmp 里启动也圈不住它。新手不用 bypass;想少一些确认,用 auto 或 acceptEdits;真要全部放开,只在容器或虚拟机里用。涉及 ~/ 的清理,用 Manual 模式,让它先把要删的文件列给你看。

❌ 坑 2:看到确认弹窗闭眼点 Yes

Section titled “❌ 坑 2:看到确认弹窗闭眼点 Yes”

每天点几十次 Yes,人会疲劳。某天它弹出来 rm -rf ~/Documents/重要数据/,你下意识一回车,就完了。

修正:看到 rm / sudo / --force / DROP 这种字眼,多看 3 秒。3 秒能救你一整周的工作。弹窗多到烦,说明该换办法了:大任务先用 plan 模式看整体方案,常用的安全命令加 allow 规则,而不是练习闭眼点 Yes。

「把 ~/Documents/合同/ 里所有 docx 的 ‘甲方:腾讯’ 改成 ‘甲方:阿里’。」

如果它批量改坏了你没原版,法律意义上的麻烦。

修正:跑这种命令前,先让它复制到新目录改:

「先把 ~/Documents/合同/ 复制到 ~/Documents/合同-阿里版/,然后在新目录改…」

原始合同永远在,改坏了重做就行。

读完这一篇你应该理解 六种权限模式怎么选、确认弹窗怎么答、危险命令怎么认,以及真正拦得住的三道闸。

下一篇:

→ CLAUDE.md 是什么:让它一开口就懂你的项目 —— 把项目特定的偏好、规则、上下文写进一个文件,Claude 启动时自动读,以后不用每次都重复说(它影响的是倾向,硬规则还是靠上面的权限规则)

→ 一次说错可以撤回:checkpoint 用法 —— 跑坏了怎么 undo(注意:命令造成的改动,检查点撤不回,危险命令前先备份)

→ 安全放手(Safe Autonomy) —— 想让它长时间自己跑,怎么系好安全带

想及时看到更新,可以收藏 niuxue.org 主页。


本篇所有「危险命令」清单,建议保存到你电脑桌面任意一份文档里。新手第一年,看见这些命令多看 3 秒,能救你无数次。