Skip to content

security: re-pin secret scanner onto the real gitleaks gate#289

Merged
hyperpolymath merged 1 commit into
mainfrom
security/real-secret-gate
Jul 21, 2026
Merged

security: re-pin secret scanner onto the real gitleaks gate#289
hyperpolymath merged 1 commit into
mainfrom
security/real-secret-gate

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

This repo's Secret Scanner has been reporting success while being incapable of failing.

The caller pinned secret-scanner-reusable at @d135b05 (2026-06-24) — 64 commits behind standards#500. At that pin the step is literally:

- name: Gitleaks Secret Scan
  continue-on-error: true          # <- cannot fail
  uses: gitleaks/gitleaks-action@e0c47f4f...

Re-pinned to @c65436ee (contains #500 — compare reports ahead 5 / behind 0):

- name: Install gitleaks (pinned + checksum-verified)   # sha256-verified binary
- name: Gitleaks secret scan (gating)
  run: ... gitleaks detect ... --exit-code 1            # gates for real

Also narrowed the caller's grant to contents: read — the new reusable invokes a binary rather than gitleaks-action, so it no longer requests pull-requests: write / actions: read. (That mismatch is what startup_failured standards' own scanner; see standards#511.)

.gitleaks.toml added

Without it the now-real gate reds on false positives here. The file is byte-identical to the estate baseline in standards#512 — it allowlists by anchored pattern class (dependency-metadata hashes, whole-value placeholder shapes, published test vectors), never by file and never by disabling a rule, so a genuinely new secret in the same files still trips.

Verified before opening: gitleaks detect --exit-code 1 passes on this tree.

Part of the estate-wide sweep of ~200 repos still on the pre-#500 pin.

🤖 Generated with Claude Code

The caller pinned standards' secret-scanner-reusable at @d135b05
(2026-06-24), which is 64 commits behind standards#500. At that pin the
gitleaks step carries `continue-on-error: true` — the scan runs, reports
success, and cannot fail. This repo's Secret Scanner has therefore been
green while being incapable of failing.

Re-pinned to @c65436ee, which contains #500: gitleaks now runs as a
pinned, checksum-verified binary with `--exit-code 1` and gates for real.

Also narrowed the caller's grant to `contents: read`. The new reusable
invokes a binary rather than gitleaks-action, so it no longer requests
`pull-requests: write` / `actions: read`.

Added the estate baseline .gitleaks.toml (byte-identical to the one in
standards), without which the now-real gate reds on false positives —
dependency-metadata hashes, documented placeholder shapes and published
test vectors. It allowlists by anchored pattern class, never by file and
never by disabling a rule, so a genuinely new secret still trips. Verified:
`gitleaks detect --exit-code 1` passes on this tree after the change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 231 issues detected

Severity Count
🔴 Critical 15
🟠 High 138
🟡 Medium 78

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Action actions/checkout@v4 needs attention",
    "type": "unpinned_action",
    "file": "pages-deploy.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Action actions/checkout@v4 needs attention",
    "type": "unpinned_action",
    "file": "pages.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Action actions/checkout@v4 needs attention",
    "type": "unpinned_action",
    "file": "pages.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Action actions/upload-pages-artifact@v3 needs attention",
    "type": "unpinned_action",
    "file": "pages.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Action actions/deploy-pages@v4 needs attention",
    "type": "unpinned_action",
    "file": "pages.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in build.yml",
    "type": "missing_timeout_minutes",
    "file": "build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in pages-deploy.yml",
    "type": "missing_timeout_minutes",
    "file": "pages-deploy.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in push-email-notify.yml",
    "type": "missing_timeout_minutes",
    "file": "push-email-notify.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in scorecard-enforcer.yml",
    "type": "missing_timeout_minutes",
    "file": "scorecard-enforcer.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in scorecard-enforcer.yml",
    "type": "scorecard_publish_with_run_step",
    "file": "scorecard-enforcer.yml",
    "action": "split_scorecard_publish_job",
    "rule_module": "workflow_audit",
    "severity": "high"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@hyperpolymath
hyperpolymath merged commit 736915b into main Jul 21, 2026
20 of 21 checks passed
@hyperpolymath
hyperpolymath deleted the security/real-secret-gate branch July 21, 2026 05:49
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