chore: harden GitHub Actions workflows#78
Open
Hartorn wants to merge 2 commits into
Open
Conversation
- Add top-level `permissions: {}` with per-job least-privilege grants
- Add `persist-credentials: false` on all checkout steps
- Move `${{ }}` expressions out of `run:` blocks into `env:` vars
- Pin `pypa/gh-action-pypi-publish` by full SHA (v1.14.0)
- Replace `softprops/action-gh-release` with native `gh release create`
- Disable uv cache in release workflow to prevent cache-poisoning
- Add concurrency limits and explicit job names
- Bootstrap zizmor CI workflow (pedantic, GHAS SARIF upload)
- Keep `.github/CREDENTIALS.md` local-only via `.gitignore`
Passes `zizmor --pedantic` with zero findings.
Made-with: Cursor
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
- Update actions/checkout to de0fac2 (latest v6) - Update astral-sh/setup-uv to 37802ad (latest v7) - Add minimumReleaseAge: "3 days" to renovate.json Made-with: Cursor
This was referenced Apr 14, 2026
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.
Summary
permissions: {}with per-job least-privilege grants on all workflowspersist-credentials: falseon everyactions/checkoutstep${{ }}expressions out ofrun:blocks into step-levelenv:vars (template-injection prevention)pypa/gh-action-pypi-publishby full commit SHA (was onrelease/v1branch)softprops/action-gh-releasewith nativegh release createname:to all jobs (status check names preserved)actions/checkoutdigest tode0fac2(latest v6)astral-sh/setup-uvdigest to37802ad(latest v7)minimumReleaseAge: "3 days"torenovate.json(supply-chain cooldown).github/CREDENTIALS.mdto.gitignore(local-only audit doc)Passes
zizmor --pedanticwith zero findings.Supersedes: #70, #71, #73, #75, #77
Security audit status
none(least privilege)helpers:pinGitHubActionDigests,minimumReleaseAge: "3 days"Follow-up work (not in this PR)
Release workflow:
git push origin mainis brokenThe release workflow pushes a version bump commit directly to
main, which is blocked by two rulesets:GITHUB_TOKEN(integration 15368) is not a bypass actorFix steps:
relais-release) withContents: Read & WriteonlyGiskard-AI/relaisrepo onlybypass_actorto both rulesets (repo-level "main" has zero bypass actors — this is the hard blocker)releaseenvironment with: variableRELEASE_APP_ID, secretRELEASE_APP_PRIVATE_KEYcreate-release.ymlto useactions/create-github-app-tokenand push with the app token instead ofGITHUB_TOKENPyPI Trusted Publishing
Giskard-AI/relaisrepo,create-release.ymlworkflow,build-and-releasejob, andreleaseenvironment (if environment is added)Test plan
pre_checks,test (3.11–3.14),zizmor)pre_checks,test (3.11),test (3.12),test (3.13))