Repository navigation
fix(evals): state that a run can read its own plugin copy by absolute path - #12976
Conversation
… path Host trials on #12880 (Claude Code 2.1.317, with and without a Bash grant, plugin copy under the worktree root and on the /run/user tmpfs) read, globbed and grepped the plugin copy with no denial; only a pathless Glob missed, because it searches the run's empty workspace. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015te8CoibZv2y2Zsidz4jvz
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 Security review: PR #12976 (incremental, ddf2903..3df77e7)No security issues found. I read every hunk of all 4 files in the incremental scope:
Instruction-surface check. The case-authoring change narrows a factual claim. Before, it said a run could read its own copy in general; now it says this was measured only for the named layout. It removes no rule that prevented an action. The rule on the line above still says the eval directory stays hidden and not to defeat that with Trusted paths and controls. None of the 4 files matches a trusted-path glob. The diff touches no trust control, merge hold, token scope, kill switch, workflow or plugin manifest. The test and fixture change no runtime code: the test drives PR context. The description and the closing issue's comments contain no directives aimed at this lane. Prior findings. This lane's only earlier post is the round-0 summary, which had no findings. There is nothing to carry forward, and the review is not past the cap (0 of 3). critical-findings: 0 |
|
claude-review reviewed Code review: PR #12976 (incremental,
|
…wn-copy lookup The own-copy guidance now states the layout the #12880 trials measured (a copy outside git, staged as Worktree isolation does) and that other copy locations are unmeasured. A new run-validity case pins that an allowed Read, Glob and Grep of the copy is no denial. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015te8CoibZv2y2Zsidz4jvz
|
The pr-verify verifier failed head What it wrote (24 lines)This pull request leaves the merge queue, and ci-status holds it out while it carries |
Closes #12880
Summary
#12880 reported that an eval run cannot read the loaded plugin copy's own files. Host trials on Claude Code 2.1.317 do not reproduce that: a run reads, globs and greps its own plugin copy by absolute path, with and without a Bash grant. Only a pathless or workspace-relative lookup finds nothing, because it searches the run's empty workspace.
/evals:plugin-eval's case-authoring guidance said a reference read "can be denied"; this corrects it.Fix
plugins/evals/skills/plugin-eval/reference/case-authoring.md: the reference-spoke checklist item names the measured layout (a plugin copy staged outside git, under the worktree root or on a/run/user/<uid>tmpfs, read by absolute path with or without a Bash grant), says other copy locations are unmeasured, and says a pathless lookup finds nothing; it cites fix(evals): eval runs cannot read the plugin copy's own files, so skills that use them measure low #12880 with the Claude Code version, an as-of date and a recheck trigger on the plugin-evals isolation section.plugins/evals/skills/plugin-eval/scripts/test_run_validity.pyplus fixturetraces/self-lookup-allowed.jsonl: a synthetic trace where Read, Glob and Grep of the plugin copy succeed with no denial; the test assertscheck permission denials: PASSand verdict VALID without--own-copy-search-warns. It passed against unchangedrun-validity.py, so the script needs no change; the existing denied-lookup cases still pass.Verification
Trials (results on #12880: part 1, part 2), each judged VALID by
run-validity.pywith no permission denial:../../link/run/usertmpfsBash legs ran through
plugins/evals/skills/plugin-eval/scripts/docker-links.py(the #8378 swap);find ~/.docker -mindepth 1 -type llisted the same 2 links before and after.python3 plugins/evals/skills/plugin-eval/scripts/test_run_validity.py: 151 tests OK.scripts/run-ruff.sh checkon the test file: clean.scripts/check-affected.sh: 14 passed, 1 skipped.Related
🤖 Generated with Claude Code
https://claude.ai/code/session_015te8CoibZv2y2Zsidz4jvz