You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR #1665 activates workflow_dispatch on a full qualification workflow that checks out github.sha and executes its verifier, workflow, install, and cleanup code while the snapshot-qualification environment exposes Daytona, model-provider, Cloud, and cross-repository credentials. GitHub lets a caller select the workflow dispatch ref, so a qualification/* branch can replace the in-branch validation before any actor/ref guard runs.
An actor allowlist inside that same candidate-controlled workflow is not a trust boundary: the selected ref can remove it. The candidate ref must be immutable input data/package artifacts, never the source of the secret-bearing runner.
Qualification job uses environment: snapshot-qualification and secret env/step values.
Check out qualification verifier uses ref: ${{ github.sha }} and later runs scripts and workflows/verify-fleet-daytona.ts from that checkout.
The environment currently has no protection rule that can make candidate-controlled code safe.
Live Fleet credit remains 0/376 operations and 0/20 lifecycle assertions.
Required behavior
A no-secret request workflow may run on a qualification ref and upload only a bounded manifest request artifact.
A default-branch workflow_run consumer must always fire, validate exact workflow path/name/event/repository/conclusion, approved actor and rerun actor, source ref/SHA, complete bounded artifact inventory/digest/archive, and exact payload.
Every secret-bearing validation, Fleet orchestration, and cleanup instruction must be loaded from the trusted default branch.
Candidate Relay source may enter only through an immutable, attested package pointer; it must never supply executable workflow/harness code.
Credential permissions must be least privilege, and exact create-step-owned workspace IDs must be independently reconciled and deleted.
Add malicious-ref and payload-substitution regressions plus a live post-merge workflow_run proof.
Problem
PR #1665 activates
workflow_dispatchon a full qualification workflow that checks outgithub.shaand executes its verifier, workflow, install, and cleanup code while thesnapshot-qualificationenvironment exposes Daytona, model-provider, Cloud, and cross-repository credentials. GitHub lets a caller select the workflow dispatch ref, so aqualification/*branch can replace the in-branch validation before any actor/ref guard runs.An actor allowlist inside that same candidate-controlled workflow is not a trust boundary: the selected ref can remove it. The candidate ref must be immutable input data/package artifacts, never the source of the secret-bearing runner.
Exact evidence
63f635ac9e2b8a16cfcf51aead6aa46d03972d33.github/workflows/relay-cleanroom-qualification.ymlenvironment: snapshot-qualificationand secret env/step values.Check out qualification verifierusesref: ${{ github.sha }}and later runs scripts andworkflows/verify-fleet-daytona.tsfrom that checkout.0/376operations and0/20lifecycle assertions.Required behavior
workflow_runconsumer must always fire, validate exact workflow path/name/event/repository/conclusion, approved actor and rerun actor, source ref/SHA, complete bounded artifact inventory/digest/archive, and exact payload.Related: #1665, #1666, #1676.