Repository navigation
ci: run public tests under an isolated account - #25
Merged
Merged
Conversation
TueJon
marked this pull request as draft
October 24, 2026 15:02
TueJon
marked this pull request as ready for review
October 24, 2026 15:09
TueJon
commented
Oct 24, 2026
TueJon
left a comment
Owner
Author
There was a problem hiding this comment.
Verdict: ship_it — no blocking findings.
First review of this PR (no prior reviews). Scope is .github/workflows/ci.yml only: it pins the job to the ci-public runner label and adds a pre-checkout isolation assertion chain. The fork guard, event triggers and permissions: contents: read are unchanged, and this repository has no deploy workflow, so blast radius is test CI only.
Verified at this head:
- Runner
vd-fw-webmcpify-public(id 22) is online withself-hosted,Linux,X64,tuejon-ci,ci-public, so the eagerruns-onmatch is satisfiable; the originalvdrunner (id 21) does not carryci-publicand can no longer pick up this job. - Exact-head run 40104657111 / job 120903933011 executed on
vd-fw-webmcpify-public, with bothVerify runner isolationandnpm run checkgreen. - The asserted account state matches the live host: user
ci-publicis in groupci-publiconly (nosudo/docker),/home/vdcarries a named deny ACL for that account, and the unit runs underci-publicwithNoNewPrivileges, an empty capability set and Docker socket paths inaccessible. - The assertions run before
actions/checkout, so no repository-controlled code executes before the boundary check, and a mislabelled privileged runner would fail the job rather than silently run public code asvd.
Notes (non-blocking, separately owned):
- The
ci-publicunit is currently active but not enabled at boot. After a host reboot this label disappears and main CI would queue until the rollout starts the unit; that activation belongs tovdfw-runner-privilege-separation-2026-10-22, not to a change in this PR. - This diff does not claim to contain an approved hostile workflow that rewrites its own
runs-on; that remaining limit is documented on the host side and is not introduced here.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Public PR tests currently run as
vdalongside host deployment credentials. Route them to the preparedci-publicaccount, which has no sudo/Docker access and cannot traverse/home/vd. Keep fork guards and approval requirements, and verify the account boundary in each run.Validation: this PR runs the existing full CI on the isolated runner. Host rollout is tracked by
vdfw-runner-privilege-separation-2026-10-22; existing runner retirement follows green main/deploy evidence and the required host approval.