Skip to content

Add reusable weekly secret-scan workflow, shared by dotfiles and symphony #264

Description

@mark-brannan

Problem

dotfiles has no scheduled secret re-scan today. symphony's secret-scan.yml has one: trufflehog ships new detector signatures continuously, so a commit that scanned clean last month can be flagged this month against a detector that didn't exist when it was pushed. Push-triggered scanning alone never re-checks history — only what's new in that push. dotfiles is the higher-worry case (per-machine secrets, sops-managed, $HOME worktree) but currently has zero coverage for this failure mode.

Approach

Don't centralize execution — cross-repo scanning from one workflow needs a PAT with access to every repo, which is worse than what exists today. Instead, share the workflow definition via workflow_call, the same pattern symphony's prose-budget job already uses (pulls its engine from dotfiles-ref: claude/prose-budget). Define the gitleaks/trufflehog scan job once — in dotfiles, since that's the natural home for shared engines — and have both dotfiles and symphony call it.

Completion criteria

  • A reusable secret-scan workflow exists (in dotfiles), callable via workflow_call.
  • Both dotfiles and symphony call it on a weekly schedule, each scanning its own repo's history under its own permissions (no cross-repo token).
  • symphony's existing secret-scan.yml schedule job is migrated to call the shared workflow rather than running its own copy of the logic.
  • Verified: a scheduled run actually fires and completes green in both repos (not just that the YAML parses).

Context

Raised while scoping symphony issue #71 (ci-gate/secret-gate migration) — the weekly-schedule requirement in symphony's secret-scan.yml is what's keeping that workflow separate from validate.yml, and Mark's a bigger worry is dotfiles lacking the same coverage entirely.

🤖 Generated with Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    readyAn agent can start this now; no decision pending.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions