Skip to content

ci: pin third-party actions to SHAs, persist-credentials: false, seed zizmor.yml - #32

Merged
twistedmelonman merged 1 commit into
mainfrom
claude/ci-zizmor-019HDRKL
Sep 9, 2026
Merged

twistedmelonman merged 1 commit into
mainfrom
claude/ci-zizmor-019HDRKL

Conversation

@twistedmelonman

Copy link
Copy Markdown
Member

Wave 2 zizmor remediation, matching the pattern already shipped across nine other repos (e.g. smartwatermelon/scripts#172).

  • SHA-pinned actions/checkout@v7.0.1 (ci.yml x2, release.yml, update-mirrors.yml, claude.yml) and anthropics/claude-code-action@v1.0.219 (claude.yml).
  • Added persist-credentials: false to the checkouts in ci.yml, claude.yml, and release.yml — none of those jobs push or commit with the checkout's token.
  • Deliberately left update-mirrors.yml's checkout without persist-credentials: false, with an inline # zizmor: ignore[artipacked]: its "Create pull request" step runs git push origin "$BRANCH", which authenticates using the credential that checkout persists (the GH_TOKEN env on that step covers only the gh CLI calls, not git push itself). Dropping the persisted credential would break the push.
  • While getting the pre-commit zizmor gate clean, also fixed four pre-existing template-injection (info) findings in update-mirrors.yml by moving ${{ steps.check.outputs.* }} interpolations out of inline shell and into env: blocks, matching the pattern the rest of the file already used for ANOMALY_REASON/RUN_URL. This was required to get past the local pre-commit hook, which blocks on any zizmor finding regardless of severity.
  • Seeded the canonical zizmor.yml at the repo root.
  • .github/dependabot.yml already existed; left unchanged.

zizmor and actionlint are clean locally; markdownlint debt (1 pre-existing finding in LICENSE.md) remains and is wave 3.

https://claude.ai/code/session_019HDRKLQNv82SEBd4zGpcXf

… zizmor.yml

Match the wave 2 zizmor remediation pattern already shipped across nine
other repos (e.g. smartwatermelon/scripts#172).

- SHA-pin actions/checkout@v7.0.1 and anthropics/claude-code-action@v1.0.219
  in ci.yml, claude.yml, release.yml, and update-mirrors.yml.
- Add persist-credentials: false to checkouts in ci.yml, claude.yml, and
  release.yml — none of those jobs push or commit with the checkout's
  token.
- Leave update-mirrors.yml's checkout without persist-credentials: false
  and mark it with an inline zizmor: ignore[artipacked]: its "Create pull
  request" step runs `git push origin "$BRANCH"`, which authenticates with
  the credential this checkout persists (the GH_TOKEN env on that step only
  covers the `gh` CLI calls, not git itself).
- Seed the canonical zizmor.yml at the repo root.

zizmor and actionlint are clean locally; markdownlint debt remains and is
wave 3.

Claude-Session: https://claude.ai/code/session_019HDRKLQNv82SEBd4zGpcXf
@twistedmelonman
twistedmelonman merged commit 5d79288 into main Sep 9, 2026
4 of 5 checks passed
@twistedmelonman
twistedmelonman deleted the claude/ci-zizmor-019HDRKL branch September 9, 2026 01:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant