Skip to content

chore(security): add gitleaks allowlist after a clean full-history secret audit - #907

Merged
iamtoruk merged 2 commits into
getagentseal:mainfrom
ozymandiashh:chore/gitleaks-allowlist
Aug 10, 2026
Merged

chore(security): add gitleaks allowlist after a clean full-history secret audit#907
iamtoruk merged 2 commits into
getagentseal:mainfrom
ozymandiashh:chore/gitleaks-allowlist

Conversation

@ozymandiashh

Copy link
Copy Markdown
Collaborator

Ran a full-history secret-leak audit tonight (all refs, 1352 commits / 19.5 MB), three independent ways.

Result: clean. No real secret is leaked.

  • trufflehog --only-verified: 0 live secrets across all history.
  • manual high-signal grep (sk-/ghp_/gho_/github_pat_/AKIA/AIza/xox*/PEM/Bearer) in app code: only the redaction code that scrubs keys OUT of logs (security.ts, AppStore.swift, UpdateChecker.swift). Correct and defensive.
  • no client_secret anywhere in tracked files; OAuth is PKCE public-client, so the client IDs present are public by design. No tracked .env/.pem/.key/credentials file.
  • gitleaks: 8 findings, all false positives - fake test fixtures (sk-live-0123..., sk-live-AKIA...SECRETKEY), a dedup-key string (synth-retain-89d), and the public Claude Code / Codex OAuth client IDs.

This PR

A .gitleaks.toml that allowlists exactly those audited-safe cases, so future scans stay green and a genuine leak is never buried under recurring noise. Verified: gitleaks git --log-opts="--all" with this config reports no leaks found across all 1352 commits, while the default config reported 8. Nothing here suppresses a live credential - each allowlist entry is a specific known-safe string or a test-path-scoped fixture pattern, commented with why it is safe.

Adding this also makes the existing semgrep check's security posture legible: secret scanning now has a documented, audited baseline.

ozymandiashh and others added 2 commits August 4, 2026 04:18
A full-history secret scan (all refs, 1352 commits) plus trufflehog
--only-verified came back clean: zero live secrets. gitleaks' default
generic-api-key rule flags 8 non-secrets - obviously-fake test fixtures
(sk-live-0123..., sk-live-AKIA...SECRETKEY), the public Claude Code and
Codex OAuth client IDs (PKCE public-client flow, no client_secret), and a
dedup-key string. This encodes exactly those as allowlisted so scans stay
green and a real leak can never hide under recurring false positives.
…WT fixture

Gitleaks ORs an allowlist entry's conditions by default, so pairing a
fixture regex with a tests/ path allowlisted every finding under tests/,
regex or not - a real secret committed to a test file would have been
suppressed. condition = AND restores the intended semantics (verified: a
planted AWS/Stripe-shaped canary in tests/ is flagged again), and the
canonical example JWT header fixture that the path condition was silently
covering gets its own scoped entry. Full-history scan stays green.
@iamtoruk
iamtoruk merged commit 240b583 into getagentseal:main Aug 10, 2026
4 checks passed
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.

2 participants