ci(evals): run the eval dispatch with TMPDIR outside /tmp so Bash cases can write
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 74/100
Research direction
Start in the workflow file eval-browser-dispatch.yml, where the claude plugin eval step runs with the runner's default TMPDIR. Set TMPDIR on that step to a short directory outside /tmp (24 characters or fewer), then check the sandbox settings it produces. Done when a dispatch of a Bash-granting case that writes in its workspace shows no 'Read-only file system' line in its trace.
Written by the indexing model from the issue text.
Description
Refs: #12070
Outcome
eval-browser-dispatch.yml runs claude plugin eval with the runner's default TMPDIR, so every run root lands under /tmp. On Claude Code 2.1.316 the run's own sandbox settings then make that root read-only to Bash: sandbox.filesystem.allowWrite lists the run's home and tmp directories, and denyWrite lists //tmp, which covers both and wins. Any Bash-granting case that writes in its workspace (a git fetch, git merge, the verify record, the gh-forge stand-in's state) fails with Read-only file system in CI.
Evidence from the #12070 host run (2026-11-01, Claude Code 2.1.316, --runs 1 --ablation none, the two pull-request-ready-* cases):
- Default
TMPDIR:cannot lock ref 'ORIG_HEAD': Unable to create '<run>/home/cwd/.git/ORIG_HEAD.lock': Read-only file system, andzsh:2: read-only file system: <run>/tmp/claude-1000/cwd-*. Neither case reachedgh pr ready. TMPDIRoutside/tmp: no read-only write in either trace, both cases reachedgh pr readyand scored 1.0, validity gate VALID.
/evals:plugin-eval already tells local runs on Linux and WSL2 to set TMPDIR to a short directory outside the system temp directory.
Done when
- The eval dispatch workflow runs
claude plugin evalwithTMPDIRset to a short directory outside/tmp(at most 24 characters, per/evals:plugin-eval's sandbox-start reference, so the sandbox's bridge sockets still fit). - A dispatch of a Bash-granting case that writes in its workspace shows no
Read-only file systemline in its trace.
Out of scope
- Changing the eval cases or the gh-forge stand-in: with a writable root they need no change.
- Dominant language
- Shell
- Stars
- 22
- Forks
- 2
- Avg merge
- 1h 40m
- Merged PRs (30d)
- 918
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from melodic-software/claude-code-plugins
-
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
melodic-software/claude-code-plugins#9179 · 1 comment ·
Maintainers usually reply within 1 day
-
priority: low status: confirmed
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
melodic-software/claude-code-plugins#8799 ·
Maintainers usually reply within 1 day
-
Worktree-isolated sessions refuse claude plugin eval (guard reads 'eval' as shell eval)Possibly taken @kyle-sexton claimed this 4 days ago. Openneeds-human priority: low work-class: read-only
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
melodic-software/claude-code-plugins#5696 · 1 comment ·
Maintainers usually reply within 1 day
-
needs-human priority: critical
Difficulty 4/5 1-2 days Newbie friendliness 25/100
melodic-software/claude-code-plugins#13083 · 1 comment ·
Maintainers usually reply within 1 day
-
host-run priority: medium status: confirmed work-class: read-only
Difficulty 4/5 3-5 days Newbie friendliness 25/100
melodic-software/claude-code-plugins#13077 · 3 comments ·
Maintainers usually reply within 1 day
All issues in melodic-software/claude-code-plugins
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
rossoctl/automation#130 ·
Maintainers usually reply within 3 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
fairagro/m4.2_infrastructure#68 · 3 comments ·
Maintainers usually reply within 1 day
-
security
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Eyevinn/python-runner#38 ·
-
lesson-submission pending-review
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Ikalus1988/MisakaNet#4446 ·
Maintainers usually reply within 1 day