Skip to content

ci: add zizmor workflow audit - #12670

Open
oc-tmueller wants to merge 3 commits into
masterfrom
ci/zizmor
Open

oc-tmueller wants to merge 3 commits into
masterfrom
ci/zizmor

Conversation

@oc-tmueller

@oc-tmueller oc-tmueller commented Oct 26, 2026 •

Copy link
Copy Markdown

Adds a zizmor audit of this repository's GitHub Actions workflows and Dependabot config, through the reusable owncloud/reusable-workflows/.github/workflows/zizmor.yml (owncloud/reusable-workflows#104). It's part of an org-wide rollout. Once the repo PRs have landed, Zizmor / Zizmor becomes a required check through owncloud/admin.

  • Behaviour: any finding, at any severity, fails the check, with an annotation on the offending line. The check runs on every PR, on pushes to master and weekly, because online audits such as known-vulnerable actions can start failing without a code change.
  • Permissions: contents: read only, so it also works on fork PRs.
  • Config: owncloud/* references may stay on @main. Everything else must be SHA-pinned.

Existing findings fixed

  • dependabot-cooldown: every Dependabot entry waits 7 days before
    proposing an update.
  • excessive-permissions: the branded GUI test workflow, which used the
    repository default (read/write), runs with contents: read. It builds
    with KW_THEME_PAT and uploads an artifact, neither needs the token.
  • github-app: the translation App token is not narrowed; the finding
    is suppressed inline (see the note below).
  • artipacked: checkouts do not persist credentials. The builds only run
    local git commands (Craft, git clang-format) on this public repo.

Notes

  • Translation App token: translate.yml keeps the token's inherited installation permissions, and the github-app finding is suppressed inline. create-pull-request rebuilds the translations branch from its base, so updating it may need workflows: write. Which permissions the App installation holds isn't visible from here, and requesting one it lacks would fail every run. Once someone confirms the installation's permissions, the token can be narrowed (permission-contents/pull-requests: write, plus permission-workflows: write if needed).
  • Overlap with chore(ci): set dependabot cooldown for github-actions #12662: the github-actions cooldown here overlaps the still-open chore(ci): set dependabot cooldown for github-actions #12662. Whichever lands second needs a trivial rebase.

zizmor 1.31.1 reports no findings on this branch.

🤖 Generated with Claude Code

oc-tmueller and others added 3 commits October 26, 2026 14:33
Runs zizmor over this repository's workflows and Dependabot config on
every pull request, on pushes to the default branch and weekly, through
owncloud/reusable-workflows' zizmor.yml. Any finding fails the check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
- dependabot-cooldown: every Dependabot entry waits 7 days before
  proposing an update.
- excessive-permissions: the branded GUI test workflow, which used the
  repository default (read/write), runs with contents: read. It builds
  with KW_THEME_PAT and uploads an artifact, neither needs the token.
- github-app: the translation App token requests only contents and
  pull-requests write, which opening the translations PR needs.
- artipacked: checkouts do not persist credentials. The builds only run
  local git commands (Craft, git clang-format) on this public repo.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
GitHub still replaces a queued push, schedule or dispatch run with a
newer one in the same group; only cancel-in-progress is limited to pull
requests. Say so instead of claiming only pull request runs cancel.

The translation App token goes back to inheriting the installation's
permissions, with the github-app finding suppressed inline: the
translations PR branch is rebuilt from its base, so its push can carry
workflow changes and need workflows: write, and whether the App
installation holds that is not visible from this repository. Asking
for a permission it lacks would fail every run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
@oc-tmueller
oc-tmueller requested a review from a team as a code owner October 26, 2026 13:53
@update-docs

update-docs Bot commented Oct 26, 2026

Copy link
Copy Markdown

Thanks for opening this pull request! The maintainers of this repository would appreciate it if you would create a changelog item based on your changes.

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