Claude Code 不失控指南:本地 Git + 检查点 + 沙箱,三块拼图补齐安全边界
你的 Claude Code 改了 20 个文件全改错了怎么办?执行了一个不该跑的命令怎么办?改完代码谁来审查?
这三个问题分别对应三个答案:本地 Git(分支隔离+自动化检查)、检查点(本地后悔药)、沙箱(安全围栏)。
三块拼图补齐,Claude Code 既能自主工作,又不会失控。
一、本地 Git 管控——不依赖云端,自己就是 CI/CD
Claude Code 改完代码,谁来审查?类型安全、性能风险、安全风险、最佳实践——这些检查不一定非要上 GitHub Actions。用本地 Git 就能搞定。
分支隔离:Claude 的工作区和你互不干扰
核心思路:永远不要让 Claude 直接在主分支上改代码。
git checkout -b claude/fix-layout # Claude 在专属分支工作
# Claude 大刀阔斧改代码...
git diff # 你来审查改了什么
git merge claude/fix-layout # 确认没问题再合入
Claude 改错了?主分支纹丝不动。改对了?一条 merge 搞定。分支就是你的第一道防线。
Claude Code + Git 的标准工作流
1. git checkout -b claude/xxx → 开分支
2. Claude 改代码 → 检查点自动保底
3. git diff → 人工审查改动
4. Claude /review → AI 二次审查(架构合规、代码质量)
5. git commit → 确认无误,提交存档
6. git merge → 主分支 → 确认合入
不用推到远程,不用等 CI 排队,本地一条龙搞定。改错了分支删掉重来,改对了合入主分支,整个过程在本地闭环。
二、检查点系统——你的本地后悔药
光有云端自动化还不够。本地开发时,Claude 大刀阔斧改了 20 个文件结果改错了,难道要一个个手动撤回?
自动存档,零配置
Claude Code 会在每次文件编辑前自动创建检查点。你不用做任何配置,它默认就在工作。
两种回退方式
| 方式 | 操作 | 场景 |
|---|---|---|
| 快捷键 | Esc × 2 | Claude 正在改代码,你发现方向不对,秒中断 |
| 命令 | /rewind | 改完发现不对,回退到之前的某个节点 |
三种回退策略
回退时你可以选择:
- 恢复代码和对话——最彻底,代码回滚,对话也回滚,像什么都没发生过
- 仅恢复代码——代码回滚,但保留对话记录,方便你回顾 Claude 做了什么
- 从此处总结——把之前的对话压缩成摘要,释放上下文空间,从回退点重新开始
检查点 vs Git:互补不是替代
| 维度 | 检查点 | Git |
|---|---|---|
| 定位 | "本地取消" | "永久历史" |
| 粒度 | 秒级回退,会话级别 | commit 级别的版本管理 |
| 适用场景 | 快速调试和回退 | 长期历史和协作 |
| 生命周期 | 会话结束后逐渐消失 | 永久保存 |
最佳实践:
- 让 Claude 大胆改 → 检查点保底
- 改好了确认没问题 →
git commit存档 - 改错了 →
Esc×2回退,重新来
重要限制: 检查点只追踪 Claude 编辑器工具的文件操作,以下操作不在追踪范围内:
bash命令中的rm、mv、cp——这些是永久操作- 你在 Claude 之外手动做的修改
- 其他并发会话的修改
所以 bash 命令的防护,得交给沙箱。
三、沙箱系统——用 OS 级隔离取代权限疲劳
你有没有过这种经历——Claude 要执行一个 npm 命令,弹出权限确认,你看了一眼点"允许"。又弹一个,又点。再弹一个,继续点。到第十个的时候你已经不看内容直接点了。
这就是"权限疲劳"——确认太多等于没有确认。
沙箱解决的就是这个问题:用 OS 级别的隔离代替频繁的权限弹窗。安全边界内的操作自动放行,超出边界的操作直接拦截。
一键启用
/sandbox
启用后,Claude 在沙箱边界内的 bash 命令不再弹出权限确认——安全且顺畅。
双层隔离架构
文件系统隔离:
- 可写入:当前工作目录及子目录(默认)
- 可读取:整个系统(除显式拒绝的路径)
- 被拦截:工作目录外的写入操作
Claude 可以读你的项目文件、修改项目代码,但不能碰 ~/.bashrc、~/.ssh/、/usr/local/bin 或任何项目目录之外的东西。
网络隔离:
- 默认限制网络访问到明确允许的域名
npm/yarn等包管理器的域名自动允许- 其他出站请求需要显式配置
技术实现:
- macOS → Seatbelt(苹果的沙箱框架)
- Linux → bubblewrap(容器级隔离)
这是操作系统内核级别的隔离,不是靠"信任"。
沙箱 + 权限:双层防护
| 层级 | 管什么 | 怎么管 |
|---|---|---|
| 权限系统 | Claude 的内置工具(Read、Write、Edit、Bash) | 白名单/黑名单规则 |
| 沙箱 | Bash 命令在操作系统层面的实际执行 | OS 内核级隔离 |
关键区别:没有沙箱时,权限系统的 deny 规则只对 Claude 的内置工具生效——如果 Claude 通过 bash 命令访问文件,deny 规则管不到。开启沙箱后,同样的限制在 OS 层面强制执行,bash 命令也被管住了。
两层合在一起,权限弹窗减少约 80%,但安全性反而更高。
沙箱适用场景
- 安全代码执行
- 代码测试与调试
- 编程学习
- 自动化任务开发
四、自主运行模式——让 Claude 真正"自己干"
有了上面的安全基础,才能放心让 Claude 自主运行。
子代理并行
对 src/components/ 下的所有组件做一次全面审查:
代码质量、安全扫描、测试覆盖率检查,同时进行
Claude 会把任务分配给多个子代理并行执行,然后汇总结果,你只需要等一份汇总报告。
后台任务
启动 npm run dev,然后帮我修复首页的布局问题
Claude 会在后台启动 dev server,同时在前台改代码,改完还可能在浏览器里验证效果。
无人值守的安全策略
必须开启:
/sandbox(OS 级隔离)- 检查点(自动存档,改错可回退)
- Git 分支隔离
建议配置:
PreToolUse Hook拦截高危命令- 敏感文件保护
--max-turns设上限,防止 Claude 无限循环
监控方式:
Notification Hook→ 桌面通知Stop Hook→ 记录日志- 回来后
git diff看改了哪些文件
口诀:分支隔离 + 沙箱围栏 + 检查点兜底
五、小结
第一,本地 Git 就是你的 CI/CD——分支隔离让 Claude 的改动和你互不干扰,人工审查 + AI 审查双重把关,整个审查流程在本地闭环,不依赖任何云端服务。
第二,检查点是你的"后悔药"——Claude 每次编辑前自动存档,Esc×2 秒回退。三种回退策略覆盖不同场景。但 bash 命令不在追踪范围内,所以 Hook 拦截依然重要。
第三,沙箱用 OS 级隔离取代权限疲劳——/sandbox 一键启用,文件系统和网络双层隔离,权限弹窗减少约 80%。和权限系统形成双层防护:权限管工具,沙箱管命令。
三块拼图补齐:本地 Git 管云端级别的自动化,检查点管本地回退,沙箱管安全边界。 Claude Code 从此既能自主工作,又不会失控。