Repository navigation
[infra] - Gate zizmor at medium severity and drop the stale deferral comment - #1735
Merged
Merged
Conversation
…comment The workflow-lint comment said 25 medium/low zizmor findings (mostly checkouts persisting credentials) were deferred work. They are gone: every checkout sets persist-credentials: false, and zizmor 1.28.0 --offline reports 0 findings at every severity down to informational. The gate moves from --min-severity=high to medium; low stays out so a new low-only rule cannot block every PR. Refs #1709 item 7. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FZ8JTF2v1eQd1L5CKQR8j
…elongs to zizmor's online ref-version-mismatch audit (medium) failed workflow-lint on this PR once the gate dropped to medium: the pinned SHA 4b504794 is tag v1.0.16, while the "# v1" comment names a tag that now points to 734c6ed8 (checked with git ls-remote). Comment only; the pinned SHA, and so the code that runs, is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FZ8JTF2v1eQd1L5CKQR8j
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.
Proposed changes
#1709 item 7. The
workflow-lintjob in.github/workflows/ci.ymlranzizmor --min-severity=high. Its comment said 25 medium/low findings were deferred work, mostly checkouts withoutpersist-credentials: false. That stopped being true: every checkout now sets it. Measured on main @ 14812bd with zizmor 1.28.0 (the CI pin) in--offlinemode, the result is 0 findings at every severity down toinformational.The "41 suppressed" in that output is not a hidden backlog. It is two things:
pedanticpersona shows:undocumented-permissions,anonymous-definition,template-injectionhelp notes,concurrency-limits;dangerous-triggersignores documented in [security] - Record why the three owner-gated issue_comment triggers are accepted #1704.Changes:
ci.yml:--min-severity=highbecomesmedium. The stale comment is replaced with what was measured and whylowstays out (so a new low-only rule cannot block every PR).devskim.yml(second commit,68d0cc27): the DevSkim-Action pin comment changes from# v1to# v1.0.16.About the
devskim.ymlchange. As this PR's Risks section predicted, the first CI run failed on one finding from an online audit, which I could not run without a token. The finding wasref-version-mismatch(medium) atdevskim.yml:50.git ls-remoteconfirms that the pinned SHA4b504794…isrefs/tags/v1.0.16, whilev1now points to734c6ed8…. This is a comment-only fix: the pinned SHA, and so the code that runs, is unchanged.Invariant / Governance Impact: none. CI gate and a workflow comment only.
Types of changes
Scope: Infrastructure / CI only.
Benefits / why
workflow-lintinstead of passing silently. The DevSkim mismatch is the first example: it had been passing unnoticed.Risks to monitor
# v4(codeql-action ×6),# v1(codex-action ×3),# v7(upload-artifact indevskim.yml). They pass today because those tags still point at the pinned SHAs. Each one becomes this same medium failure the next time its major tag moves. The fix is the same comment-only change, or Dependabot's actions bump, which rewrites the comment with the SHA.Checklist
docs/THREAT_MODEL.md,INVARIANTS.mdandSECURITY.md(and any relevant Phase docs)Further comments
Run directly:
zizmor 1.28.0 --offlineathigh,medium,lowandinformational: 0 findings each.--persona=pedanticto see what is suppressed: 15undocumented-permissions, 11anonymous-definition, 9template-injectionhelp notes, 1concurrency-limits.actionlintonci.ymlanddevskim.yml: clean.git ls-remoteonmicrosoft/DevSkim-Actionfor the tag mapping.Only CI ran: the online audits. The first run caught the DevSkim mismatch. The re-run on
68d0cc27is the confirmation.Suggested merge order of open PRs
Trial merges verified (
git merge --no-commit --no-ff+ abort, separately and stacked) against main @ 14812bd on 2026-10-20.devskim.ymlis touched by no other open PR.#1734 · Blocked (draft)
Impact:
codex-apply-fixes.ymlpublish-step deny list.Action: Independent; either order. Clean.
#1735 (this PR) · Blocked (draft)
Impact: zizmor gate high → medium, plus the DevSkim comment fix.
Action: Merge once
workflow-lintis green on68d0cc27. Clean.ELI5
zizmor is a scanner that checks the GitHub Actions workflow files for security mistakes. CI only failed on its "high" warnings, because months ago there were 25 smaller ones nobody had fixed yet, and the comment in
.github/workflows/ci.ymlstill said so. Those are all fixed now. So the bar moves down to "medium", and new medium problems now fail CI.The first CI run proved the point. One workflow,
devskim.yml, pinned the DevSkim scanner to the right exact commit but labelled it "v1" when that commit is actually "v1.0.16". The scanner caught the mismatch. I fixed the label. The pinned commit, and so the code that runs, did not change.I ran the scanner offline at every level. CI's online run found the one remaining problem, which is now fixed.
🤖 Generated with Claude Code
https://claude.ai/code/session_014FZ8JTF2v1eQd1L5CKQR8j
Last updated: 2026-10-20 14:50 ET