超40万次实测数据表明,审批疲劳使开发者对AI编程工具的危险请求把关失效,近三分之一恶意或破坏性指令被放行。

一款基于浏览器的 AI 编码智能体权限测试游戏收集了超过 40 万条人类决策数据,揭示了一个令人担忧的现象:约三分之一的危险指令被人类直接批准通过。这些数据暴露了一个问题——审批疲劳、熟悉的命令模式以及缺失的上下文信息,共同削弱了许多 AI 编码工具所依赖的"人工审查"(human-in-the-loop)安全模型。
当 Claude Code、GitHub Copilot Workspace 或 Devin 等 AI 编码智能体发起一条命令时,大多数开发者已经被训练成逐条审查并批准——这在我们此前关于保障 AI 编码工具安全的报道中有详细阐述。其底层假设是:人类的眼睛能够在恶意或破坏性请求执行之前将其捕获。然而,Scale X 的新数据集表明,这个假设存在缺陷。
Alex Wauters 是一名比利时软件开发工程师,曾担任 Uber 首席工程师(Staff Engineer)。他构建了一款名为 LLM Game(llmgame.scalex.dev)的浏览器游戏,用于模拟 AI 编码智能体的权限请求场景。玩家会看到其工具可能发出的真实世界命令,然后选择批准或拒绝。在超过 4 万次运行和 40.9 万条独立决策中,平均每位玩家遗漏了约三分之一的威胁。这一漏报率并非源于玩家的水平问题,而是直接映射到开发者如今在实际生产工具中使用权限提示的真实状态。
在 40.9 万条决策中,平均准确率为 66.3%,即约 33.7% 的恶意指令被批准通过
npm run analyze 的漏报率最高,达到 64.7%,表明熟悉的脚本名称会降低警惕
审批疲劳、临近会话结束时的压力以及缺失的变更文件上下文,都会削弱判断力
通过 package.json 脚本包装的命令比原始 shell 命令更难评估——这一模式在我们的 npm 安全最佳实践指南中有探讨
各大媒体引用的 ~93% Claude Code 批准率无法通过 Anthropic 官方来源独立验证
据报道,Claude Code 的 Auto Mode 能捕获约 83% 的过度热情的智能体行为,但仍有约 17% 漏过
Wauters 的游戏向玩家呈现的是 AI 编码智能体在开发工作流中可能发出的真实权限请求。命令范围从明显具有破坏性的(如删除整个代码仓库),到更隐蔽的变体——将恶意负载隐藏在看似常规的脚本内部。玩家每个决策约有 60 秒时间,模拟了开发者在处理大量权限队列时所面临的时间压力。
该数据集涵盖了四类威胁:明显破坏性命令、持续变更尝试、数据泄露与代码执行载荷,以及范围越界。每种类别的漏报率各不相同,其中范围越界和数据泄露略低于整体平均水平,分别为 35.0% 和 33.4%。明显破坏性命令最容易被捕获,漏报率为 11.7%,但这仍意味着约八分之一的玩家批准了一条会清空整个代码库的命令。
npm run analyze 会让人上当数据集中单一最高漏报率属于 npm run analyze,达到 64.7%。这条命令看起来就像一个标准的代码检查或类型检查步骤。实际上,该脚本可以执行任意代码、窃取环境变量,或修改项目目录之外的文件。同样的模式也出现在 npm run setup(48.0% 漏报率)和 npm run deploy(44.9% 漏报率)中。
将这些命令合并统计后,npm-run 家族的漏报率为 51.1%,而其他类型的数据泄露攻击为 33.4%。熟悉的命令名称制造了一种虚假的安全感。玩家看到了日常工作流中熟悉的东西,就直接批准,而没有阅读脚本实际要做什么。
时间限制是刻意设计的。Claude Code 或 Copilot Workspace 等工具中的真实权限队列在一次会话中可能延伸至数百个提示。每个决策只占用一小部分时间,但在批准了第五十个请求后,认知负荷会逐渐累积。游戏直接测量了这种衰退:后续决策的漏报率高于早期决策。
上下文缺失加剧了这个问题。玩家通常看到一条命令,却不知道哪些文件被修改了、智能体试图完成什么,或者该请求是否与手头任务一致。没有上下文,唯一能依据的就是命令文本本身。而正如 npm run analyze 数据所示,命令文本可能是刻意误导的。
媒体的二次报道引用了数据,表明 Claude Code 用户批准了约 93% 的权限提示。该数字出现在 The Register 和 Hacker News 的报道中,但在本轮研究期间无法通过可访问的 Anthropic 官方来源进行验证。在主要来源发布之前,该说法应被视为未确认。
可验证的是 Auto Mode 的统计数据。The Register 报道称 Claude Code Auto Mode 能检测到约 83% 的过度热情的智能体行为,剩余约 17% 会漏过。这 17% 代表了相当大的攻击面。即使有自动化监督,仍有相当比例的危险命令最终到达执行阶段。
人工与机器判断之间的差距在这里至关重要,与我们对生产环境中 AI 智能体安全风险的分析结果相互呼应。Auto Mode 平均比人工审查者更严格,但它并非万无一失。当人工审查者真正停下来仔细评估每个提示时,其表现反而比设计用来辅助他们的工具更差。这种反转是数据集的核心发现。
这些数据并非建议放弃权限提示,而是建议重新设计它们。当前的模型假设人类能够在时间压力下可靠地评估数千个短决策。游戏表明这个假设是错误的。
有几项实用调整值得关注,这些都建立在我们之前涵盖的开发者工作流自动化原则之上。首先,工具应在每个权限请求旁边显示变更文件的上下文。像 npm run analyze 这样的命令在孤立状态下看起来无害。但如果配上显示该脚本被修改加入了 curl 命令的 diff,风险就显而易见了。其次,将类似命令批量处理并请求集体批准,可以在不牺牲监督的前提下减少疲劳。第三,对于不熟悉的脚本(尤其是通过 package.json 执行的脚本)默认拒绝,迫使人们对看似常规的命令进行二次审查。
npm-run 的漏报率是最清晰的信号,表明当前的权限设计对脚本包装命令过于宽松。将脚本执行视为比原始 shell 命令更高风险的工具可以弥补一个已知漏洞。任何能减少开发者在单次会话中需要做出的决策总量的改变也有帮助。
Scale X 的 4 万次运行数据集提供了具体证据,证明人工审查安全机制在现实条件下会退化。审批疲劳、命令熟悉度以及缺失的上下文共同导致了约三分之一的漏报率。这些数据具体到足以采取行动。工具应在每个决策中提供更多上下文,将脚本执行与原始命令区别对待,并减少所需的批准总量。在此之前,开发者应假设相当比例的权限提示会在没有仔细审查的情况下被批准,并相应地调整其工作流。
LLM Game 是什么?谁构建了它?
LLM Game 是一款由 Alex Wauters(比利时软件开发工程师、前 Uber 首席工程师)构建的基于浏览器的权限选择游戏。它模拟 AI 编码智能体的命令审批,用于研究人类在时间压力下如何评估权限提示。
数据集中收集了多少条决策?
数据集包含超过 4 万次游戏运行中的 40.9 万条批准/拒绝决策。平均准确率为 66.3%,对恶意命令的漏报率约为 33.7%。
为什么 npm run 命令的漏报率更高?
像 npm run analyze 这样的命令看起来熟悉且常规,所以玩家不检查底层脚本就批准了。npm-run 家族的合并漏报率为 51.1%,而其他类型的数据泄露攻击为 33.4%。
93% Claude Code 批准率是否确认?
未确认。二次报道中引用的约 93% 批准率无法通过可访问的 Anthropic 主要来源验证。它仍然未经确认。Auto Mode 约 83% 的检测率由 The Register 证实,但也缺乏直接可访问的主要来源。
开发者可以做什么来改善权限审查?
在每个提示旁显示变更文件的上下文,批量处理类似命令以进行集体批准,对不熟悉的脚本默认拒绝,并通过更智能的工具设计减少每次会话的决策总量。
Scale X 博客文章:ai-agent-permissions-stats
LLM Game:llmgame.scalex.dev
The Register 报道:Humans in the loop miss a third of dangerous AI coding agent requests
Hacker News 讨论:Show HN: Continue? Y/N