ultraworkers / ultraworkers/claw-code
Pin all third-party GitHub Actions to immutable commit SHAs across CI workflows
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 195k
- Forks
- 108k
- PR merge metrics
- No merged PRs in 30d
Description
Description
ultraworkers/claw-code has no explicit policy requiring SHA pinning for third-party GitHub Actions. The three workflows in .github/workflows/ (release.yml, rust-ci.yml, rust.yml) reference actions by floating tags:
actions/checkout@v4actions/setup-python@v5actions/upload-artifact@v4softprops/action-gh-release@v2Swatinem/rust-cache@v2
GitHub's security hardening guide for Actions recommends pinning third-party actions to a full-length commit SHA to defend against a compromised or malicious tag — a tag is mutable, a SHA is immutable. Sister projects in the same space (topgrade-rs/topgrade, devswha/gajae-code) already enforce this.
This repo is too small to need a separate hardening ticket for every workflow. Filing one issue to cover all three.
Risk
- Tag-mutation attack: a compromised upstream maintainer (or someone who steals their npm token) re-points
@v4to a malicious commit. Consumers running@v4get pwned on the next workflow run. - Audit trail: pinning to SHA means the workflow content reflects exactly what you reviewed at that moment — important for supply-chain attestations.
Proposed solution
Convert every floating tag to SHA + comment in the three workflows. Suggested SHA picks (latest v4/v5 release as of 2026-08-10):
actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1(or pin to v4.4.0)actions/setup-python@...(full SHA for the v5 release)actions/upload-artifact@...(full SHA for the v4 release)softprops/action-gh-release@...(full SHA for the v2 release)Swatinem/rust-cache@...(full SHA for the v2 release)
I'll file a separate PR with the SHA-pinned versions once this issue has a maintainer ack. PR will use the "anti-slop" resolution gate from .github/PULL_REQUEST_TEMPLATE.md: this issue is the linked evidence.
Alternatives considered
- Renovate config to auto-pin: heavier change; not justified for 3 workflows. Re-evaluate if the project adds more workflows.
- Dependabot monthly (as
CatoTH/antragsgruendoes): Dependabot does offer action-version PRs but doesn't pin to SHA by default — same gap.
Environment
- claw-code current state: 3 workflow files using
@vNrefs - This is a triage-only report — no remote state was modified to write it.
Contributor 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.
Research direction
Start by reviewing .github/workflows/release.yml, rust-ci.yml, and rust.yml, then check .github/PULL_REQUEST_TEMPLATE.md for the stated resolution gate. Replace each listed third-party action reference with a verified full commit SHA and version comment; done means all three workflows use immutable pins and remain valid.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions
- Domain
- ci-cd, security
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 72/100