跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

Auto 模式与审批规则

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

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 数据范围。