乐于分享
好东西不私藏

泄露源码证明Anthropic自己都不相信大模型,国内却在裸奔,

泄露源码证明Anthropic自己都不相信大模型,国内却在裸奔,

一、核心事实:LLM 几乎不参与权限决策

  1. 系统分工边界清晰

    • 工具选择、代码生成、记忆提取、上下文管理:完全基于 LLM 调用
    • 权限判断(允许 / 拒绝 / 询问用户):几乎完全由确定性代码实现,无 LLM 参与
    • 原文明确:When it actually matters, they didn’t trust the model until recently.
  2. 权限系统技术构成(纯工程实现)

    • 规则匹配(rule matching)
    • 通配符匹配(glob patterns)
    • 正则校验(regex validators)
    • 硬编码路径检查(hardcoded path checks)无模型推理、无概率输出、无模糊分类。

二、权限执行流水线:固定步骤、不可篡改

所有工具调用在执行前,强制经过hasPermissionsToUseToolInner,执行顺序固定:

  1. 检查工具级拒绝 / 询问规则(glob 匹配 + 配置层级)
  2. 执行工具自身checkPermissions()方法(每个工具独立代码,非 LLM)
  3. 执行不可绕过安全检查(敏感路径、内容专属规则)
  4. 若开启bypassPermissions且前述无拦截,则允许
  5. 检查工具级允许规则
  6. 默认行为:询问用户

关键事实:

  • 全程无模型参与,规则匹配即通过 / 拒绝,不匹配则人工确认
  • 无灰度、无概率、无模型裁量空间

三、Bash 工具权限:6 阶段 + 23 个校验器 + 4 种命令视图

仅 Bash 工具的checkPermissions()就包含6 个固定阶段

  1. 复合命令拆分
  2. 安全包装剥离
  3. 子命令规则匹配
  4. 23 个独立安全校验器
  5. 路径约束检查
  6. sed/mode 校验

系统为每条命令预计算4 种固定视图,校验器直接选用,不重复解析:

  1. 原始未修改:bash -c "rm '$target'"
  2. 去除双引号:bash -c rm '$target'
  3. 完全无引号:bash -c rm $target
  4. 保留引号字符:bash -c " ' '"

校验覆盖范围(事实清单):

  • 命令替换模式
  • Zsh 危险内置指令
  • IFS 注入
  • 花括号扩展
  • Unicode 空格绕过技巧
  • 其他 Shell 逃逸与注入手法

四、不可绕过检查:硬编码、控制流保证

以下操作任何权限模式、任何 Flag 都无法绕过,必须询问用户:

  • 写入 .git/.claude/.vscode/
  • 修改 Shell 配置文件
  • 需用户交互的工具
  • 内容专属询问规则

关键事实:

  • 这些检查在 bypass 步骤之前执行
  • 代码控制流强制保证,非策略配置
  • 不存在可跳过的开关、参数或模式

五、唯一 LLM 入口:Auto 模式,仅做兜底

  1. 唯一入口权限系统中仅有一处使用 LLM:Auto 模式,由TRANSCRIPT_CLASSIFIER功能开关控制。

  2. 执行优先级

    • 确定性代码 Pipeline永远优先
    • 代码能判定(允许 / 拒绝)→ 分类器从不被调用
    • 仅当代码走到 “ask” 且开启 Auto 时,分类器才兜底
  3. 失败闭环规则(全部事实)

    • 分类器 API 错误 → 直接拒绝
    • 连续 3 次拒绝 → 回退人工询问
    • 累计 20 次拒绝 → 回退人工并重置计数器
    • 上下文超长超出窗口 → 直接人工询问
    • 错误时永不默认允许
  4. 官方定位Anthropic 公开说明:Auto 模式降低风险,但不消除风险,以研究预览形式发布。


  5. 七、关键结论

    1. Claude Code 权限系统不是 LLM 驱动,是传统 RBAC 类代码系统
    2. 权限判断100% 可复现、可审计、可拦截,无随机性
    3. 敏感操作不由模型决定,由硬编码与控制流锁死
    4. Auto 模式是减负而非放权,失败必回退人工
    5. 安全底线:智能交给模型,权限握在代码

    所以,国内大部分在一窝蜂的裸奔的状态下,我们能在他的源代码中得到什么启发,就显而易见了 !!!

觉得不错,加个关注,点个赞。