Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ updates:
- "*" # Group all Actions updates into a single larger pull request
schedule:
interval: weekly
cooldown: # https://nesbitt.io/2026/03/04/package-managers-need-to-cool-down.html
default-days: 7
6 changes: 4 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ on:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
permissions: {}
jobs:
build-test:
runs-on: ${{ matrix.os }}
Expand All @@ -19,11 +20,12 @@ jobs:
os: [macos-latest, ubuntu-latest, windows-latest]
steps:
- name: Checkout
uses: actions/checkout@v7
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
persist-credentials: false
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v7
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v7
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Set up Python
uses: actions/setup-python@v7
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.x"
- name: Install pypa/build
Expand All @@ -24,7 +24,7 @@ jobs:
- name: Build a binary wheel and a source tarball
run: python3 -m build
- name: Store the distribution packages
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: python-package-distributions
path: dist/
Expand All @@ -44,12 +44,12 @@ jobs:

steps:
- name: Download all the dists
uses: actions/download-artifact@v8
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2

github-release:
name: >-
Expand All @@ -65,12 +65,12 @@ jobs:

steps:
- name: Download all the dists
uses: actions/download-artifact@v8
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: python-package-distributions
path: dist/
- name: Sign the dists with Sigstore
uses: sigstore/gh-action-sigstore-python@v3.5.0
uses: sigstore/gh-action-sigstore-python@790bc6befb9d733738f18d8f895854b453640ec9 # v3.5.0
with:
inputs: >-
./dist/*.tar.gz
Expand Down Expand Up @@ -109,12 +109,12 @@ jobs:

steps:
- name: Download all the dists
uses: actions/download-artifact@v8
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: python-package-distributions
path: dist/
# TODO(cclauss): Uncomment this job step when we have admin access to test.pypi.org
# - name: Publish distribution 📦 to TestPyPI
# uses: pypa/gh-action-pypi-publish@release/v1
# uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
# with:
# repository-url: https://test.pypi.org/legacy/
5 changes: 5 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,8 @@ repos:
rev: v0.25
hooks:
- id: validate-pyproject

- repo: https://github.com/zizmorcore/zizmor-pre-commit
rev: v1.29.0
hooks:
- id: zizmor
Comment on lines +77 to +80

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

manifest="$(mktemp)"
trap 'rm -f "$manifest"' EXIT

curl -fsSL \
  'https://raw.githubusercontent.com/zizmorcore/zizmor-pre-commit/v1.29.0/.pre-commit-hooks.yaml' \
  > "$manifest"

grep -n '^files:' "$manifest"
if grep -Eq '\.pre-commit-config\.ya?ml' "$manifest"; then
  echo "The upstream hook now includes pre-commit configuration files."
  exit 1
fi

Repository: cpplint/cpplint

Length of output: 153


🏁 Script executed:

set -u

echo '--- local configuration ---'
sed -n '65,90p' .pre-commit-config.yaml

echo '--- upstream hook manifest ---'
curl -fsSL \
  'https://raw.githubusercontent.com/zizmorcore/zizmor-pre-commit/v1.29.0/.pre-commit-hooks.yaml' \
  | sed -n '1,120p'

Repository: cpplint/cpplint

Length of output: 884


🌐 Web query:

zizmor v1.29.0 supported file types .pre-commit-config.yaml

💡 Result:

In zizmor v1.29.0, experimental support was added for auditing pre-commit inputs, specifically including.pre-commit-config.yaml files and hook definitions [1][2]. When running zizmor, it can automatically infer the input type—such as a workflow, action, Dependabot configuration, or a pre-commit configuration—when reading from standard input [3]. For local directories or repositories, zizmor identifies and collects these auditable inputs automatically, and users can explicitly target or filter these inputs using the --collect=pre-commit option [3]. It is important to distinguish between using zizmor to audit a.pre-commit-config.yaml file and using zizmor itself as a hook within a.pre-commit-config.yaml file. The former refers to zizmor's new ability to analyze the security of pre-commit configurations [1][2], while the latter is a well-established integration where zizmor is installed as a hook in a repository's.pre-commit-config.yaml to run security audits on GitHub Actions workflows [4][5].

Citations:


🏁 Script executed:

set -u

echo '--- v1.29.0 release note ---'
curl -fsSL 'https://raw.githubusercontent.com/zizmorcore/zizmor/v1.29.0/CHANGELOG.md' \
  | grep -in -A8 -B4 'pre-commit' || true

echo '--- usage documentation references ---'
for url in \
  'https://raw.githubusercontent.com/zizmorcore/zizmor/v1.29.0/docs/usage.md' \
  'https://raw.githubusercontent.com/zizmorcore/zizmor/v1.29.0/docs/integrations.md'
do
  echo "URL: $url"
  curl -fsSL "$url" | grep -in -A5 -B5 'pre-commit' || true
done

echo '--- proposed file pattern behavior ---'
python3 - <<'PY'
import re
pattern = r'^(\.github/(workflows/.*|dependabot\.ya?ml)|(?:.*/)?action\.ya?ml|\.pre-commit-config\.ya?ml)$'
for path in [
    ".pre-commit-config.yaml",
    ".github/workflows/ci.yml",
    ".github/dependabot.yml",
    "sub/action.yaml",
    "action.yml",
    ".github/actions/action.yml",
    "README.md",
]:
    print(f"{path}: {bool(re.fullmatch(pattern, path))}")
PY

Repository: cpplint/cpplint

Length of output: 2941


Include .pre-commit-config.yaml in the hook file scope.

The v1.29.0 hook manifest excludes .pre-commit-config.yaml, so pre-commit skips it. zizmor v1.29.0 supports auditing pre-commit configurations. Add a local files override if this PR must audit that configuration.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.pre-commit-config.yaml around lines 77 - 80, Update the zizmor hook
configuration at rev v1.29.0 to add a local files override that includes
.pre-commit-config.yaml in its audit scope, while preserving the existing hook
id and repository configuration.

3 changes: 3 additions & 0 deletions zizmor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
rules:
excessive-permissions:
disable: true
Comment on lines +2 to +3

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -eu

printf '%s\n' '--- zizmor.yml ---'
cat -n zizmor.yml

printf '%s\n' '--- zizmor hook ---'
sed -n '65,90p' .pre-commit-config.yaml

printf '%s\n' '--- local zizmor references ---'
rg -n -i 'excessive-permissions|zizmor' . --glob '!node_modules' --glob '!dist' --glob '!build' | head -200

Repository: cpplint/cpplint

Length of output: 687


🌐 Web query:

zizmor v1.29.0 configuration rules disable excessive-permissions audit documentation

💡 Result:

In zizmor v1.29.0, you can disable the excessive-permissions audit by modifying your zizmor configuration file (typically zizmor.yml) to set the disable property to true for that specific rule [1][2]. To disable the audit, add the following to your configuration file: rules: excessive-permissions: disable: true The zizmor documentation emphasizes that disabling audits should be used as a measure of last resort, as disabled rules will not appear in ignored or suppressed finding counts, which may lead to missing important future findings [1][2]. Before disabling the audit entirely, the developers recommend considering these alternatives [1][2]: 1. Ignoring specific findings using the rules..ignore configuration [1][2]. 2. Adjusting your persona (e.g., removing --persona=pedantic or --persona=auditor) if you are currently using a more sensitive persona [1][2]. Configuration files can be placed where zizmor discovers them automatically or passed explicitly using the --config flag or the ZIZMOR_CONFIG environment variable [3][4].

Citations:


Keep the excessive-permissions audit enabled.

disable: true disables the complete audit. Remove this block. If a finding is a confirmed false positive, use a documented, targeted ignore instead.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@zizmor.yml` around lines 2 - 3, Remove the excessive-permissions
configuration block from zizmor.yml so the audit remains enabled; do not disable
the complete audit, and use only a documented targeted ignore for any confirmed
false positive.

Comment on lines +2 to +3

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

—so this is the only change I ask for.

Suggested change
excessive-permissions:
disable: true
unpinned-uses:
config:
policies:
"*": ref-pin

It's not as precise as I'd want it to be (allow v6 but not v6.1.0), but it'll do.