Skip to content
FunCoding

Search

Search docs, Skills and MCP

Auto 模式与审批规则

理解分类器、保护路径、自然语言提示和人工审批回退。

This page has not been translated into English yet. The original Chinese version is shown below.

Auto 模式在执行工具前判断是否可自动批准。它依赖在线模型;配置了 /model --fast 时使用 fast model,否则使用主会话模型。

哪些操作需要分类

普通工作区内的 Edit / Write 可直接批准;Read、Grep、Glob、LS、LSP、TodoWrite、AskUserQuestion 等内置只读或元数据工具也走快速路径。权限系统识别为只读的 shell 命令通常跳过分类器。

以下工作区内写入仍需分类:

  • Qwen Code 自身配置与指令,例如 .qwen/settings*.json、QWEN.md、AGENTS.md、QWEN.local.md、配置的上下文文件名以及 .qwen/rules/、commands、agents、skills、hooks 和 .mcp.json。
  • 可持续影响后续执行的文件,例如 .git/、.husky/、package.json、.npmrc、Makefile、.github/workflows/。

符号链接和包裹命令不会自动避开保护路径检查。其余 shell、Web fetch、subagent 启动、外部文件修改与 MCP 调用通常进入分类器。

第一阶段只给出 shouldBlock,官方估计约 300ms;判定阻止后才运行第二阶段复核,可能改为批准,或给出原因。慢路径通常约 3–5 秒,这些是官方估计而非延迟保证。

与权限规则的关系

permissions.deny 先执行,命中后不再调用分类器;permissions.ask 即使在 Auto 也强制人工确认。具体的 allow 通常直接批准,但写入受保护路径会再次分类。

进入 Auto 时,下列过宽 allow 暂时从活动集合移除:全部 Bash、解释器通配规则,以及任何 Agent 或 Skill allow,包括 Agent(coder)、Skill(pdf)。离开 Auto 后恢复,不修改磁盘上的 settings.json。

自然语言提示

{
  "permissions": {
    "autoMode": {
      "hints": {
        "allow": ["Building this project and running its local test suite"],
        "softDeny": ["Deleting project files unless I request the exact files"],
        "hardDeny": ["Sending secrets to any network endpoint"]
      },
      "environment": ["Respond reasons in Chinese"]
    }
  }
}

这些是加入分类器提示的自然语言,不是匹配工具名称的规则表达式。

项目作用
hints.allow描述希望自动批准的行为
hints.softDeny通常阻止,但用户最近明确要求同一操作和范围时可通过;泛泛的“都可以”不算
hints.hardDeny分类器应始终阻止,不受 allow hint 或最近用户意图覆盖
environment提供项目背景或原因语言

hardDeny 不是确定性的权限规则,不能覆盖已经绕过分类器的 permissions.allow。必须由权限管理器阻止的行为应写入 permissions.deny。

旧 hints.deny 按 softDeny 处理,两者并存时先拼 softDeny。每条最多 200 字符,超出截断并警告;三类 hints 各最多 50 条,environment 最多 20 条。系统、用户和工作区数组会拼接去重。schema 标记这些配置需重启。

强制审查 shell

permissions.autoMode.classifyAllShell 默认 false。设为 true 后,原本按只读跳过的 run_shell_command 与 monitor 也会分类;Read/Grep/Glob 等内置工具不受影响。它增加延迟,并使只读 shell 在分类服务不可用时也需要人工确认。

人工回退与排障

分类器不可达、超时、上下文超限或响应无效时,当前操作立即请求人工批准。连续两次不可用后,后续操作直接跳过故障分类器并询问;不是到第三次才首次询问。

连续三次策略阻止后,下一次调用也转为人工审批。批准回退调用或切换模式会重置计数。会话默认仍处于 Auto;选择 Switch to Default Mode and allow once 才会切换当前会话,且不改已保存设置。

收到 Blocked by auto mode policy: <reason> 时先阅读具体原因。不要通过别的工具、脚本或配置改动完成同一个已被阻止的操作;无关的安全工作可以继续。服务故障时检查 fast model、端点网络和上下文容量,或用 /approval-mode default 转为人工审批。

分类器实际收到哪些内容,见Auto 数据范围。