Skip to content

fix: resolve security alert potential secrets detected - #471

Open
4444J99 wants to merge 2 commits into
mainfrom
limen/gh-organvm-i-theoria-github-469-3399
Open

fix: resolve security alert potential secrets detected#471
4444J99 wants to merge 2 commits into
mainfrom
limen/gh-organvm-i-theoria-github-469-3399

Conversation

@4444J99

@4444J99 4444J99 commented Jun 20, 2026

Copy link
Copy Markdown
Member

Autonomous limen dispatch of task GH-organvm-i-theoria-github-469.

GitHub issue #469. ## Secret Scanning Alert Our automated secret scanning has detected potential secrets or credentials in the codebase. ### Scan Results - TruffleHog: ✅ Clean - Gitleaks: ⚠️ Found 6875 potential leaks - detect-secrets: ⚠️ Found 44 files with secrets ### Action Required 1. Review the scan results attached to this workflow run 2. Identify false positives and update .gitleaks.toml o

Refs: #469

Produced in an isolated worktree off origin — review before merge.

limen task GH-organvm-i-theoria-github-469
@4444J99
4444J99 enabled auto-merge June 20, 2026 08:10

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Sorry @4444J99, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Hi @4444J99, I've received your request, and I'm working on it now! You can track my progress in the logs for more details.

@github-actions

Copy link
Copy Markdown
Contributor

Action Pinning Required

This PR contains GitHub Actions that are not pinned to SHA commits.

Why this matters:
SHA pinning prevents supply chain attacks where a malicious actor could hijack a version tag.

How to fix:

  1. Run python src/automation/scripts/utils/update-action-pins.py
  2. Or manually pin actions using format: action@SHA # ratchet:action@version

Example:

# Before (vulnerable)
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # ratchet:actions/checkout@v6.0.2

# After (secure)
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # ratchet:actions/checkout@v6.0.2

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Large Pull Request Detected

This PR is quite large:

  • 14 files changed
  • 23957 total line changes

Consider:

  • Breaking this into smaller, focused PRs
  • Each PR should address a single concern
  • Smaller PRs are easier to review and less likely to introduce bugs

If this PR must remain large, please provide extra context in the description about why these changes are grouped together.

@github-actions

Copy link
Copy Markdown
Contributor

Version Control Standards Validation Failed

This pull request does not meet our version control standards.

Common Issues:

  1. Branch Name: Must follow format <lifecycle>/<type>/<component>[/<subcomponent>]

    • Examples:
      • develop/feature/user-authentication
      • production/hotfix/critical-security-fix
      • maintenance/v1.x/security-patches
  2. Commit Messages: Must follow Conventional Commits format

    • Format: <type>(<scope>): <subject>
    • Types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert
    • Examples:
      • feat(auth): add OAuth2 authentication
      • fix: resolve memory leak
      • docs: update installation guide

Documentation:

Please update your branch name and/or commit messages to follow the standards.

@github-actions github-actions Bot added large-pr documentation Improvements or additions to documentation github-actions Related to GitHub Actions workflows configuration Configuration changes security Security vulnerability or security-related issue and removed large-pr labels Jun 20, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Reviewers Assigned

Reviewers have been automatically assigned based on the CODEOWNERS file.

What's Next:

  • Reviewers will be notified
  • Please respond to any feedback
  • Ensure all CI checks pass
  • Reviews typically completed within 48 hours

Need Help?


Automated reviewer assignment - PR #471

@github-actions

github-actions Bot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

💬 Task Catcher Summary

💬 Unresolved discussions - Resolve review threads

📋 Task Overview

Category Count
PR Body Unchecked Tasks 0
PR Body Checked Tasks 0 ✅
Comment Tasks 0
Blocker Items 0 🚨
Suggestions 0 💡
Unresolved Review Threads 4

🎯 Next Steps

  • 💬 Resolve review discussion threads

Options:

  • ✅ Check off tasks as you complete them
  • 📋 Create issues for tasks to handle later: Add create-issues-for-tasks label
  • 🚫 Ignore tasks for merge: Add ignore-task-checks label

Last scanned: 2026-07-19 08:42 UTC
Triggered by: issue_comment

@github-actions

Copy link
Copy Markdown
Contributor

🔗 Broken Links Detected

Full Github Actions output

Please fix the broken links before merging.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 I'm sorry @4444J99, but I was unable to process your request. Please see the logs for more details.

@github-actions

Copy link
Copy Markdown
Contributor

🧪 Integration Test Results

Test Suite Status
Month 1 Core Workflows ✅ Passed
Month 2 Features ✅ Passed
Month 3 Advanced ✅ Passed
Critical Path ✅ Passed

Overall: ✅ All tests passed!

View detailed test reports

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request addresses secret scanner hygiene issues (GH-469) by introducing root symlinks for Gitleaks and detect-secrets configurations, extending default Gitleaks rules, and refining exclusion patterns in pre-commit hooks to ignore generated caches, virtual environments, and lock files. The documentation has been updated to reflect these changes and detail the triage process. The review feedback recommends wrapping the pre-commit exclude regex in single quotes for robust YAML parsing and updating the documented baseline regeneration command to use --all-files instead of shell expansion to handle spaces and argument limits safely.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread .config/pre-commit.yaml
- id: detect-secrets
args: [--baseline, .config/.secrets.baseline]
exclude: ^(package-lock\.json|\.config/\.secrets\.baseline)$
exclude: (^|/)(\.git|\.hg|\.svn|\.config/\.secrets\.baseline|\.secrets\.baseline|\.mypy_cache|\.pytest_cache|\.ruff_cache|\.venv|venv|node_modules|coverage|dist|build|__pycache__)(/|$)|(^|/)(package-lock\.json|uv\.lock)$

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The regular expression for exclude contains multiple special characters (such as | and parentheses) and backslashes. To ensure robust YAML parsing across different parsers and maintain consistency with .config/pre-commit-rapid.yaml, it is highly recommended to wrap this regex in single quotes.

    exclude: '(^|/)(\.git|\.hg|\.svn|\.config/\.secrets\.baseline|\.secrets\.baseline|\.mypy_cache|\.pytest_cache|\.ruff_cache|\.venv|venv|node_modules|coverage|dist|build|__pycache__)(/|$)|(^|/)(package-lock\.json|uv\.lock)$'

Comment on lines +86 to +87
DETECT_SECRETS_EXCLUDE='(^|/)(\.git|\.hg|\.svn|\.config/\.secrets\.baseline|\.secrets\.baseline|\.mypy_cache|\.pytest_cache|\.ruff_cache|\.venv|venv|node_modules|coverage|dist|build|__pycache__)(/|$)|(^|/)(package-lock\.json|uv\.lock)$'
detect-secrets scan --force-use-all-plugins --exclude-files "$DETECT_SECRETS_EXCLUDE" $(git ls-files) > .config/.secrets.baseline

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Using $(git ls-files) can fail if any tracked filenames contain spaces, and it can exceed the command-line length limit (ARG_MAX) in larger repositories. Since detect-secrets scan natively supports the --all-files option, you can combine it with --exclude-files to safely and robustly scan the workspace without relying on shell expansion.

Suggested change
DETECT_SECRETS_EXCLUDE='(^|/)(\.git|\.hg|\.svn|\.config/\.secrets\.baseline|\.secrets\.baseline|\.mypy_cache|\.pytest_cache|\.ruff_cache|\.venv|venv|node_modules|coverage|dist|build|__pycache__)(/|$)|(^|/)(package-lock\.json|uv\.lock)$'
detect-secrets scan --force-use-all-plugins --exclude-files "$DETECT_SECRETS_EXCLUDE" $(git ls-files) > .config/.secrets.baseline
DETECT_SECRETS_EXCLUDE='(^|/)(\.git|\.hg|\.svn|\.config/\.secrets\.baseline|\.secrets\.baseline|\.mypy_cache|\.pytest_cache|\.ruff_cache|\.venv|venv|node_modules|coverage|dist|build|__pycache__)(/|$)|(^|/)(package-lock\.json|uv\.lock)$'\ndetect-secrets scan --all-files --force-use-all-plugins --exclude-files "$DETECT_SECRETS_EXCLUDE" > .config/.secrets.baseline

@llamapreview llamapreview Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Auto Pull Request Review from LlamaPReview

Large PR Notification

Dear contributor,

Thank you for your substantial contribution to this project. LlamaPReview has detected that this Pull Request contains a large volume of changes, which exceeds our current processing capacity.

Details:

  • PR and related contents total size: Approximately 960,325 characters
  • Current limit: 256,000 characters

Next steps:

  1. Consider breaking this PR into smaller, more focused changes if possible.
  2. For manual review, please reach out to your team members or maintainers.

We appreciate your understanding and commitment to improving this project. Your contributions are valuable, and we want to ensure they receive the attention they deserve.

LlamaPReview is continuously evolving to better serve the community. Share your thoughts on handling large PRs in our GitHub Discussions - your feedback helps us improve and expand our capabilities.

If you have any questions or need assistance, our community and support team are here to help.

Best regards,
LlamaPReview Team

@claude

claude Bot commented Jun 20, 2026

Copy link
Copy Markdown

Code Review — PR #471: Secret Scanning Alert Resolution

Overview

This PR resolves issue #469 (Gitleaks: 6875 findings, detect-secrets: 44 files) by addressing two root causes:

  1. Gitleaks was scanning the full git history rather than just the current working tree
  2. The .config/.secrets.baseline had been regenerated from a dirty workspace containing .git, .mypy_cache, .ruff_cache, .venv, node_modules, and similar generated paths — inflating it by ~23,500 entries

The fix is targeted and technically sound. Findings below are ordered by severity.


Issues

[Medium] sk_live_51abc123xyz789 allowlist entry may be orphaned

.config/.gitleaks.toml adds an allowlist regex for sk_live_51abc123xyz789, but this PR also replaces that exact string in docs/guides/security-best-practices.md with sk_live_xxx. Verify whether the pattern still appears anywhere else in the repo before the merge. If it doesn't, the allowlist entry is a minor smell — it allows a realistic Stripe key prefix as a non-secret, which weakens detection.

git grep -r 'sk_live_51abc123xyz789'

[Minor] cache: pip removed without replacement

cache: pip was dropped from setup-python in safeguard-5-secret-scanning.yml and scan-for-secrets.yml. The runbook says it was "fragile" but doesn't explain how. Without caching, every workflow run will install truffleHog3 and detect-secrets cold, adding latency. If pip caching was broken, scoping the cache key (key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements*.txt') }}) would be safer than removal.

[Minor] detect-secrets baseline regeneration command risks ARG_MAX on large repos

The new canonical command in SECRET_SCANNING_GUIDE.md is:

detect-secrets scan --force-use-all-plugins --exclude-files "$DETECT_SECRETS_EXCLUDE" $(git ls-files) > .config/.secrets.baseline

$(git ls-files) expands all tracked paths as positional arguments. On a repo with thousands of files this can exceed the shell ARG_MAX limit. Using --all-files with --exclude-files instead (which is what the workflows use) avoids this problem entirely.


Positive Observations

--no-git flag — This is the single most impactful fix. Moving routine CI scans to current-tree only (gitleaks detect --no-git) is the correct posture for scheduled alert workflows. The runbook correctly notes that full-history audits should remain a separate, intentional step.

Baseline pruning — Reducing the baseline from ~23,500 entries to ~120 tracked files is the right fix. The polluted baseline was itself a security risk: reviewers can't meaningfully audit a 23,000-entry file for false negatives.

Unified exclude pattern — Centralising the DETECT_SECRETS_EXCLUDE regex as an env: block and reusing it across all three workflow files removes the earlier divergence where different files had subtly different exclusion patterns. This is consistent and maintainable.

Symlinks at root (.gitleaks.toml, .secrets.baseline) — Allows both the CI-explicit --config .config/.gitleaks.toml path and the default tool auto-discovery path to resolve to the same config. Eliminates the class of "worked locally, different results in CI" bugs.

useDefault = true — Re-enabling the upstream Gitleaks rule pack while keeping the narrow custom allowlist is the right layering. The previous config effectively ran Gitleaks with only custom rules, which could miss categories the default pack covers.

Gitleaks installation via temp dir — Extracting the tarball into $(mktemp -d) prevents transient release-tarball contents from touching the working tree, which could generate spurious detections during a scan step. Clean improvement.

Authorization: tokenAuthorization: Bearer in BRANCH_PROTECTION.md — Correct modernisation; GitHub deprecated the token scheme in favour of Bearer.

Runbook entry — The GH-469 section documents root cause, fix steps, and local verification results. This pattern makes future triage much faster.


Nit

The DETECT_SECRETS_EXCLUDE regex is duplicated verbatim across three workflow files (safeguard-5-secret-scanning.yml, scan-for-secrets.yml, reusable/security-scanning.yml) and two pre-commit configs. If the pattern ever needs updating, all five locations must be changed in sync. The reusable workflow partially addresses this via DETECT_SECRETS_EXCLUDE as a workflow-level env: but that doesn't help the pre-commit side. Consider extracting to a repository variable (vars.DETECT_SECRETS_EXCLUDE) or a shared .env.scanning file sourced in both contexts — but this is a low-urgency quality-of-life change, not a blocker.


Summary

The core changes (baseline pruning, --no-git, unified excludes, symlinks) are correct and address the root causes. The main items to verify before merge: confirm the sk_live_51abc123xyz789 allowlist is still needed, and reconsider the git ls-files in the documented regeneration command. Everything else is solid.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6a0254d289

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

if [ -f "$DETECT_SECRETS_BASELINE" ]; then
echo "Using $DETECT_SECRETS_BASELINE for comparison"
detect-secrets scan --all-files --force-use-all-plugins --baseline "$DETECT_SECRETS_BASELINE" --exclude-files '(^|/)\.config/\.secrets\.baseline$' > detect-secrets-results.json || true
detect-secrets scan --all-files --force-use-all-plugins --baseline "$DETECT_SECRETS_BASELINE" --exclude-files "$DETECT_SECRETS_EXCLUDE" > detect-secrets-results.json || true

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Use the baseline hook before counting secrets

When this scheduled alert workflow runs with the committed .config/.secrets.baseline, detect-secrets scan --baseline writes a full updated baseline rather than a report of only new findings; the Yelp README distinguishes scan for baseline maintenance from detect-secrets-hook for alerting on new secrets. Because the next block counts .results files, the 29 known baseline files added by this patch still make the workflow set found_secrets=true and reopen the daily alert even though the findings are allowlisted. Use the hook/diff against the existing baseline before treating results as new secrets.

Useful? React with 👍 / 👎.

Comment thread .config/.gitleaks.toml
title = "Gitleaks Configuration for {{ORG_NAME}}/.github"

[extend]
useDefault = true

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve the default generic secret rule

Adding useDefault = true inherits the built-in Gitleaks rules, but the Gitleaks docs say duplicate rules in the extending config override the default rule. This file still defines id = "generic-api-key" below with a much narrower regex that only matches api_key/apikey, so current-tree scans now miss generic secrets such as token = ..., password = ..., or client_secret = ... that the v8.18.1 default generic rule would catch. Rename the local rule or merge only the allowlist so the default generic detector stays active.

Useful? React with 👍 / 👎.

@4444J99 4444J99 changed the title [limen GH-organvm-i-theoria-github-469] 🚨 Security Alert: Potential Secrets Detected in Code fix: resolve security alert potential secrets detected Jul 5, 2026
@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Action Pinning Required

This PR contains GitHub Actions that are not pinned to SHA commits.

Why this matters:
SHA pinning prevents supply chain attacks where a malicious actor could hijack a version tag.

How to fix:

  1. Run python src/automation/scripts/utils/update-action-pins.py
  2. Or manually pin actions using format: action@SHA # ratchet:action@version

Example:

# Before (vulnerable)
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # ratchet:actions/checkout@v6.0.2

# After (secure)
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # ratchet:actions/checkout@v6.0.2

@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

🔗 Broken Links Detected

Full Github Actions output

Please fix the broken links before merging.

@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

⚠️ Large Pull Request Detected

This PR is quite large:

  • 17 files changed
  • 23972 total line changes

Consider:

  • Breaking this into smaller, focused PRs
  • Each PR should address a single concern
  • Smaller PRs are easier to review and less likely to introduce bugs

If this PR must remain large, please provide extra context in the description about why these changes are grouped together.

@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Version Control Standards Validation Failed

This pull request does not meet our version control standards.

Common Issues:

  1. Branch Name: Must follow format <lifecycle>/<type>/<component>[/<subcomponent>]

    • Examples:
      • develop/feature/user-authentication
      • production/hotfix/critical-security-fix
      • maintenance/v1.x/security-patches
  2. Commit Messages: Must follow Conventional Commits format

    • Format: <type>(<scope>): <subject>
    • Types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert
    • Examples:
      • feat(auth): add OAuth2 authentication
      • fix: resolve memory leak
      • docs: update installation guide

Documentation:

Please update your branch name and/or commit messages to follow the standards.

@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

🚫 Merge Blocked

This PR has unresolved blocker items that must be addressed before merging.

Review the task summary above and:

  1. Address all items marked with 🚨 BLOCKER
  2. Check off completed tasks
  3. Or add ignore-task-checks label to bypass (not recommended)

The has-blockers label will be automatically removed when blockers are resolved.

@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

🧪 Integration Test Results

Test Suite Status
Month 1 Core Workflows ✅ Passed
Month 2 Features ✅ Passed
Month 3 Advanced ✅ Passed
Critical Path ✅ Passed

Overall: ✅ All tests passed!

View detailed test reports

@claude

claude Bot commented Jul 5, 2026

Copy link
Copy Markdown

Code Review — PR #471: fix: resolve security alert potential secrets detected

Overall this is a well-structured fix for a genuine scanner-hygiene problem. The root cause (.mypy_cache, .git, and other build artifacts inflating the secrets baseline) is correctly identified and the approach is sound. Below are findings across the categories requested.


✅ What's Well Done

  • --no-git flag on Gitleaks (scan-for-secrets.yml, safeguard-5-secret-scanning.yml, reusable/security-scanning.yml): Switching current-tree workflow checks from history scanning to --no-git directly fixes the thousands-of-false-positives problem for routine PR/push gates. History scanning belongs in a separate, infrequent audit job.
  • Temp-dir Gitleaks install (security-scan.yml, scan-for-secrets.yml): Extracting the tarball into a mktemp -d and then mv-ing the binary prevents the release archive's other files from landing in the checkout root. This is a meaningful security improvement.
  • Root symlinks (.gitleaks.toml, .secrets.baseline): Auto-discovery symlinks mean ad-hoc developer runs and CI both resolve to the same config without --config flags. Good ergonomics.
  • welcome.yml input names (repo-tokenrepo_token, issue-messageissue_message, pr-messagepr_message): Correct per the actions/first-interaction API — kebab-case inputs were silently ignored; underscore versions are what the action actually reads.
  • BRANCH_PROTECTION.md: Authorization: Bearer <github-token> is the current GitHub API standard; the old token YOUR_TOKEN form still works but Bearer is preferred in new docs.
  • Baseline pruning: Removing .mypy_cache, .git, .pytest_cache, etc. from .secrets.baseline is correct — those were never real secrets and were masking the signal-to-noise ratio.

⚠️ Issues / Concerns

1. Gitleaks allowlist vs. doc change inconsistency (Low severity)

.config/.gitleaks.toml adds:

'''sk_live_51abc123xyz789''',  # Historical Stripe docs placeholder

…while docs/guides/security-best-practices.md simultaneously replaces that same string with sk_live_xxx. The allowlist entry now covers a pattern that no longer appears anywhere in the repo. This is harmless today but will silently allow any future file containing sk_live_51abc123xyz789 to pass scanning. Suggest removing the allowlist entry since the triggering content is gone, or document why the allowlist needs to survive the doc change.

2. .mypy_cache/ should be excluded in .gitignore (Root cause not addressed)

The .secrets.baseline cleanup removes thousands of mypy cache entries, and DETECT_SECRETS_EXCLUDE now skips .mypy_cache/ at scan time — both correct. But the underlying issue is that .mypy_cache/ files appear to be tracked by git (otherwise they would not appear in the baseline at all). Adding .mypy_cache/ to .gitignore prevents this from recurring. Consider adding a follow-up issue or a note in the runbook.

3. DETECT_SECRETS_EXCLUDE env-var quoting (Low severity)

env:
  DETECT_SECRETS_EXCLUDE: '(^|/)(\.git|...)'

Used downstream as:

detect-secrets scan ... --exclude-files "$DETECT_SECRETS_EXCLUDE"

The YAML single-quote block stores the literal string correctly, and double-quoting the variable reference is right. This is safe, but worth a comment in the workflow that the value is a Python re regex (not a glob), so maintainers don't accidentally add glob-style patterns that silently fail.

4. Removing cache: pip (Needs justification)

Both safeguard-5-secret-scanning.yml and scan-for-secrets.yml drop cache: pip from the setup-python step. The runbook credits this as a fix, but the PR description does not explain why caching caused issues. If caching was causing stale detect-secrets installs to survive across baseline updates, say so — otherwise this looks like an unexplained regression to slower CI. Please add a comment or PR description note.

5. Blocker: unpinned actions (flagged by CI)

The Action Pinning Required bot flagged this as a BLOCKER. The diff shows scan-for-secrets.yml and security-scan.yml still install Gitleaks via curl (not a GitHub Action, so not subject to SHA pinning), and welcome.yml already uses SHA-pinned actions/first-interaction. It's unclear which specific actions are unpinned — could be in the .github/actions/run-gemini-cli-pinned/action.yml changes not fully visible here. This must be resolved before merge per the repo's WORKFLOW_STANDARDS.

6. Broken links (flagged by CI)

CI detected broken links. The SECRET_SCANNING_GUIDE.md references docs/guides/SECRETS_SETUP.md (the corrected path in .gitleaks.toml) — verify this file actually exists at the updated location. The doc update to SECRET_SCANNING_GUIDE.md also adds content about symlinks; check that the linked anchor targets exist.


🔒 Security Assessment

No new attack surface introduced. The changes reduce false positives rather than changing what gets scanned. The --no-git switch is security-neutral for current-tree checks. The temp-dir install improvement is a minor supply-chain hardening win (no stray files in repo root). The useDefault = true in gitleaks config means additional built-in rules are now active — this is additive and desirable.

One thing to verify: with useDefault = true now active, run a local gitleaks detect --source . --no-git --config .config/.gitleaks.toml on the post-merge state to confirm zero findings (the runbook says this was done pre-PR — confirm it will hold post-merge with the additional default rules enabled).


📋 Test Coverage

Integration tests pass per CI. No new unit tests are needed for config file changes and shell one-liners. However:

  • The baseline pruning would benefit from a comment in SECRET_SCANNING_GUIDE.md referencing the specific git ls-files regeneration command — it's partially there but the generation command now uses $(git ls-files) which restricts scanning to tracked files. This is good but should be explicit in the guide so future maintainers don't accidentally regenerate with --all-files from a dirty workspace.

Summary

Area Status
Core fix logic ✅ Correct
Workflow hardening ✅ Improved
Documentation ✅ Good
sk_live allowlist vs. doc ⚠️ Minor inconsistency
.mypy_cache in .gitignore ⚠️ Root cause not addressed
Action pinning blocker 🚨 Must resolve before merge
Broken links 🚨 Must resolve before merge
cache: pip removal rationale ⚠️ Needs a comment

The approach is correct and well-documented. Address the two blockers and the three minor items above before merging.

Reviewed by Claude (claude-sonnet-4-6)

@4444J99

4444J99 commented Jul 19, 2026

Copy link
Copy Markdown
Member Author

Backlog engagement 2026-07-19 — disposition: superseded by latest clean main secret scan.

Verified live state: CONFLICTING/DIRTY with CI/lint/link/SHA/version failures and a huge .secrets.baseline churn (+203/-23769 across 17 files). Current main's latest scan-for-secrets.yml run 29674133254 succeeded with TruffleHog, Gitleaks, and detect-secrets steps green, so this stale security branch should not be merged as-is.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

configuration Configuration changes documentation Improvements or additions to documentation github-actions Related to GitHub Actions workflows security Security vulnerability or security-related issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant