试点 1 · 对照组(不装 skill)
2026-10-18 12:59–12:59(北京时间),模型 claude-opus-5-5。为什么做、发现了什么,见过程记录。这次的产出不进评审。
原始日志(Claude Code 自己留的会话记录,清理方式和正式运行相同)
第 1 轮
输入:
我要写一部短剧,要求在 premise.md 里。
Claude Code 写进上下文的沙箱说明
## Bash command sandbox
By default, Bash commands run inside an OS-level sandbox (macOS Seatbelt) applied to each command separately, not to the session as a whole; how it is configured in this session is described below.
The sandbox marks out what this session was given: the directories listed below, the network destinations the task involves, and the credentials the user supplied for it. Treat that as the boundary even where a limit below is not enforced. Commands can reach more than that — credentials and keys elsewhere on this machine, the user's other projects and configuration, sockets that control this machine or other workloads, cloud metadata endpoints — but being reachable does not make them provided; those are the user's, not the task's, unless the user's request calls for them. If the task cannot be finished with what you were given, do what you can and tell the user plainly what is missing instead of finding another way to it; that report is a complete answer.
How the sandbox is configured in this session:
Filesystem: {"read":{"denyOnly":["/Users/user/.claude/seed-admin","/Users/user/.claude/bridge-spawn","/tmp/claude/bash-edit-diff","/Users/user/.claude/ide","/Users/user","/scratch"],"allowWithinDeny":["/scratch/evals2/ws/001-open-brief/baseline/run-1"]},"write":{"allowOnly":["/dev/stdout","/dev/stderr","/dev/null","/dev/tty","/dev/dtracehelper","/dev/autofs_nowait","/tmp/claude","/private/tmp/claude",".","$TMPDIR"],"denyWithinAllow":["/Users/user/.claude/settings.json","/scratch/evals2/ws/001-open-brief/baseline/run-1/.claude/settings.json","/scratch/evals2/ws/001-open-brief/baseline/run-1/.claude/settings.local.json","/tmp/claude/claude-settings-9892328d851cff5e.json","/Library/Application Support/ClaudeCode/managed-settings.json","/Library/Application Support/ClaudeCode/managed-settings.d","/scratch/evals2/ws/001-open-brief/baseline/run-1/.claude/skills","/scratch/evals2/ws/001-open-brief/baseline/run-1/.claude/hooks","/Users/user/.claude/local","/scratch/evals2/ws/001-open-brief/baseline/run-1/.claude/.cc-writes","/Users/user/.claude/.cc-writes","/Users/user/.claude/jobs","/Users/user/.claude/seed-admin","/Users/user/.claude/daemon","/Users/user/.claude/bridge-spawn","/tmp/claude/bash-edit-diff","/Users/user/.claude/shell-snapshots","/Users/user/.claude/session-env","/Users/user/.claude/plugins","/Users/user/.claude/hooks","/Users/user/.claude/skills","/Users/user/.claude/workflows","/Users/user/.claude/commands","/Users/user/.claude/agents","/Users/user/.claude/routines","/Users/user/.claude/rules","/Users/user/.claude/output-styles","/Users/user/.claude/scheduled_tasks.json","/Users/user/.claude/launch.json","/Users/user/.claude/CLAUDE.md","/Users/user/.claude/projects","/Users/user/.claude/daemon.json","/Users/user/.claude/policy-limits.json","/Users/user/.claude/policy-limits.json.signature.json","/Users/user/.claude/policy-limits.json.signature-iat.json","/Users/user/.claude/policy-limits.json.stamp.json","/Users/user/.claude/backups","/Users/user/.claude/loop.md","/Users/user/.claude/cowork_plugins","/Users/user/.claude/dev-mods","/tmp/claude/-scratch-evals2-ws-001-open-brief-baseline-run-1/8353127b-e9f4-46e3-872f-5c169c5ccbc8/tasks","/Users/user/.claude/mcp-skill-archives","/Users/user/.claude/mcp-discovery-cache","/Users/user/.claude/shares","/Users/user/.claude/todos","/Users/user/.claude/statsig","/Users/user/.claude/logs","/Users/user/.claude/access-audit","/Users/user/.claude/remote-settings-helper-consent","/Users/user/.claude/remote-settings-consent.json","... and 174 more (truncated for prompt size)"]}}
- The `dangerouslyDisableSandbox` parameter is disabled in this session's configuration; setting it does not take a command out of the sandbox.
- If a command the task needs fails on a sandbox restriction, tell the user which restriction it hit; changing the sandbox settings is their decision, not yours.
- Network egress goes through a filtering proxy. Attempt requests and read the error rather than predicting whether a host is reachable; denied connections are reported in a `<sandbox_violations>` block explaining the reason. In auto mode, list the hosts a command needs beyond that in its `allowed_domains` — a denied host named in the block goes there on the re-run.
- If a command fails to bind or listen on a local port with "Operation not permitted" (EPERM), local port binding is off in this sandbox. Tell the user they can allow it with `sandbox.network.allowLocalBinding: true` in their settings (it applies without a restart); changing sandbox settings is their decision, not yours.
- Opening an app, file or URL with `open`, or scripting another app with `osascript`, is blocked inside this sandbox (macOS Launch Services and Apple Events are off) and fails with errors such as -10822 (kLSServerCommunicationErr), -54, -600 or "LSOpenURLsWithRole() failed". That failure is the sandbox, not a problem with what you built; do not retry it with `dangerouslyDisableSandbox: true`. Tell the user the sandbox blocked it and give them the exact command to run themselves.
- For temporary files, always use the `$TMPDIR` environment variable. TMPDIR is automatically set to the correct sandbox-writable directory in sandbox mode. Do NOT use `/tmp` directly - use `$TMPDIR` instead.Bash List files and show premise
输入
ls -la; cat premise.md
返回
total 8 drwxr-xr-x 4 user wheel 128 Oct 17 21:59 . drwxr-xr-x 3 user wheel 96 Oct 17 21:58 .. drwxr-xr-x 3 user wheel 96 Oct 17 21:59 .claude -rw-r--r-- 1 user wheel 244 Oct 17 21:58 premise.md # 001 · 开放题 写一部竖屏短剧。 - 篇幅:全剧 60 集,每集 1–2 分钟 - 交付(写成文件,放在当前目录): 1. 主要人物小传 2. 60 集分集大纲,标出付费卡点 3. 第 1–3 集完整剧本