Gutcheck is a local developer tool: a CLI (also packaged as a GitHub Action and a Claude Code plugin) that verifies a diff by mutating copies of your functions and rerunning your own tests. It exposes no network services and sends no telemetry. The npm package has no dependencies and no install scripts.
The security-relevant surface:
- The probe executes the repository's own test code, exactly as running the test suite yourself would. Point it only at repositories whose tests you would run anyway.
- Mutations are applied to a temporary work copy, never to your checkout.
- The Claude Code plugin's session hook writes one file,
gutcheck-baseline, inside the repository's.gitdirectory; the Stop hook runs the probe with a 120-second budget and can be disabled per repo with a.gutcheck-offfile. - The GitHub Action runs the probe on the checked-out ref with the workflow's own permissions; it
needs
pull-requests: writeonly for the sticky comment.
- Keep the workflow trigger as
on: pull_request(as shipped inci/gutcheck.ymland in thebeepometer/gutcheckaction). GitHub withholds repository secrets from fork-PR runs on this trigger. - Never rewire it to
pull_request_targetwith a checkout of the PR head. That combination runs untrusted test code with your repository's secrets; no input of this action needs them. - Pin
uses: beepometer/gutcheck@...to a released tag or a full commit SHA rather than a mutable ref.
The action's fail-on-hollow input (default 'true'—see action.yml) can be set to
'false' for an advisory-only mode that reports without failing the job.
Report privately via a GitHub Security Advisory rather than a public issue, so it can be triaged before disclosure.
Gutcheck is pre-1.0; only the latest released version receives fixes.