Claude Code永久无审批模式:Windows、Linux、macOS配置与避坑

想让 Claude Code 每次启动都不再反复确认权限,核心只需两项全局配置:permissions.defaultModeskipDangerousModePermissionPrompt

这篇文章分别给出 Windows、Linux、macOS 的操作命令,并说明:目录已存在时为什么命令没有提示、已有配置怎么合并、配置后如何确认真的生效。

1. 先说结论

Claude Code 的无审批模式叫:

bypassPermissions

把下面配置写入用户全局配置文件后,之后直接启动:

claude

就会默认进入无审批模式。

{
  "permissions": {
    "defaultMode": "bypassPermissions"
  },
  "skipDangerousModePermissionPrompt": true
}

注意两个位置:

  • defaultMode 必须在 permissions 里面;
  • skipDangerousModePermissionPrompt 在 JSON 顶层。

写错位置时,Claude Code 通常不会按预期进入无审批模式。

2. 这个模式到底做了什么

bypassPermissions 会跳过绝大多数工具确认,包括:

  • 修改文件;
  • 执行终端命令;
  • 修改 Git、.claude.vscode 等受保护目录中的内容。

它适合自己的本地开发环境、虚拟机或容器。不要在生产服务器、重要数据目录、陌生项目里直接长期使用。

如果只是希望自动改代码,但仍保留一部分保护,可以把模式改成:

{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

3. 配置文件在哪

系统 全局配置文件
Linux ~/.claude/settings.json
macOS ~/.claude/settings.json
Windows %USERPROFILE%\.claude\settings.json

这里的 ~ 表示当前用户的主目录。例如 Linux 用户名是 zhang,那么 ~/.claude/settings.json 实际就是:

/home/zhang/.claude/settings.json

4. Linux 和 macOS:目录不存在才创建

Linux、macOS、WSL 的命令基本一致。

先执行下面这段,它会明确告诉你目录是否已经存在:

if [ -d "$HOME/.claude" ]; then
  echo "目录已存在:$HOME/.claude"
else
  mkdir -p "$HOME/.claude"
  echo "目录已创建:$HOME/.claude"
fi

在这里插入图片描述

为什么很多教程只写 mkdir -p ~/.claude,执行后却没有提示?

这是正常现象。

mkdir -p "$HOME/.claude"

这条命令的逻辑是:

  • 目录不存在:创建 .claude 目录;
  • 目录已经存在:什么也不改,也不报错;
  • 命令成功时:通常不输出任何内容。

其中 -p 的意思是“需要时创建父目录,并且目录已存在也算成功”。

所以,没有提示不代表失败。想确认命令是否成功,可以立刻执行:

ls -ld "$HOME/.claude"

如果能看到目录信息,说明目录已经就绪,如下图
在这里插入图片描述

5. Linux / macOS:编辑全局配置

5.1 先备份已有配置

只有文件已经存在时,才备份:

if [ -f "$HOME/.claude/settings.json" ]; then
  cp "$HOME/.claude/settings.json" "$HOME/.claude/settings.json.bak"
  echo "已备份为:$HOME/.claude/settings.json.bak"
else
  echo "没有旧配置文件,下一步会新建 settings.json"
fi

在这里插入图片描述

5.2 打开配置文件

使用 nano

nano "$HOME/.claude/settings.json"

或者使用 vim

vim "$HOME/.claude/settings.json"

如果这是一个新文件,可以直接写入:

{
  "permissions": {
    "defaultMode": "bypassPermissions"
  },
  "skipDangerousModePermissionPrompt": true
}

nano 的保存方式:

Ctrl + O  →  回车  →  Ctrl + X

vim 的保存方式:

ESC  →  切换英文输入法  → :wq

5.3 已有 settings.json 时,不能直接覆盖

如果你原来已经有其它配置,不要把整个文件替换掉,只需要合并字段。

例如原来是:

{
  "theme": "dark-ansi",
  "permissions": {
    "allow": [
      "Bash(git status)"
    ]
  }
}

改成:

{
  "theme": "dark-ansi",
  "permissions": {
    "allow": [
      "Bash(git status)"
    ],
    "defaultMode": "bypassPermissions"
  },
  "skipDangerousModePermissionPrompt": true
}

不要写出两个 permissions,JSON 同一层级的重复键会导致配置混乱。
在这里插入图片描述

6. Windows:PowerShell 配置方法

建议使用 PowerShell。打开 PowerShell 后依次执行下面命令。

6.1 检查并创建目录

$claudeDir = Join-Path $HOME ".claude"

if (Test-Path -LiteralPath $claudeDir -PathType Container) {
    Write-Host "目录已存在:$claudeDir"
} else {
    New-Item -ItemType Directory -Path $claudeDir | Out-Null
    Write-Host "目录已创建:$claudeDir"
}

在这里插入图片描述

6.2 备份已有配置

$settings = Join-Path $claudeDir "settings.json"

if (Test-Path -LiteralPath $settings -PathType Leaf) {
    Copy-Item -LiteralPath $settings -Destination "$settings.bak" -Force
    Write-Host "已备份为:$settings.bak"
} else {
    Write-Host "没有旧配置文件,下一步会新建 settings.json"
}

6.3 用记事本编辑

notepad $settings

填入或合并下面的配置:

{
  "permissions": {
    "defaultMode": "bypassPermissions"
  },
  "skipDangerousModePermissionPrompt": true
}

保存后关闭记事本即可。

7. Windows:CMD 配置方法

如果你习惯命令提示符(CMD),也可以这样做。

7.1 检查并创建目录

if exist "%USERPROFILE%\.claude\" (
  echo 目录已存在:%USERPROFILE%\.claude
) else (
  mkdir "%USERPROFILE%\.claude"
  echo 目录已创建:%USERPROFILE%\.claude
)

7.2 备份并编辑配置

if exist "%USERPROFILE%\.claude\settings.json" copy "%USERPROFILE%\.claude\settings.json" "%USERPROFILE%\.claude\settings.json.bak"

notepad "%USERPROFILE%\.claude\settings.json"

然后填入第 1 节的 JSON 配置。

8. 重启 Claude Code 并验证

配置文件保存后,退出当前 Claude Code 会话,再重新启动:

claude

进入后执行:

/permissions

查看当前权限模式和配置来源。如果模式显示为 bypassPermissions,说明配置已生效。

也可以在底部状态栏查看当前模式。

9. 配置后仍然无效?按这个顺序检查

9.1 defaultMode 写错层级

错误写法:

{
  "defaultMode": "bypassPermissions"
}

正确写法:

{
  "permissions": {
    "defaultMode": "bypassPermissions"
  }
}

9.2 JSON 格式错误

JSON 不支持:

  • 中文引号;
  • // 注释;
  • 最后一项后面多一个逗号;
  • 同一对象里重复写同名字段。

Linux / macOS 可这样检查:

python3 -m json.tool "$HOME/.claude/settings.json" > /dev/null && echo "JSON 格式正确"

Windows PowerShell 可这样检查:

Get-Content $settings -Raw | ConvertFrom-Json | Out-Null
Write-Host "JSON 格式正确"

9.3 项目配置覆盖了全局配置

当前项目目录下如果存在:

.claude/settings.json
.claude/settings.local.json

可能会覆盖全局配置。最直接的排查方式仍然是进入 Claude Code 后执行:

/permissions

它会列出规则和配置来源。

9.4 Linux / macOS 不要用 root 或 sudo 启动

Claude Code 在 Linux 和 macOS 中,使用 root 或 sudo 时会拒绝进入危险跳过权限模式。这是正常保护机制。

不要这样启动:

sudo claude --dangerously-skip-permissions

正常使用普通用户启动即可:

claude

10. 临时开启与永久开启的区别

只想让本次启动跳过确认:

claude --permission-mode bypassPermissions

或者:

claude --dangerously-skip-permissions

想让以后每次直接 claude 都生效,就使用本文的 settings.json 全局配置方案。

11. 最后提醒

bypassPermissions 省掉的是确认步骤,不代表命令本身没有风险。我的习惯是:

  • 重要项目先提交 Git;
  • 不在生产服务器使用;
  • 不确定删除、覆盖类命令时,先看命令再执行;
  • 多项目或多人共用环境,优先考虑 acceptEdits

Claude Code 的配置和权限模式可能随版本更新,建议以官方文档为准:

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐