新手上路(一):CC-Switch使用Claude Code 每步都要确认?一文讲透六种权限模式,开 Auto 让它自己干!

Windows 10/11 · DeepSeek V4 Pro / Anthropic 兼容 API · CC-Switch ≥ v3.14.0 · Claude Code CLI ≥ v2.0 · 2026-04-30

一、这篇教程解决什么问题·国内如何能够使用Claude code Cli的Auto模式

一句话定位 :在《梦开始的地方:Claude Code 在 Windows & DeepseekV4Pro上的国内环境安装与调试指南 - 掘金》已完成基础环境配置的前提下,

1.Claude Code 每执行一步都弹出确认框,开发效率被权限提示打断到崩溃? 本文从机制层面拆解 Claude Code 的六种权限模式(Default / Plan / AcceptEdits / Auto / DontAsk / Bypass),讲清每种模式的行为边界、安全分类器原理和三层配置优先级。

2.重点解决国内 DeepSeek 用户的核心痛点:通过 CC-Switch 本地路由,在非 Anthropic 官方模型上也能激活 Auto 模式,让 Claude Code 从"步步请示"变成"自主执行"。

3.** 附 6 个真实 Debug 场景的五段式排错**,覆盖 VSCode 扩展与 CLI 行为差异、settings.json 配置冲突、企业策略覆盖等常见问题。深入理解六种权限模式的工作原理、差异和适用场景,掌握 settings.json 精细控制与 CC-Switch 可视化管理两种配置路径,让使用 DeepSeek V4 Pro 等第三方模型的用户也能开启 Auto 模式。


为什么我的Claude Code Cli像一个智障?什么都要问我!DeepSeek 用户必看:Claude Code Auto 模式怎么开?CC-Switch 一键搞定权限配置


阅读前提(可逐条验证):

  • 已完成《Node.js + Claude Code 国内环境安装教程》的全部步骤,claude 命令可正常启动
  • C:\Users\<用户名>\.claude\settings.json 已配置且 API 连通(/model 显示 deepseek-v4-pro
  • 已安装 CC-Switch 桌面应用(系统托盘可见)
powershell 复制代码
claude --version    # 应输出 v2.0.xx 或更高

读完能得到什么

  • 六种模式的精确行为边界、CLI 参数、配置字段名(不是 "ask mode" 之类不存在的叫法)
  • Auto 模式的三层分类器架构原理------知道它"为什么安全"而非只知道"怎么开"
  • [通过 CC-Switch 本地路由在 DeepSeek V4 Pro 上激活 Auto 模式的完整步骤](#通过 CC-Switch 本地路由在 DeepSeek V4 Pro 上激活 Auto 模式的完整步骤 "#local-routing-auto-mode")
  • 六种真实 Debug 场景的五段式排错(含 VSCode 扩展与 CLI 的行为差异)
  • 企业管理员禁用特定模式的托管策略机制

二、前置知识速览

本教程假定以下文件已经存在且正确配置(详见《梦开始的地方:Claude Code 在 Windows & DeepseekV4Pro上的国内环境安装与调试指南 - 掘金》第 3.6 节):

文件一C:\Users\<用户名>\.claude.json

json 复制代码
{
  "hasCompletedOnboarding": true
}

文件二C:\Users\<用户名>\.claude\settings.json(基础配置,未涉及权限模式)

json 复制代码
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
    "ANTHROPIC_AUTH_TOKEN": "sk-你的DeepSeek-API-Key",
    "ANTHROPIC_MODEL": "deepseek-v4-pro",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash",
    "ANTHROPIC_SMALL_FAST_MODEL": "deepseek-v4-flash",
    "CLAUDE_CODE_EFFORT_LEVEL": "max",
    "API_TIMEOUT_MS": "3000000"
  },
  "model": "deepseek-v4-pro"
}

本文后续所有权限配置都是在这个基础配置文件之上追加 "permissions" 块,不要覆盖已有的 "env""model" 字段。


三、配置文件层级(settings.json 优先级体系)

在开始配置权限之前,先理解配置文件的多层覆盖关系。Claude Code 加载配置时按以下顺序,后者覆盖前者

层级 文件路径 (Windows) 用途 谁控制
① 用户全局 C:\Users\<用户名>\.claude\settings.json 所有项目共享的默认值 用户
② 项目共享 <项目根>\.claude\settings.json 团队共享,可提交 Git 项目
③ 本地覆盖 <项目根>\.claude\settings.local.json 个人偏好,应加入 .gitignore 用户
④ CLI 参数 启动时传入 临时覆盖,仅当前会话 用户
⑤ 企业托管 C:\Program Files\ClaudeCode\managed-settings.json IT 管理员下发,不可被覆盖 管理员

⑤ 仅在企业部署场景中存在。个人用户只有 ①~④ 四个层级。

macOS 托管策略路径:/Library/Application Support/ClaudeCode/managed-settings.json

Linux/WSL 托管策略路径:/etc/claude-code/managed-settings.json


四、六种权限模式深度解析

4.1 模式总览表

模式 CLI 启动方式 defaultMode 读文件 写文件 执行命令 安全护栏
Default claude(默认) "default" 自动 每次提示 每次提示 完整
Accept Edits --permission-mode acceptEdits "acceptEdits" 自动 自动* 每次提示 完整
Plan --permission-mode plan "plan" 自动 禁止 禁止 只读保证
Dont Ask --permission-mode dontAsk "dontAsk" 看规则 看规则 看规则** 仅预批准
Auto --permission-mode auto --enable-auto-mode "auto" 自动 项目内自动 AI 分类器 Sonnet 4.6 分类器
Bypass --dangerously-skip-permissions "bypassPermissions" 自动 自动 自动 零护栏

* Accept Edits 模式下,对受保护目录(.git.claude.vscode.idea.husky)的写入仍会提示确认。

** Dont Ask 模式下,不在 allow 列表中的命令被静默拒绝(不提示,直接跳过)。这是它与 Default 模式的关键区别。

bypassPermissions 对受保护目录的写入也仍会提示确认(取决于版本)。

4.2 模式逐一说明


模式 1:Default(默认模式)

精确行为 :读取类操作(ReadGlobGrep)自动通过;写入(EditWriteMultiEdit)和执行(Bash)每次都弹出确认提示。首次使用某工具时额外显示工具说明。

适用场景:新手、不熟悉的代码库、安全敏感项目。

启动

powershell 复制代码
claude
# 状态栏显示 "default"

settings.json 显式配置(不写也是这个):

json 复制代码
{
  "permissions": {
    "defaultMode": "default"
  }
}

模式 2:Accept Edits(接受编辑模式)

精确行为 :文件读取和项目内文件编辑自动批准;受保护目录(.git.claude.vscode.idea.husky)的写入仍需确认;所有 Bash 命令仍每次提示。

适用场景:日常开发中最常用的模式。编辑代码无需频繁确认,但危险命令仍被拦截。Anthropic 推荐的日常开发默认模式。

启动

powershell 复制代码
claude --permission-mode acceptEdits

settings.json 配置:

json 复制代码
{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

Accept Edits 是日常开发的"甜点区"------编辑不打断思路,但 rm -rfgit push --force 等命令仍然需要你手动确认。


模式 3:Plan(计划模式)

精确行为完全只读 。Claude 可以读取和分析代码,但不能做任何修改或执行任何命令。EditWriteBash 等所有写入/执行类工具全部禁用。

适用场景:代码审查、架构探索、评估陌生代码库、审阅 PR。

启动

powershell 复制代码
claude --permission-mode plan

或在交互会话中输入斜杠命令:

bash 复制代码
/plan

settings.json 配置:

json 复制代码
{
  "permissions": {
    "defaultMode": "plan"
  }
}

模式 4:Dont Ask(不询问模式)

精确行为只有 permissions.allow 白名单中的操作会被静默执行。不在白名单中的操作被直接拒绝,不弹出提示。 这与很多人以为的"全自动通过"完全不同------它是一个严格的白名单执行模式。

适用场景:受限执行环境、CI/CD 管道、给新人用的安全沙箱。适合"只让 Claude 做特定几件事"的场景。

启动

powershell 复制代码
claude --permission-mode dontAsk

settings.json 配置:

json 复制代码
{
  "permissions": {
    "defaultMode": "dontAsk",
    "allow": [
      "Read",
      "Glob",
      "Grep",
      "Edit(./src/**)",
      "Write(./src/**)",
      "Bash(git status)",
      "Bash(git diff)",
      "Bash(npm test)",
      "Bash(npm run build)"
    ],
    "deny": [
      "Bash(rm *)",
      "Bash(curl *)",
      "Bash(sudo *)"
    ]
  }
}

关键区别Dont Ask != Bypass。Dont Ask 下未批准的操作会失败(不会执行),Bypass 下所有操作都会执行。


模式 5:Auto(自动模式)★ 核心章节

Auto 模式是 Anthropic 于 2026 年 3 月 推出的新权限模式,目标是在"手动逐条审批(Default)"和"完全跳过权限(Bypass)"之间提供安全中间档。

技术架构:三层决策 + 两阶段分类器

三层过滤管道(Tier 1 → Tier 2 → Tier 3)

bash 复制代码
操作请求
  │
  ├─ Tier 1:固定白名单
  │   包含:Read、Glob、Grep、Todo、Plan 模式切换
  │   → 直接通过,零延迟
  │
  ├─ Tier 2:项目内编辑
  │   包含:当前工作目录内的 Write、Edit(可被 Git 审查)
  │   → 直接通过,不经分类器
  │
  └─ Tier 3:Transcript Classifier(AI 分类器)
      包含:Shell 命令、网络请求、外部工具、子 Agent、项目目录外操作
      │
      ├─ Stage 1:快速单 token 过滤(yes/no)
      │   指令偏向"宁可误拦",多数操作在此判定为安全
      │
      └─ Stage 2:Chain-of-thought 推理
          仅 Stage 1 标记为可疑时触发
          完整推理链重新评估,减少误判
关键设计:Reasoning-Blind(推理盲区)

分类器只能看到两样东西:

  1. 用户的原始消息(user messages)
  2. Agent 产生的工具调用(tool calls)

分类器看不到

  • Claude 自己的文本输出/推理过程
  • 工具执行结果(tool outputs)
  • 文件内容

为什么这样设计? 如果分类器能读到 agent 的推理过程,恶意注入的内容可能通过 agent 的"说服性推理"操纵分类器放行危险操作。剥离推理层后,分类器纯粹基于"用户要求了什么 vs 即将执行什么"来判断,形成结构性防御。

分类器判断三要素(自然语言规则,非正则匹配)
判断维度 分类器问的问题
任务范围偏离 这个操作是否超出了用户实际请求的范围?
目标可信度 是否在尝试操作分类器无法验证为可信的基础设施?
意图转变 是否有迹象表明 Claude 被它读取的内容影响(prompt injection)?
默认拦截行为

分类器内置 20+ 条自然语言规则,分四大类:

类别 拦截示例
破坏/泄露 force push 覆盖历史、批量删除云存储、向外部发送内部数据
降低安全态势 禁用日志、安装持久化后门(SSH key / cronjob)、修改 agent 自身权限配置
跨越信任边界 运行从外部仓库克隆的代码、扫描凭证存储、向用户未指定的服务发送数据
绕过审查 直接推送到 main、执行生产部署、修改共享基础设施

默认放行:项目内文件操作、只读 HTTP 请求、lockfile 中已声明的依赖安装、读取 .env 并将凭证仅发送到对应 API。

回退机制
触发条件 行为
分类器连续拦截 3 次 退回人工确认模式
同一会话内总计拦截 20 次 退回人工确认模式
非交互模式(claude -p)触发回退 会话直接中止

手动批准一个操作后,计数器重置。

性能数据(Anthropic 官方公开)
指标 数值
误拦合法操作(False Positive) 0.4%
漏拦过度操作(False Negative) 17%(Anthropic 称"诚实的数字")
对比:人类审批者疲劳不看就批 93%

0.4% 的误拦率意味着约每 250 次操作遇到一次不必要的拦截;17% 的漏拦率意味着仍有约 1/6 的过度操作未被拦截------Auto 模式是安全辅助,不是安全保证。

启动方式
powershell 复制代码
# 首次启用(需要 --enable-auto-mode,一次性注册分类器)
claude --enable-auto-mode

# 此后可以直接指定模式启动
claude --permission-mode auto

# 交互会话中按 Shift+Tab 循环到 auto

settings.json 持久化:

json 复制代码
{
  "permissions": {
    "defaultMode": "auto"
  }
}

限制:Auto 模式仅支持 Anthropic 官方 Claude 模型(Sonnet 4.6、Opus 4.6)。使用 DeepSeek V4 Pro 等第三方模型时,需要通过 CC-Switch 的本地路由功能启用(见第六章)。


模式 6:Bypass Permissions(绕过权限)⚠️

精确行为所有权限检查完全关闭。每个工具调用都自动批准,不经过任何安全检查。这是最高权限模式。

适用场景:CI/CD 流水线(无人值守)、Docker 沙箱容器(无生产环境访问)、完全信任的自动化任务。

启动

powershell 复制代码
# 方式一
claude --dangerously-skip-permissions

# 方式二
claude --permission-mode bypassPermissions

settings.json 配置:

json 复制代码
{
  "permissions": {
    "defaultMode": "bypassPermissions"
  }
}

⚠️ 警告

  • Claude 可以删除分支、修改任意文件、执行任意命令
  • Anthropic 官方建议仅在隔离的沙箱环境中使用
  • 管理员可通过 "permissions.disableBypassPermissionsMode": "disable" 在企业托管策略中全局禁用
  • 不要在连接生产环境或包含敏感数据的机器上使用

4.3 模式切换方式汇总

切换方式 操作 持久性
交互会话中循环切换 Shift+Tab(Windows 上也可 Alt+M 仅当前会话
斜杠命令 /plan 进入计划模式 仅当前会话
CLI 启动参数 --permission-mode <模式名> 仅当次启动
settings.json 持久化 "permissions.defaultMode": "<模式名>" 永久
CC-Switch GUI 下拉菜单 配置Json 永久(写入 settings.json)

五、权限规则精细控制(allow / ask / deny)

5.1 优先级

复制代码
deny > ask > allow

一个操作如果同时匹配 allowdeny 规则,deny 生效。规则顺序无影响------只按类型优先级判断。

5.2 规则语法

规则类型 语法 示例
工具级匹配 工具名 Read 匹配所有读操作
精确参数匹配 工具名(参数) Bash(git status)
通配符 * 匹配任意字符串 Bash(git *) 匹配所有 git 命令
路径通配符 ** 匹配任意层级 Edit(./src/**)
绝对路径 //C:/Users/... Read(//C:/Users/<用户名>/.ssh/**)
Home 目录 ~/** Read(~/.ssh/**)
相对路径 相对当前工作目录 Read(./.env)

5.3 完整配置示例

文件:C:\Users\<用户名>\.claude\settings.json(在已有的 "env""model" 之外追加 "permissions"

json 复制代码
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
    "ANTHROPIC_AUTH_TOKEN": "sk-你的DeepSeek-API-Key",
    "ANTHROPIC_MODEL": "deepseek-v4-pro",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash",
    "ANTHROPIC_SMALL_FAST_MODEL": "deepseek-v4-flash",
    "CLAUDE_CODE_EFFORT_LEVEL": "max",
    "API_TIMEOUT_MS": "3000000"
  },
  "model": "deepseek-v4-pro",
  "permissions": {
    "defaultMode": "acceptEdits",
    "allow": [
      "Read",
      "Glob",
      "Grep",
      "Edit(./src/**)",
      "Write(./src/**)",
      "MultiEdit(./src/**)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git add *)",
      "Bash(git commit *)",
      "Bash(npm test)",
      "Bash(npm run build)",
      "Bash(npm run lint)",
      "Bash(node --version)",
      "Bash(ls *)",
      "Bash(cat *)"
    ],
    "ask": [
      "Bash(git push *)",
      "Bash(npm publish *)",
      "Bash(docker *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(sudo *)",
      "Bash(curl *)",
      "Bash(wget *)",
      "Bash(shutdown *)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Read(~/.ssh/**)",
      "Edit(./.env*)",
      "WebFetch"
    ]
  }
}

六、CC-Switch 集成:GUI 管理权限 + 本地路由解锁 Auto 模式

6.1 CC-Switch 与手动配置的关系

CC-Switch 本质上是一个图形化的 settings.json 编辑器 。它修改的也是 C:\Users\<用户名>\.claude\settings.json。所有数据存储在本地 SQLite 数据库,不上传。

两种方式的关系:

  • 如果你已经手动编辑了 settings.json,CC-Switch 启动后自动识别已有配置
  • CC-Switch 的 Provider 配置会覆盖 env 相关字段
  • 权限相关字段(permissions)由对应设置面板控制
  • 如果你两边都做了修改,以最后写入的为准

6.2 在 CC-Switch GUI 中设置权限模式

  1. 打开 CC-Switch 桌面应用
  2. 选择一个实例,编辑它
  3. 进入 Claude Code 配置区(配置 JSON)
  4. 手动加入配置:Default / Accept Edits / Plan / Dont Ask / Auto / Bypass Permissions

修改立即生效,无需重启 Claude Code(热切换)。下次 claude 启动时自动读取。

6.3 核心功能:本地路由(Local Routing)解锁 Auto 模式 ★

问题

Auto 模式的 Sonnet 4.6 分类器是 Anthropic 服务端的组件。当 ANTHROPIC_BASE_URL 指向 DeepSeek 等第三方端点时,服务端无法执行分类逻辑,Auto 模式被自动降级为 Accept Edits。

CC-Switch 的解决方案

CC-Switch 的本地路由 功能(v3.14.0 前称"本地代理接管")在本地启动一个 HTTP 代理,对请求/响应做重写,让 Claude Code 客户端以为自己在跟真正的 Claude 模型通信,从而启用 Auto 模式。分类器判断仍在本地客户端侧完成。

原理

css 复制代码
Claude Code 客户端
  │
  ├─ 权限模式检查:"我在跟 Claude 模型对话吗?"
  │   如果 ANTHROPIC_BASE_URL 指向第三方 → 降级
  │   如果指向本地代理 → 通过检查,启用 Auto
  │
  └─ 请求发出后:
       Claude Code → 本地代理 (127.0.0.1:15721) → DeepSeek API
       本地代理对请求头做重写,让客户端认为在跟 Claude 通信

关键理解:本地路由不是"欺骗分类器"------它只是让客户端通过模型检查。Auto 模式的分类判断在客户端本地完成,不需要 Anthropic 服务端参与。

操作步骤

步骤 1 --- 打开 CC-Switch 设置

  1. CC-Switch 主面板左上角,点击 齿轮图标(设置)
  2. 点击 路由
  3. 选择本地路由

步骤 2 --- 启用应用接管

  1. 在路由面板中,找到 路由总开关
  2. 开启 Claude 开关
  3. CC-Switch 自动修改 settings.json,将 API 端点指向本地代理
  4. 确认 Local Routing(本地路由) 开关为开启状态

步骤 3 --- 启动 Claude Code

powershell 复制代码
claude --permission-mode auto --enable-auto-mode    # Auto(首次一定要用这个命令)

后续可以使用CC switch启动

步骤 4 --- 验证

查看状态栏,应显示 auto

或者在 Claude Code 内执行一个 Tier 3 操作(如 WebFetch 抓取网页)------如果能无需确认直接执行,说明 Auto 模式已生效。

⚠️ 重要限制(v3.14.0+) :CC-Switch 在本地路由激活时会自动阻止切换到 Anthropic 官方 Provider,以防止请求经过重写后到达 Anthropic 服务器导致账号封禁风险。这是预期行为,不是 Bug。需要使用官方 Provider 时,先关闭本地路由再切换。

6.4 代理参数配置

参数 默认值 说明
监听地址 127.0.0.1 仅本地可访问,安全性好
监听端口 15721 可修改(端口冲突时)
最大重试 3 单次请求失败重试次数
请求超时 120 大文件操作时建议保持

七、Debug #1 --- Auto 模式无法启用(状态栏不显示 Auto)

报错现象

启动命令 claude --permission-mode auto 后,状态栏显示的仍是 acceptEditsdefault。或者直接报错:

vbnet 复制代码
Auto mode is not available with the current model provider.
Auto mode requires Anthropic's official Claude models.

根因

Claude Code 客户端在启动时检查当前 API 端点是否是 Anthropic 官方服务。当 ANTHROPIC_BASE_URL 指向 https://api.deepseek.com/anthropic 等第三方端点时,客户端判定"非 Claude 模型",拒绝启用 Auto 模式。CC-Switch 本地路由通过将 ANTHROPIC_BASE_URL 重写为 http://127.0.0.1:15721 绕过此检查------但如果代理未启动或接管未生效,检查不通过。

检查链条:

  1. --permission-mode auto 是否传入了?
  2. CC-Switch Proxy 是否显示绿色运行状态?
  3. App Takeover → Claude 开关是否开启?
  4. 本地路由开关是否开启?
  5. settings.json 中的 ANTHROPIC_BASE_URL 是否已被 CC-Switch 修改为 http://127.0.0.1:15721

一览对比表

对比维度 修复前 修复后
ANTHROPIC_BASE_URL https://api.deepseek.com/anthropic http://127.0.0.1:15721(CC-Switch 自动改)
CC-Switch Proxy 状态 未启动 / 灰色 绿色 Running
App Takeover - Claude 关闭 开启
权限模式 降级为 acceptEdits Auto 正常

代码修复

如果 CC-Switch 代理已启动但 settings.json 没有被自动修改,手动确认:

文件:C:\Users\<用户名>\.claude\settings.json

json 复制代码
{
  "env": {
    "ANTHROPIC_BASE_URL": "http://127.0.0.1:15721",
    ...其他字段保持不变...
  }
}

注意这是调试手段。正常情况下 CC-Switch 会自动管理这个值------启动代理时改,停止代理时还原。手动改了之后如果停止代理,CC-Switch 可能无法正确还原。

验证

powershell 复制代码
# 确认代理端口在监听
Test-NetConnection -ComputerName 127.0.0.1 -Port 15721
# 预期:TcpTestSucceeded : True

# 启动后检查状态栏
claude --permission-mode auto
# 状态栏应显示 [auto]

八、Debug #2 --- 本地路由开启后无法切换到 Anthropic 官方 Provider

报错现象

在 CC-Switch 中尝试切换到 Anthropic 官方 Provider 时操作被阻止,界面提示无法切换。

根因

CC-Switch v3.14.0 引入的保护机制:本地路由修改了请求特征(headers 重写),如果这些修改后的请求到达 Anthropic 官方服务器,可能被识别为异常流量,触发安全风控甚至账号封禁。因此 CC-Switch 在本地路由激活时主动阻止切换到官方 Provider,而非技术上做不到。

一览对比表

对比维度 需要 Auto 模式(第三方模型) 需要 Anthropic 官方
本地路由 开启 必须关闭
App Takeover - Claude 开启 必须关闭
Provider 可选项 仅第三方 Provider 任意

操作步骤

如果要切回 Anthropic 官方

  1. CC-Switch Proxy 面板 → 停止代理
  2. 关闭 App Takeover → Claude 开关
  3. 现在可以切换到 Anthropic 官方 Provider

如果只是要用第三方模型的 Auto 模式: 无需任何操作------这是 CC-Switch 的保护行为,继续使用当前配置即可。


九、Debug #3 --- Bypass 或 Auto 模式被管理员禁用

报错日志

vbnet 复制代码
Error: bypassPermissions mode has been disabled by your administrator.

或启动时 --permission-mode auto 被拒绝,Auto 选项从 Shift+Tab 循环中消失。

根因

企业 IT 管理员通过 C:\Program Files\ClaudeCode\managed-settings.json 下发了禁用策略。该文件的优先级高于所有用户级和项目级配置,无法被覆盖。相关配置字段有两个:

配置 作用
"permissions.disableBypassPermissionsMode": "disable" 禁用 Bypass,从 Shift+Tab 中移除
"disableAutoMode": "disable" 禁用 Auto,从 Shift+Tab 中移除

一览对比表

对比维度 用户配置 企业托管策略
文件位置 .claude/settings.json / .claude/settings.local.json C:\Program Files\ClaudeCode\managed-settings.json
可修改 否(需管理员权限)
优先级 低于托管策略 最高

替代方案

如果 Bypass 被禁用但需要自动化,用 Accept Edits + 细粒度 allow 列表替代:

json 复制代码
{
  "permissions": {
    "defaultMode": "acceptEdits",
    "allow": [
      "Read", "Glob", "Grep",
      "Edit(./src/**)",
      "Write(./src/**)",
      "Bash(git status)",
      "Bash(git diff)",
      "Bash(npm test)",
      "Bash(npm run build)"
    ]
  }
}

验证

powershell 复制代码
# 检查是否存在企业托管策略
Test-Path "C:\Program Files\ClaudeCode\managed-settings.json"
# 如果返回 True,用 Get-Content 查看内容确认

十、Debug #4 --- Dont Ask 模式下操作被静默拒绝

报错现象

Dont Ask 模式下,Claude 试图执行某个不在 allow 列表中的操作时,操作被跳过但没有提示。Claude 可能回复"I cannot perform that operation"或直接转入下一个操作,没有明确的权限错误信息。

根因

Dont Ask 模式的设计哲学是"不询问"------对于不在白名单中的操作,它不会弹出确认提示(那等于"询问"),而是直接拒绝。这与 Default 模式的行为截然不同(Default 会弹出确认提示让你决定)。很多用户误以为 Dont Ask = Bypass(全自动通过),实际上它们是相反的------Dont Ask 是严格白名单模式,Bypass 是零护栏模式。

一览对比表

对比维度 Dont Ask(实际行为) Dont Ask(常见误解) Default
allow 列表中的操作 静默执行 静默执行 首次提示
allow 列表外的操作 静默拒绝 自动执行(误解) 弹出提示
提示频率 零(不询问 = 不提示) --- 每次未批准操作

代码修复

如果某个操作被静默拒绝但你希望它自动执行,将其加入 allow 列表:

json 复制代码
{
  "permissions": {
    "allow": [
      "Bash(git status)",
      "Bash(git diff)",
      "Bash(git log)"
    ]
  }
}

规则按 deny > ask > allow 优先级判断,确保该操作不在 deny 列表中。

如果希望被拒绝时有提示而非静默跳过,不应该用 Dont Ask------用 Default 或 Accept Edits 模式。

验证

在 Claude Code 中执行一个已知在 allow 列表外的命令:

markdown 复制代码
> Run git branch

Dont Ask 下应直接拒绝执行(无提示);Default 下应弹出确认提示。


十一、Debug #5 --- Shift+Tab 切换模式无反应(Windows)

报错现象

在 Claude Code 交互会话中按 Shift+Tab,当前模式没有切换。

根因

Windows 上部分键盘布局/终端模拟器中 Shift+Tab 被系统或终端占用(例如 Windows Terminal 中用于切换选项卡)。Claude Code 提供了备用快捷键 Alt+M

一览对比表

对比维度 Shift+Tab Alt+M
默认用途 Claude Code 模式切换 Claude Code 模式切换(备用)
冲突场景 Windows Terminal 选项卡切换、某些输入法 较少冲突
推荐 日常使用 冲突时备用

操作

直接按 Alt+M 替代 Shift+Tab,循环顺序:

scss 复制代码
default → acceptEdits → plan → auto(如已启用) → bypassPermissions(如已启用) → default

如果 Auto 或 Bypass 被企业策略禁用,它们会从循环中跳过。

验证

Alt+M 后观察状态栏模式标识是否变化。


十二、Debug #6 --- VSCode 扩展中 bypassPermissions 不生效

报错现象

在 VSCode 中使用 Claude Code 扩展,settings.json 配置了 "defaultMode": "bypassPermissions" 或启动时传了 --dangerously-skip-permissions,但命令执行时仍然弹出确认提示。

根因

VSCode 扩展和 CLI 有两套独立的权限控制通道 。CLI 读取 settings.json 中的 permissions 配置;VSCode 扩展有自己的扩展设置项,需要单独配置:

设置项 作用
claudeCode.allowDangerouslySkipPermissions 允许扩展使用 bypass 模式(需设为 true
claudeCode.initialPermissionMode 扩展的初始权限模式(设为 "bypassPermissions"

只配了 settings.json 而没配 VSCode 扩展设置,bypass 不会在扩展中生效。这是两个独立配置层,不是 Bug------但文档中不够显眼,导致社区大量反馈(GitHub Issue #12604#15921)。

一览对比表

对比维度 CLI VSCode 扩展
权限配置来源 .claude/settings.json VSCode 扩展设置 (settings.json)
bypass 开关 --dangerously-skip-permissions claudeCode.allowDangerouslySkipPermissions: true
配置写法 JSON "permissions.defaultMode" VSCode UI 或 JSON 设置

代码修复

VSCode settings.json(Code → Preferences → Settings → 搜索 "Claude Code"):

json 复制代码
{
  "claudeCode.allowDangerouslySkipPermissions": true,
  "claudeCode.initialPermissionMode": "bypassPermissions"
}

验证

在 VSCode 中使用 Claude Code 执行一个命令(如 git status),不应再弹出确认提示。


十三、日常维护

13.1 模式切换速查

powershell 复制代码
# 临时启动指定模式
claude                                              # Default
claude --permission-mode acceptEdits                # Accept Edits
claude --permission-mode plan                       # Plan(只读)
claude --permission-mode dontAsk                    # Dont Ask
claude --permission-mode auto --enable-auto-mode    # Auto(首次)
claude --permission-mode auto                       # Auto(后续)
claude --dangerously-skip-permissions                # Bypass

# 交互会话中:Alt+M 或 Shift+Tab 循环切换
# 斜杠命令:/plan 进入计划模式

13.2 更新组件

powershell 复制代码
# Claude Code
npm update -g @anthropic-ai/claude-code --registry=https://registry.npmmirror.com

# CC-Switch
# 应用内自动更新提示,或从 https://github.com/farion1231/cc-switch/releases 下载

# Node.js
nvm install 22
nvm use 22

13.3 日志位置

日志类型 路径 关键搜索词
Claude Code 权限日志 C:\Users\<用户名>\.claude\logs\ permission, auto mode, classifier
CC-Switch 代理日志 C:\Users\<用户名>\AppData\Roaming\cc-switch\logs\ proxy, routing, error
powershell 复制代码
# Claude Code 权限相关日志
findstr /i "permission" C:\Users\%USERNAME%\.claude\logs\*.log

# CC-Switch 代理相关日志
findstr /i "proxy" C:\Users\%USERNAME%\AppData\Roaming\cc-switch\logs\*.log

13.4 已知安全漏洞提醒

CVE / 问题 严重度 影响版本 修复版本
GHSA-qxfv-fcpc-w36x(命令解析绕过确认提示) HIGH (CVSS 8.7) < v1.0.105 v1.0.105+
backslash-escaped flag 权限绕过 HIGH < v2.1.98 v2.1.98+
Compound Bash 命令绕过强制权限提示 MEDIUM < v2.1.98 v2.1.98+

定期 npm update -g @anthropic-ai/claude-code 以确保安全补丁到位。


十四、速查卡

14.1 文件路径汇总

文件 绝对路径
用户全局设置 C:\Users\<用户名>\.claude\settings.json
登录跳过标记 C:\Users\<用户名>\.claude.json
项目共享设置 <项目根>\.claude\settings.json
本地个人覆盖 <项目根>\.claude\settings.local.json
企业托管策略 (Windows) C:\Program Files\ClaudeCode\managed-settings.json
企业托管策略 (macOS) /Library/Application Support/ClaudeCode/managed-settings.json
Claude Code 日志 C:\Users\<用户名>\.claude\logs\
CC-Switch 安装目录 C:\Program Files\CC-Switch\
CC-Switch 数据目录 C:\Users\<用户名>\AppData\Roaming\CC-Switch\
CC-Switch 日志 C:\Users\<用户名>\AppData\Roaming\cc-switch\logs\

14.2 关键配置字段速查

配置字段 可选值 / 示例 说明
permissions.defaultMode "default" / "acceptEdits" / "plan" / "dontAsk" / "auto" / "bypassPermissions" 默认权限模式
permissions.allow ["Read", "Bash(git *)"] 自动批准的操作白名单
permissions.ask ["Bash(git push *)"] 始终提示确认的操作列表
permissions.deny ["Bash(rm *)", "Read(./.env*)"] 始终拒绝的操作黑名单
permissions.disableBypassPermissionsMode "allow" / "disable" 企业管理员禁用 bypass
disableAutoMode "allow" / "disable" 企业管理员禁用 auto
allowManagedPermissionRulesOnly true / false 仅允许托管层定义的权限规则

14.3 常见报错 → 解决方案映射

报错特征 解决方案 详见
Auto 模式不生效 / 状态栏显示降级 CC-Switch 启动代理 + 开启本地路由 + App Takeover Debug #1
本地路由开启后无法切 Anthropic 官方 v3.14.0 保护机制,先关本地路由再切换 Debug #2
bypassPermissions mode has been disabled 管理员策略限制,改用 Accept Edits + allow 白名单 Debug #3
Dont Ask 下操作静默不执行 需加入 permissions.allow------Dont Ask ≠ Bypass Debug #4
Shift+Tab 切换没反应 (Windows) 改用 Alt+M Debug #5
VSCode 中 Bypass 不生效 配 VSCode 扩展专属设置 claudeCode.allowDangerouslySkipPermissions Debug #6
Permission denied: Bash(...) 检查 deny 列表是否拦截,deny 优先级高于 allow 第五章
CC-Switch 代理端口 15721 被占用 Proxy 设置中改端口,或关掉占用端口的程序 第六章

14.4 模式选择决策树

scss 复制代码
需要执行 Shell 命令吗?
├── 不需要(只看代码/分析/审查)
│   └── Plan 模式(只读,零风险)
│
└── 需要
    ├── 是否完全信任当前环境(CI/CD/隔离沙箱)?
    │   └── 是 → Bypass Permissions(零护栏)
    │
    ├── 是否使用 Anthropic 官方 Claude 模型?
    │   └── 是 → Auto 模式(分类器自动判断)
    │
    ├── 是否使用 DeepSeek/GLM 等第三方模型但想开 Auto?
    │   └── 是 → CC-Switch 本地路由 + Auto 模式
    │
    ├── 是否只想让 Claude 做白名单内的事?
    │   └── 是 → Dont Ask + allow 列表(严格白名单)
    │
    ├── 不想每次编辑都确认但命令还是要批?
    │   └── 是 → Accept Edits(日常推荐)
    │
    └── 不确定 → Default(最安全)

参考来源

相关推荐
用户28717638795202 小时前
梦开始的地方:Claude Code 在 Windows & DeepseekV4Pro上的国内环境安装与调试指南
claude
用户28717638795202 小时前
新手上路(三):Claude Code Skills 装了一堆没用?20+ 个 Skill 横向对比 + 三套组合方案,按需抄
claude
雨中飘荡的记忆4 小时前
玩转Claude Code:这个开源项目让我生产力翻倍的秘诀
claude
Joseph Cooper5 小时前
AI Agent 落地入门:从模型、工具到 Skills 与 MCP 的分工
人工智能·ai·agent·claude·skill·mcp
javaTodo10 小时前
Codex CLI 深度指南:安装配置、安全模型与 20+ 高手技巧
claude
小蠢驴打代码10 小时前
我做了一个工具:一键同步 Claude Code、Cursor、Codex 的 MCP 和 Skills 配置
openai·claude·cursor
javaTodo10 小时前
国内使用Claude Code集成VS Codo小白一站式教程
claude
NikoAI编程10 小时前
用AI不等于AI First:国内企业 AI 编程落地的第一站,是混乱
aigc·ai编程·claude
一条小鲤鱼10 小时前
Claude Code 使用指南(一)
claude