Claude Code Manual
权限与安全
Claude Code 能运行命令、修改文件。权限设置决定了它哪些事可以直接做、哪些事要先问你。
权限模式
| 模式 | 不用问你就能做的事 | 适合 |
|---|---|---|
手动(Manual,配置值 default) | 只能读取 | 新手、敏感操作,每一步都自己把关 |
接受修改(acceptEdits) | 读取、修改文件、常见的文件操作命令(mkdir、mv、cp 等) | 你在一旁审阅的日常修改 |
计划(plan) | 读取和调查,只提方案、不改源文件 | 动手之前先研究、先出方案 |
自动(auto) | 几乎所有操作,由另一个模型在后台做安全检查 | 熟练用户的长任务 |
跳过权限(bypassPermissions) | 所有操作 | 只适合隔离的容器或虚拟机 |
会话中按 Shift + Tab 循环切换模式,底部状态栏会显示当前模式,例如 manual mode on、accept edits on、plan mode on、auto mode on。也可以在启动时指定:
claude --permission-mode plan新版默认是自动模式
从 v2.1.283 起,在终端里启动的会话默认进入自动模式:由一个分类模型替你判断操作是否安全,而不是每次都问你。它很方便,但新手很难知道它到底做了什么。
建议在 ~/.claude/settings.json 中把默认模式改成手动:
{
"permissions": {
"defaultMode": "default"
}
}下次启动时,状态栏会显示 ⏸ manual mode on。熟练以后,再按需切换到其他模式。
计划模式里也有同样的问题:只要自动模式可用,计划阶段调查用的命令默认也由分类模型替你批准。想在计划模式里也由自己审批,再加上顶层设置 "useAutoModeDuringPlan": false。关闭后,内置只读命令之外的命令都会先问你(用 --dangerously-skip-permissions 等方式启用了跳过权限的交互式终端会话除外:那里计划阶段的命令大多既不经过分类模型、也不询问你,只有少数情况仍会提示,所以不要那样启动):
{
"permissions": {
"defaultMode": "default"
},
"useAutoModeDuringPlan": false
}这个设置要写在个人的 ~/.claude/settings.json 或项目本地的 .claude/settings.local.json 里;写在项目共享的 .claude/settings.json 里的 false 会被忽略。反过来,即使公司托管配置设成了 true,你个人或项目本地的 false 仍然生效。
审批提示
在手动模式下,Claude Code 要修改文件或运行命令时,会显示具体内容并请你确认。你可以只允许这一次、选择以后不再询问(Yes, and don't ask again),或者拒绝。拒绝时可以顺便告诉它应该怎么做。
“不再询问”的有效期因操作而异:
| 操作 | 选“不再询问”后 |
|---|---|
| 修改文件 | 本次会话结束前不再询问 |
| 运行某类命令、访问某个网站 | 在这个项目里永久不再询问,规则保存到 .claude/settings.local.json |
所以对命令选“不再询问”要慎重。选错了可以输入 /permissions 找到对应规则删除。
判断标准只有一条:看得懂、并且是你想要的,才允许。 看不懂就拒绝,然后问它“这条命令是做什么的”。
允许、询问、拒绝规则
对经常重复的安全操作,可以写规则让它不再询问;对危险操作,可以写规则直接拒绝。规则写在 settings.json 的 permissions 里:
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git commit *)"
],
"deny": [
"Bash(git push *)",
"Read(./.env)"
]
}
}allow:直接允许;ask:总是询问;deny:直接拒绝。Bash(npm run *)中的*代表任意内容,这条规则允许所有npm run ...命令。- 拒绝优先:同一个操作同时匹配
deny和allow时,按deny处理。 Read(./.env)禁止读取.env文件,也会阻止修改它。但它只管 Claude 自带的文件工具和cat这类它认得的命令,挡不住脚本程序自己去读。
在会话中输入 /permissions 可以查看和编辑规则。
沙箱
在 macOS、Linux 和 WSL 2 上,可以用 /sandbox 打开沙箱:Claude Code 运行的命令会被限制在指定的文件和网络范围内。Windows 原生和 WSL 1 暂不支持。沙箱和权限模式可以叠加使用。
回退:撤销 Claude 的修改
Claude Code 会在你每次发出新任务前自动保存一个检查点。输入框为空时连按两次 Esc,或者输入 /rewind,打开回退菜单,选择要回到的那一步:
- Restore code and conversation:代码和对话都回到那一步;
- Restore conversation:只回退对话,保留现在的代码;
- Restore code:只回退代码,保留对话。
回退有边界:
- 通过 Bash 命令做的改动(例如
rm、mv、脚本生成的文件)不会被记录,回退不了; - 你自己在 Claude Code 之外手动做的修改也不会被记录。
所以,检查点不能代替 Git。动手做大改动之前,先用 Git 提交一个存档。
跳过权限要非常谨慎
claude --dangerously-skip-permissions 会跳过所有权限确认。只在可以随时丢弃的容器、虚拟机里使用,不要在自己的电脑、生产服务器或存有密钥的目录里使用。网上一些“懒人配置”会默认开启它,复制配置前先看清楚。
操作习惯
- 先用计划模式让它说清方案,确认后再切换模式让它动手。
- 每轮修改后用
git diff查看改动。 - 对删除、覆盖、推送、提权类的命令保持警惕。
- 不要让它读取或输出密钥;把密钥放在环境变量里,并用
deny规则挡住.env文件。