不想让Claude Code的自动批准模式把主目录删了?试试Docker Sandboxes

37 阅读2分钟

YOLO模式的问题

Claude Code有个叫「YOLO模式(--dangerously-skip-permissions)」的功能。不用确认就直接执行命令,效率高得不是一点半点。

但正如其名,这是个危险的功能。

网上「Claude Code把我主目录删了」的吐槽应该不少人见过吧。我自己做了个用手机操作Claude Code的工具Pockode,也支持了YOLO模式,但直接在自己电脑上跑还是心里发毛。

于是我开始研究用Docker隔离,结果发现最近刚好加了个专门为这个场景设计的功能。

Docker Sandboxes

这是Docker Desktop 4.50新增的实验性功能。发布日期是2025年11月6日,还热乎着呢。

用法简单到离谱。

docker sandbox run claude

就这样。Claude Code就在隔离的Docker环境里跑起来了。

当前目录会自动挂载,可以直接开始干活。而且这功能本来就是为YOLO模式设计的,所以默认就开启了自动批准模式。

选项也照常能用。-c可以继续上次的对话。

docker sandbox run claude -c

关于认证

认证需要在sandbox里单独进行,跟宿主机是分开的。每个sandbox都需要认证,有点麻烦。

想继承~/.gitconfig~/.ssh的话,可以用--credentials host选项。

docker sandbox run --credentials host claude

注意,这不会继承Claude Code本身的认证,只是Git和SSH之类的配置。要不要把~/.ssh挂进去,就看个人取舍了。

主要选项

选项说明
--credentials string认证信息来源。可选host / sandbox / none,默认sandbox
-d, --detached不交互启动,只创建sandbox
-e, --env strings设置环境变量。格式:KEY=VALUE
--mount-docker-socket挂载宿主机的Docker socket
--name string指定sandbox名称
-v, --volume strings挂载卷。格式:hostpath:sandboxpath[:readonly]
-w, --workspace string工作目录路径,默认当前目录

关于安全性

Docker Sandboxes是专门为了AI代理设计的,比普通Docker容器更安全。

但毕竟没有用VM完全隔离,或者干脆弄台专用机器安全。

--credentials=host会把~/.ssh之类的也挂进去,介意的人可能会在意。

但作为现实中的折中方案,应该够用了。至少「一不小心主目录没了」这种事故能避免。

总结

YOLO模式(--dangerously-skip-permissions)好用但吓人。用Docker Sandboxes的话,既能享受它的便利,又能保护宿主环境。

docker sandbox run claude

想用YOLO模式但一直不敢用的朋友,可以试试。


宣传: 我做了个用手机在家里电脑上跑Claude Code开发的工具Pockode

原文: sijiaoh.com/zh/posts/cl…