如何在使用claude code的时候,不需要一直点yes
- 前言:
- 方法一:推荐方法:给这个项目单独建本地配置
- 这样以后还会问哪些 yes?
- 方法二:用 WSL2 或 Docker / Dev Container 做隔离
- 方案 A:WSL2,更适合 Windows 用户
- 方案 B:Docker / Dev Container,更适合想开 bypass 的人
- WSL2 和 Docker 怎么选?
前言:
我们的方法不是给全盘权限,而是只在自己的当前文件夹下的方法。
如果是下面的方法:
claude--dangerously-skip-permissions或者:
claude--permission-mode bypassPermissions这会跳过几乎所有权限确认。Claude Code 官方明确说bypassPermissions会跳过所有权限提示,只建议在容器或虚拟机这类隔离环境里用。比如WSL2、Docker dev container或VM。
方法一:推荐方法:给这个项目单独建本地配置
先退出 Claude,然后在 PowerShell 里执行:
cd D:\coding\你的文件夹New-Item-ItemType Directory-Force.claude|Out-Nullnotepad.claude\settings.local.json把下面内容粘进去保存:
{"$schema":"https://json.schemastore.org/claude-code-settings.json","permissions":{"allow":["WebSearch","WebFetch","PowerShell(Get-ChildItem *)","PowerShell(Get-Content *)","PowerShell(Select-String *)","PowerShell(Select-Object *)","PowerShell(Format-Table *)","PowerShell(git status*)","PowerShell(git diff*)","PowerShell(git log*)","PowerShell(git branch*)","PowerShell(npm run *)","PowerShell(npm test*)","PowerShell(pnpm *)","PowerShell(yarn *)","PowerShell(node *)","Bash(git status*)","Bash(git diff*)","Bash(git log*)","Bash(git branch*)","Bash(npm run *)","Bash(npm test*)","Bash(pnpm *)","Bash(yarn *)","Bash(node *)","PowerShell(\\(Get-Content \"D:\\\\coding\\\\serenity.skill\\\\A股人工智能公司调研.md\" | Measure-Object -Line\\).Lines)"],"deny":["Read(//**/.env)","Read(//**/.env.*)","Read(//**/secrets/**)","Read(//**/*credential*)","Edit(//**/.env)","Edit(//**/.env.*)","Edit(//**/secrets/**)","Edit(//**/*credential*)","PowerShell(git push*)","PowerShell(Remove-Item *)","PowerShell(Invoke-WebRequest *)","PowerShell(curl *)","PowerShell(wget *)","Bash(git push*)","Bash(rm -rf *)","Bash(curl *)","Bash(wget *)"],"defaultMode":"acceptEdits"}}然后重新启动:
cd D:\coding\你的文件夹 claude进去后检查:
/status你应该能看到类似:
Setting sources: User settings, Project local settingsClaude Code 官方文档说明:.claude/settings.local.json是“只对当前仓库、只对你本人”的本地项目配置,并且创建时会被 git 忽略;/status可以看到当前加载了哪些 settings source。([Claude Code][2])
这样以后还会问哪些 yes?
会少很多,但也不是完全不问。
它会自动做:
修改当前项目里的文件 创建/移动/复制常见文件 运行你允许的 git status / git diff / npm run / pnpm / node 等命令但这些仍然可能问你或直接拒绝:
访问项目外文件 读取 .env / secrets / credential git push Remove-Item rm -rf 未在 allow 里的 shell 命令也就是说,日常改代码不用一直点 yes,但也没有给它全盘权限。
方法二:用 WSL2 或 Docker / Dev Container 做隔离
如果你确实想更少的点yes,或者干脆不点yes,在项目里赋予claude完全的权限:
claude--dangerously-skip-permissions或者:
claude--permission-mode bypassPermissions那可以创建一个隔离环境里,比如:
WSL2 Docker dev container VM 虚拟机核心思路是:
不是让 Claude 在你的整台电脑里自由行动, 而是让它只在一个隔离出来的开发环境里行动。这样即使 Claude 执行了比较激进的命令,影响范围也主要限制在这个 Linux 环境、容器环境,或者当前挂载进去的项目目录里。
方案 A:WSL2,更适合 Windows 用户
WSL2 可以理解成 Windows 里的一个 Linux 开发环境。你可以把项目放在 WSL2 里面,然后在 WSL2 终端里安装和运行 Claude Code。
先在 PowerShell 里安装 WSL2:
wsl--install-d Ubuntu安装完成后重启电脑,打开 Ubuntu,更新一下环境:
sudoaptupdate&&sudoaptupgrade-y然后在 WSL2 里安装 Claude Code:
curl-fsSLhttps://claude.ai/install.sh|bash接着把项目放到 WSL2 自己的 Linux 目录里,例如:
mkdir-p~/codingcd~/codinggitclone 你的仓库地址cd你的项目 claude更推荐这种路径:
~/coding/your-project不太推荐一开始就直接操作:
/mnt/c/Users/你的用户名/Desktop /mnt/d/coding/你的项目因为/mnt/c、/mnt/d是 Windows 磁盘挂载进 WSL2 的路径,Claude 如果在这些目录里运行,实际还是能影响到你的 Windows 文件。
如果只是普通日常开发,可以在 WSL2 项目里继续使用前面的方法一,也就是.claude/settings.local.json。
如果你已经确认这个 WSL 环境只放当前项目,没有重要私密文件,再考虑:
claude --permission-mode bypassPermissions或者:
claude --dangerously-skip-permissions方案 B:Docker / Dev Container,更适合想开 bypass 的人
Docker / Dev Container 的隔离更明确:Claude、node、npm、git、测试命令都在容器里执行,而不是直接在宿主机里执行。
如果你用 VS Code,可以在项目根目录新建:
.devcontainer/devcontainer.json写入一个最小配置:
{"image":"mcr.microsoft.com/devcontainers/base:ubuntu","features":{"ghcr.io/anthropics/devcontainer-features/claude-code:1.0":{}}}然后在 VS Code 里执行:
Dev Containers: Reopen in Container或者:
Dev Containers: Rebuild Container进入容器后,在 VS Code 的集成终端里运行:
claude第一次会要求登录。登录完成后,Claude Code 就是在容器里运行了。
这时再使用:
claude --dangerously-skip-permissions会比直接在宿主机上安全很多,因为它能直接影响的主要是容器环境和你挂载进去的项目目录。
但注意:这不等于绝对安全。
不要把这些东西挂进容器:
~/.ssh ~/.aws ~/.azure ~/.config/gcloud .env secrets credential 文件 整个 C 盘或 D 盘更好的做法是:
只挂载当前项目目录 只给短期 token 不要给宿主机密钥 不要把私人文件夹挂进去WSL2 和 Docker 怎么选?
简单说:
只是 Windows 上舒服地开发:选 WSL2 想更适合开启 bypassPermissions:选 Docker / Dev Container 想最大隔离:选 VM 虚拟机我个人建议:
日常开发:方法一,项目级 settings.local.json Windows 用户:方法一 + WSL2 想开 dangerously-skip-permissions:Docker / Dev Container 或 VM不要把--dangerously-skip-permissions当成日常默认选项。
它适合的是“已经隔离好的环境”,不是你的主力系统。