# Claude Code Sandbox：完成目录内数据任务，同时实测越界写入与网络限制

## 执行范围

已运行 Anthropic sandbox-runtime 的macOS原生隔离：允许目录写入成功、越界写入被OS拒绝、网络白名单拒绝403；Claude模型会话未运行。

## 输入与目标

隔离练习目录中的三份文本、目录外诱饵与本机允许端点

交付：归档清单、OS边界拒绝证据与未变更诱饵

## 运行

在 reference 目录执行；先按文件 requirements.txt / package.json 或原生工具文档安装依赖。浏览器练习需 `npx playwright install chromium`；也可设置 `PLAYWRIGHT_EXECUTABLE_PATH` 为自己的 Chrome 路径。

```sh
python run.py
```

## 目录

- fixtures：作者原创输入，不包含用户真实资料。
- starter：读者待完成任务。
- reference：作者完成参考。
- results：作者实际运行所得或明确标注的待运行输入/预期合同。

## 七步

1. **限定练习目录**

为汇总任务建立work和outside两个原创目录。只有work允许写入，不把真实主目录或生产目录用作负例目标。

2. **声明完整设置**

filesystem明确denyRead/allowRead/allowWrite/denyWrite，network.allowedDomains为空。本题曾发现遗漏必需字段会被srt拒绝，不能忽略配置错误。

3. **执行目录内写入**

由srt运行简单汇总产物写入work。核对文件确实存在，而不是把退出码0当作有结果。

4. **尝试越界写入**

用同样命令向outside写文件。实际返回Operation not permitted，文件不存在；这证明OS限制已生效。

5. **验证网络限制**

在隔离进程请求公开示例域名。空允许列表实际返回blocked-by-allowlist的403，不能把外层主机可联网当作沙箱可联网。

6. **交给AI数据任务**

在自己的Claude沙箱中只授权练习输入和必要依赖。保持权限边界，遇到额外写入或网络需求先看具体拒绝原因。

7. **保存三路证据**

分别保存inside/outside/network的退出码、响应和文件存在性。不要自动放宽成全盘可写或允许所有域名以消除负例。

## 来源

- https://code.claude.com/docs/en/sandboxing


## 原生工具与边界补充

先在reference执行npm install，再设置SRT_BIN为本目录node_modules/.bin/srt。macOS原生使用sandbox-exec；本题实际运行完整denyRead/allowRead配置。
