Repository navigation
fix(evals): fail eval runs that never started or had no sandbox - #10077
Conversation
run-validity.py passed runs that ended at 0 turns with error null, and runs whose every Bash call failed because the shell sandbox never started. Both scored a session that never ran. A new session started check fails either, in both arms. The plugin-eval sandbox notes give the short-TMPDIR workaround with pointers to the upstream issues. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
claude-security-review reviewed No security issues found in the incremental change to The change narrows the sandbox-failure scan to failed Bash tool results and skips the 0-turn check for runs whose trace already errored. It is an offline validity gate over local eval result files. It adds no new input sources, subprocess calls, network access, secrets handling or path handling. The new helpers use only the existing The tighter match could in theory let a run hide a sandbox failure by not emitting a Bash tool_use with a matching id. That is a self-reported eval trace with no attacker-controlled trust boundary, and No manifest files, trusted paths or instruction surfaces changed in this increment, so there are no critical-findings: 0 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6712e1f1a8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
claude-review reviewed Incremental review of
|
|
…rored traces The session started check matched the sandbox failure string anywhere in a trace, so a healthy run that read run-validity.py or quoted the error was marked INVALID. It now counts only an is_error tool_result of a Bash call. It also skipped only two of check_errors' three conditions, so a 0-turn run whose trace ended in an error was reported twice; both checks now share trace_errored. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
claude-review finding fixed in 24d0b3f: |
Closes #9514
Closes #9611
Summary
run-validity.pycalled two kinds of broken eval run VALID. In one, a run ended at 0 turns witherror: nullbecause the eval sandbox could not write its own temp directory (#9514). In the other, every Bash call failed because the shell sandbox never started under a longTMPDIR(#9611). Both scored a session that never ran, or ran with no shell. The owner chose one check for both causes (session, 2026-10-25).Fix
session startedcheck inrun-validity.py, applied to both arms. It fails a run that ended at 0 turns with no run error, and a run whose kept trace shows the sandbox failing to start. Rows thatrun errorsalready fails are skipped, so nothing is reported twice.reference/sandboxes.mdgains aSandbox startsection. It names the workaround (a shortTMPDIRoutside the system temp directory) and its pointer record: [BUG] plugin eval: sandbox denies every write in the agent's workspace — //tmp denyWrite covers the /tmp/claude-eval-* root anthropics/claude-code#104631 and #104797, and unix(7) for the long-TMPDIRcase (a correlation; no upstream source names it as the cause). The hub's existing "whenerroris null, run the gate" Gotcha points there, which keepsSKILL.mdunder its 500-line cap.Verification
run-validity.test.sh: 55 tests OK. The three new tests cover a 0-turn run, a 0-turn run that already has an error (reported once), and a trace showing the sandbox failing to start.TMPDIRprobe is nowINVALID (... 0 turns and no run error). The short-TMPDIRrun and the feat(harness-ops): show per-role lane spend in the morning brief #9494 rerun stayVALID. The probe table is in the evals: plugin eval with-arm runs end at 0 turns when a skill's ! pre-compute line fails in the sandbox, and the validity gate still says VALID #9514 comment.scripts/check-changed-skills.sh origin/main: plugin-eval PASS. Upstream: all three issues are open, and the 2.1.310 changelog lists no fix. 2.1.310 still fails locally.Related
🤖 Generated with Claude Code