Tool 与沙箱:安全地让 AI 操作你的电脑
一句话理解
如果 Agent Loop 是"大脑",那 Tool 就是"手脚"。Claude 通过调用 Tool 来读文件、写代码、执行命令。但你不会让一个新员工第一天就拿到服务器的 root 权限——所以需要沙箱来限制它能做什么。
Tool 的定义:一个工具长什么样
Claude Code 里有 49 个内置工具,每个工具都遵循同一个接口:
比喻:每个 Tool 就像一个"工位上的工具"。剪刀(Bash)能剪东西也能伤人,所以标记为"非只读、不可并发";放大镜(Read)只能看不能改,标记为"只读"。
默认值设计:安全第一
这是失败安全(fail-safe)设计:如果开发者忘了设置某个属性,系统会用最严格的默认值。就像电梯断电时默认停在最近楼层,而不是继续运行。
Tool 的注册:怎么把工具交给 AI
所有工具通过一个中心注册表管理:
工具在到达模型之前,会经过三层过滤:
权限模型:谁能用什么工具
Claude Code 有 6 种权限模式:
每次工具调用都会走一个权限决策链:
沙箱机制:给 AI 画一个安全圈
沙箱是 Claude Code 安全策略的核心。它利用操作系统级别的安全机制来限制工具能做什么。
原理
平台实现
沙箱配置转换
用户在 settings.json 中的权限规则会被转换为沙箱配置:
反逃逸设计:三重防线
第一重:设置文件保护
沙箱永远不允许写入自身的配置文件:
比喻:这就像一个保险箱的钥匙不能放在保险箱里面。AI 不能修改自己的安全策略。
第二重:裸 Git 仓库防御
这是一个精巧的安全设计。攻击者可能通过在项目中放置特殊文件(HEAD、objects/、refs/),让 Git 误以为这是一个"裸仓库",从而在沙箱外执行 Git 操作时访问到恶意内容。
第三重:命令注入检测(AST 级别)
对于 Bash 命令,系统使用 tree-sitter(一个语法解析器)来分析命令结构,而不是简单地匹配字符串:
为什么要用 AST 而不是正则表达式?看这个例子:
Bash Tool:最复杂的工具
Bash 是所有工具中最复杂的,因为它能执行任意命令。它的目录有 20 个文件:
权限检查的完整流程
一个 Bash 命令从 AI 发起到实际执行,要经过 5 层检查:
小结
Tool 和沙箱的设计体现了纵深防御的思想:
- Tool 层:默认值全部选最严格的(fail-safe)
- 权限层:多级规则,deny 优先级最高
- 沙箱层:操作系统级别的强制限制
- AST 层:语法级别的命令注入检测
- 配置保护层:AI 永远不能修改自己的安全规则
这就像一个银行的安保系统:有门禁(权限检查)、有保险箱(沙箱)、有监控(AST 分析),还有一条铁律——保安不能自己改密码(配置保护)。

