@accelerationguy/accel 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +19 -0
- package/LICENSE +33 -0
- package/README.md +275 -0
- package/bin/install.js +661 -0
- package/docs/getting-started.md +164 -0
- package/docs/module-guide.md +139 -0
- package/modules/drive/LICENSE +21 -0
- package/modules/drive/PAUL-VS-GSD.md +171 -0
- package/modules/drive/README.md +555 -0
- package/modules/drive/assets/terminal.svg +67 -0
- package/modules/drive/bin/install.js +210 -0
- package/modules/drive/integration.js +76 -0
- package/modules/drive/package.json +38 -0
- package/modules/drive/src/commands/add-phase.md +36 -0
- package/modules/drive/src/commands/apply.md +83 -0
- package/modules/drive/src/commands/assumptions.md +37 -0
- package/modules/drive/src/commands/audit.md +57 -0
- package/modules/drive/src/commands/complete-milestone.md +36 -0
- package/modules/drive/src/commands/config.md +175 -0
- package/modules/drive/src/commands/consider-issues.md +41 -0
- package/modules/drive/src/commands/discover.md +48 -0
- package/modules/drive/src/commands/discuss-milestone.md +33 -0
- package/modules/drive/src/commands/discuss.md +34 -0
- package/modules/drive/src/commands/flows.md +73 -0
- package/modules/drive/src/commands/handoff.md +201 -0
- package/modules/drive/src/commands/help.md +525 -0
- package/modules/drive/src/commands/init.md +54 -0
- package/modules/drive/src/commands/map-codebase.md +34 -0
- package/modules/drive/src/commands/milestone.md +34 -0
- package/modules/drive/src/commands/pause.md +44 -0
- package/modules/drive/src/commands/plan-fix.md +216 -0
- package/modules/drive/src/commands/plan.md +36 -0
- package/modules/drive/src/commands/progress.md +138 -0
- package/modules/drive/src/commands/register.md +29 -0
- package/modules/drive/src/commands/remove-phase.md +37 -0
- package/modules/drive/src/commands/research-phase.md +209 -0
- package/modules/drive/src/commands/research.md +47 -0
- package/modules/drive/src/commands/resume.md +49 -0
- package/modules/drive/src/commands/status.md +78 -0
- package/modules/drive/src/commands/unify.md +87 -0
- package/modules/drive/src/commands/verify.md +60 -0
- package/modules/drive/src/references/checkpoints.md +234 -0
- package/modules/drive/src/references/context-management.md +219 -0
- package/modules/drive/src/references/git-strategy.md +206 -0
- package/modules/drive/src/references/loop-phases.md +254 -0
- package/modules/drive/src/references/plan-format.md +263 -0
- package/modules/drive/src/references/quality-principles.md +152 -0
- package/modules/drive/src/references/research-quality-control.md +247 -0
- package/modules/drive/src/references/sonarqube-integration.md +244 -0
- package/modules/drive/src/references/specialized-workflow-integration.md +186 -0
- package/modules/drive/src/references/subagent-criteria.md +179 -0
- package/modules/drive/src/references/tdd.md +219 -0
- package/modules/drive/src/references/work-units.md +161 -0
- package/modules/drive/src/rules/commands.md +108 -0
- package/modules/drive/src/rules/references.md +107 -0
- package/modules/drive/src/rules/style.md +123 -0
- package/modules/drive/src/rules/templates.md +51 -0
- package/modules/drive/src/rules/workflows.md +133 -0
- package/modules/drive/src/templates/CONTEXT.md +88 -0
- package/modules/drive/src/templates/DEBUG.md +164 -0
- package/modules/drive/src/templates/DISCOVERY.md +148 -0
- package/modules/drive/src/templates/HANDOFF.md +77 -0
- package/modules/drive/src/templates/ISSUES.md +93 -0
- package/modules/drive/src/templates/MILESTONES.md +167 -0
- package/modules/drive/src/templates/PLAN.md +328 -0
- package/modules/drive/src/templates/PROJECT.md +219 -0
- package/modules/drive/src/templates/RESEARCH.md +130 -0
- package/modules/drive/src/templates/ROADMAP.md +328 -0
- package/modules/drive/src/templates/SPECIAL-FLOWS.md +70 -0
- package/modules/drive/src/templates/STATE.md +210 -0
- package/modules/drive/src/templates/SUMMARY.md +221 -0
- package/modules/drive/src/templates/UAT-ISSUES.md +139 -0
- package/modules/drive/src/templates/codebase/architecture.md +259 -0
- package/modules/drive/src/templates/codebase/concerns.md +329 -0
- package/modules/drive/src/templates/codebase/conventions.md +311 -0
- package/modules/drive/src/templates/codebase/integrations.md +284 -0
- package/modules/drive/src/templates/codebase/stack.md +190 -0
- package/modules/drive/src/templates/codebase/structure.md +287 -0
- package/modules/drive/src/templates/codebase/testing.md +484 -0
- package/modules/drive/src/templates/config.md +181 -0
- package/modules/drive/src/templates/milestone-archive.md +236 -0
- package/modules/drive/src/templates/milestone-context.md +190 -0
- package/modules/drive/src/templates/paul-json.md +147 -0
- package/modules/drive/src/vector-config/PAUL +26 -0
- package/modules/drive/src/vector-config/PAUL.manifest +11 -0
- package/modules/drive/src/workflows/apply-phase.md +393 -0
- package/modules/drive/src/workflows/audit-plan.md +344 -0
- package/modules/drive/src/workflows/complete-milestone.md +479 -0
- package/modules/drive/src/workflows/configure-special-flows.md +283 -0
- package/modules/drive/src/workflows/consider-issues.md +172 -0
- package/modules/drive/src/workflows/create-milestone.md +268 -0
- package/modules/drive/src/workflows/debug.md +292 -0
- package/modules/drive/src/workflows/discovery.md +187 -0
- package/modules/drive/src/workflows/discuss-milestone.md +245 -0
- package/modules/drive/src/workflows/discuss-phase.md +231 -0
- package/modules/drive/src/workflows/init-project.md +698 -0
- package/modules/drive/src/workflows/map-codebase.md +459 -0
- package/modules/drive/src/workflows/pause-work.md +259 -0
- package/modules/drive/src/workflows/phase-assumptions.md +181 -0
- package/modules/drive/src/workflows/plan-phase.md +385 -0
- package/modules/drive/src/workflows/quality-gate.md +263 -0
- package/modules/drive/src/workflows/register-manifest.md +107 -0
- package/modules/drive/src/workflows/research.md +241 -0
- package/modules/drive/src/workflows/resume-project.md +200 -0
- package/modules/drive/src/workflows/roadmap-management.md +334 -0
- package/modules/drive/src/workflows/transition-phase.md +368 -0
- package/modules/drive/src/workflows/unify-phase.md +290 -0
- package/modules/drive/src/workflows/verify-work.md +241 -0
- package/modules/forge/README.md +281 -0
- package/modules/forge/bin/install.js +200 -0
- package/modules/forge/package.json +32 -0
- package/modules/forge/skillsmith/rules/checklists-rules.md +42 -0
- package/modules/forge/skillsmith/rules/context-rules.md +43 -0
- package/modules/forge/skillsmith/rules/entry-point-rules.md +44 -0
- package/modules/forge/skillsmith/rules/frameworks-rules.md +43 -0
- package/modules/forge/skillsmith/rules/tasks-rules.md +52 -0
- package/modules/forge/skillsmith/rules/templates-rules.md +43 -0
- package/modules/forge/skillsmith/skillsmith.md +82 -0
- package/modules/forge/skillsmith/tasks/audit.md +277 -0
- package/modules/forge/skillsmith/tasks/discover.md +145 -0
- package/modules/forge/skillsmith/tasks/distill.md +276 -0
- package/modules/forge/skillsmith/tasks/scaffold.md +349 -0
- package/modules/forge/specs/checklists.md +193 -0
- package/modules/forge/specs/context.md +223 -0
- package/modules/forge/specs/entry-point.md +320 -0
- package/modules/forge/specs/frameworks.md +228 -0
- package/modules/forge/specs/rules.md +245 -0
- package/modules/forge/specs/tasks.md +344 -0
- package/modules/forge/specs/templates.md +335 -0
- package/modules/forge/terminal.svg +70 -0
- package/modules/ignition/README.md +245 -0
- package/modules/ignition/bin/install.js +184 -0
- package/modules/ignition/checklists/planning-quality.md +55 -0
- package/modules/ignition/data/application/config.md +21 -0
- package/modules/ignition/data/application/guide.md +51 -0
- package/modules/ignition/data/application/skill-loadout.md +11 -0
- package/modules/ignition/data/campaign/config.md +18 -0
- package/modules/ignition/data/campaign/guide.md +36 -0
- package/modules/ignition/data/campaign/skill-loadout.md +10 -0
- package/modules/ignition/data/client/config.md +18 -0
- package/modules/ignition/data/client/guide.md +36 -0
- package/modules/ignition/data/client/skill-loadout.md +11 -0
- package/modules/ignition/data/utility/config.md +18 -0
- package/modules/ignition/data/utility/guide.md +31 -0
- package/modules/ignition/data/utility/skill-loadout.md +8 -0
- package/modules/ignition/data/workflow/config.md +19 -0
- package/modules/ignition/data/workflow/guide.md +41 -0
- package/modules/ignition/data/workflow/skill-loadout.md +10 -0
- package/modules/ignition/integration.js +54 -0
- package/modules/ignition/package.json +35 -0
- package/modules/ignition/seed.md +81 -0
- package/modules/ignition/tasks/add-type.md +164 -0
- package/modules/ignition/tasks/graduate.md +182 -0
- package/modules/ignition/tasks/ideate.md +221 -0
- package/modules/ignition/tasks/launch.md +137 -0
- package/modules/ignition/tasks/status.md +71 -0
- package/modules/ignition/templates/planning-application.md +193 -0
- package/modules/ignition/templates/planning-campaign.md +138 -0
- package/modules/ignition/templates/planning-client.md +149 -0
- package/modules/ignition/templates/planning-utility.md +112 -0
- package/modules/ignition/templates/planning-workflow.md +125 -0
- package/modules/ignition/terminal.svg +74 -0
- package/modules/mission-control/CONTEXT-CONTINUITY-SPEC.md +293 -0
- package/modules/mission-control/CONTEXT-ENGINEERING-GUIDE.md +282 -0
- package/modules/mission-control/README.md +91 -0
- package/modules/mission-control/assets/terminal.svg +80 -0
- package/modules/mission-control/examples/entities.example.json +133 -0
- package/modules/mission-control/examples/projects.example.json +318 -0
- package/modules/mission-control/examples/state.example.json +183 -0
- package/modules/mission-control/examples/vector.example.json +245 -0
- package/modules/mission-control/mission-control/checklists/install-verification.md +46 -0
- package/modules/mission-control/mission-control/frameworks/framework-registry.md +83 -0
- package/modules/mission-control/mission-control/mission-control.md +83 -0
- package/modules/mission-control/mission-control/tasks/insights.md +73 -0
- package/modules/mission-control/mission-control/tasks/install.md +194 -0
- package/modules/mission-control/mission-control/tasks/status.md +125 -0
- package/modules/mission-control/schemas/entities.schema.json +89 -0
- package/modules/mission-control/schemas/projects.schema.json +221 -0
- package/modules/mission-control/schemas/state.schema.json +108 -0
- package/modules/mission-control/schemas/vector.schema.json +200 -0
- package/modules/momentum/README.md +678 -0
- package/modules/momentum/bin/install.js +563 -0
- package/modules/momentum/integration.js +131 -0
- package/modules/momentum/package.json +42 -0
- package/modules/momentum/schemas/entities.schema.json +89 -0
- package/modules/momentum/schemas/projects.schema.json +221 -0
- package/modules/momentum/schemas/state.schema.json +108 -0
- package/modules/momentum/src/commands/audit-claude-md.md +31 -0
- package/modules/momentum/src/commands/audit.md +33 -0
- package/modules/momentum/src/commands/groom.md +35 -0
- package/modules/momentum/src/commands/history.md +27 -0
- package/modules/momentum/src/commands/pulse.md +33 -0
- package/modules/momentum/src/commands/scaffold.md +33 -0
- package/modules/momentum/src/commands/status.md +28 -0
- package/modules/momentum/src/commands/surface-convert.md +35 -0
- package/modules/momentum/src/commands/surface-create.md +34 -0
- package/modules/momentum/src/commands/surface-list.md +27 -0
- package/modules/momentum/src/commands/vector-hygiene.md +33 -0
- package/modules/momentum/src/framework/context/momentum-principles.md +71 -0
- package/modules/momentum/src/framework/frameworks/audit-strategies.md +53 -0
- package/modules/momentum/src/framework/frameworks/satellite-registration.md +44 -0
- package/modules/momentum/src/framework/tasks/audit-claude-md.md +68 -0
- package/modules/momentum/src/framework/tasks/audit.md +64 -0
- package/modules/momentum/src/framework/tasks/groom.md +164 -0
- package/modules/momentum/src/framework/tasks/history.md +34 -0
- package/modules/momentum/src/framework/tasks/pulse.md +83 -0
- package/modules/momentum/src/framework/tasks/scaffold.md +202 -0
- package/modules/momentum/src/framework/tasks/status.md +35 -0
- package/modules/momentum/src/framework/tasks/surface-convert.md +143 -0
- package/modules/momentum/src/framework/tasks/surface-create.md +184 -0
- package/modules/momentum/src/framework/tasks/surface-list.md +42 -0
- package/modules/momentum/src/framework/tasks/vector-hygiene.md +160 -0
- package/modules/momentum/src/framework/templates/workspace-json.md +96 -0
- package/modules/momentum/src/hooks/_template.py +129 -0
- package/modules/momentum/src/hooks/active-hook.py +178 -0
- package/modules/momentum/src/hooks/backlog-hook.py +115 -0
- package/modules/momentum/src/hooks/mission-control-insights.py +169 -0
- package/modules/momentum/src/hooks/momentum-pulse-check.py +351 -0
- package/modules/momentum/src/hooks/operator.py +53 -0
- package/modules/momentum/src/hooks/psmm-injector.py +67 -0
- package/modules/momentum/src/hooks/satellite-detection.py +248 -0
- package/modules/momentum/src/packages/momentum-mcp/index.js +119 -0
- package/modules/momentum/src/packages/momentum-mcp/package.json +10 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/entities.js +226 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/operator.js +106 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/projects.js +322 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/psmm.js +206 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/state.js +199 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/surfaces.js +404 -0
- package/modules/momentum/src/skill/momentum.md +111 -0
- package/modules/momentum/src/tasks/groom.md +164 -0
- package/modules/momentum/src/templates/operator.json +66 -0
- package/modules/momentum/src/templates/workspace.json +111 -0
- package/modules/momentum/terminal.svg +77 -0
- package/modules/radar/README.md +1552 -0
- package/modules/radar/commands/audit.md +233 -0
- package/modules/radar/commands/guardrails.md +194 -0
- package/modules/radar/commands/init.md +207 -0
- package/modules/radar/commands/playbook.md +176 -0
- package/modules/radar/commands/remediate.md +156 -0
- package/modules/radar/commands/report.md +172 -0
- package/modules/radar/commands/resume.md +176 -0
- package/modules/radar/commands/status.md +148 -0
- package/modules/radar/commands/transform.md +205 -0
- package/modules/radar/commands/validate.md +177 -0
- package/modules/radar/docs/ARCHITECTURE.md +336 -0
- package/modules/radar/docs/GETTING-STARTED.md +287 -0
- package/modules/radar/docs/standards/agents.md +197 -0
- package/modules/radar/docs/standards/commands.md +250 -0
- package/modules/radar/docs/standards/domains.md +191 -0
- package/modules/radar/docs/standards/personas.md +211 -0
- package/modules/radar/docs/standards/rules.md +218 -0
- package/modules/radar/docs/standards/runtime.md +445 -0
- package/modules/radar/docs/standards/schemas.md +269 -0
- package/modules/radar/docs/standards/tools.md +273 -0
- package/modules/radar/docs/standards/workflows.md +254 -0
- package/modules/radar/docs/terminal.svg +72 -0
- package/modules/radar/docs/validation/convention-compliance-report.md +183 -0
- package/modules/radar/docs/validation/cross-reference-report.md +195 -0
- package/modules/radar/docs/validation/validation-summary.md +118 -0
- package/modules/radar/docs/validation/version-manifest.yaml +363 -0
- package/modules/radar/install.sh +711 -0
- package/modules/radar/integration.js +53 -0
- package/modules/radar/src/core/agents/architect.md +25 -0
- package/modules/radar/src/core/agents/compliance-officer.md +25 -0
- package/modules/radar/src/core/agents/data-engineer.md +25 -0
- package/modules/radar/src/core/agents/devils-advocate.md +22 -0
- package/modules/radar/src/core/agents/performance-engineer.md +25 -0
- package/modules/radar/src/core/agents/principal-engineer.md +23 -0
- package/modules/radar/src/core/agents/reality-gap-analyst.md +22 -0
- package/modules/radar/src/core/agents/security-engineer.md +25 -0
- package/modules/radar/src/core/agents/senior-app-engineer.md +25 -0
- package/modules/radar/src/core/agents/sre.md +25 -0
- package/modules/radar/src/core/agents/staff-engineer.md +23 -0
- package/modules/radar/src/core/agents/test-engineer.md +25 -0
- package/modules/radar/src/core/personas/architect.md +111 -0
- package/modules/radar/src/core/personas/compliance-officer.md +104 -0
- package/modules/radar/src/core/personas/data-engineer.md +113 -0
- package/modules/radar/src/core/personas/devils-advocate.md +105 -0
- package/modules/radar/src/core/personas/performance-engineer.md +119 -0
- package/modules/radar/src/core/personas/principal-engineer.md +119 -0
- package/modules/radar/src/core/personas/reality-gap-analyst.md +111 -0
- package/modules/radar/src/core/personas/security-engineer.md +108 -0
- package/modules/radar/src/core/personas/senior-app-engineer.md +111 -0
- package/modules/radar/src/core/personas/sre.md +117 -0
- package/modules/radar/src/core/personas/staff-engineer.md +109 -0
- package/modules/radar/src/core/personas/test-engineer.md +109 -0
- package/modules/radar/src/core/workflows/disagreement-resolution.md +183 -0
- package/modules/radar/src/core/workflows/phase-0-context.md +148 -0
- package/modules/radar/src/core/workflows/phase-1-reconnaissance.md +169 -0
- package/modules/radar/src/core/workflows/phase-2-domain-audits.md +190 -0
- package/modules/radar/src/core/workflows/phase-3-cross-domain.md +177 -0
- package/modules/radar/src/core/workflows/phase-4-adversarial-review.md +165 -0
- package/modules/radar/src/core/workflows/phase-5-report.md +189 -0
- package/modules/radar/src/core/workflows/phase-checkpoint.md +222 -0
- package/modules/radar/src/core/workflows/session-handoff.md +152 -0
- package/modules/radar/src/domains/00-context.md +201 -0
- package/modules/radar/src/domains/01-architecture.md +248 -0
- package/modules/radar/src/domains/02-data.md +224 -0
- package/modules/radar/src/domains/03-correctness.md +230 -0
- package/modules/radar/src/domains/04-security.md +274 -0
- package/modules/radar/src/domains/05-compliance.md +228 -0
- package/modules/radar/src/domains/06-testing.md +228 -0
- package/modules/radar/src/domains/07-reliability.md +246 -0
- package/modules/radar/src/domains/08-performance.md +247 -0
- package/modules/radar/src/domains/09-maintainability.md +271 -0
- package/modules/radar/src/domains/10-operability.md +250 -0
- package/modules/radar/src/domains/11-change-risk.md +246 -0
- package/modules/radar/src/domains/12-team-risk.md +221 -0
- package/modules/radar/src/domains/13-risk-synthesis.md +202 -0
- package/modules/radar/src/rules/agent-boundaries.md +78 -0
- package/modules/radar/src/rules/disagreement-protocol.md +76 -0
- package/modules/radar/src/rules/epistemic-hygiene.md +78 -0
- package/modules/radar/src/schemas/confidence.md +185 -0
- package/modules/radar/src/schemas/disagreement.md +238 -0
- package/modules/radar/src/schemas/finding.md +287 -0
- package/modules/radar/src/schemas/report-section.md +150 -0
- package/modules/radar/src/schemas/signal.md +108 -0
- package/modules/radar/src/tools/checkov.md +463 -0
- package/modules/radar/src/tools/git-history.md +581 -0
- package/modules/radar/src/tools/gitleaks.md +447 -0
- package/modules/radar/src/tools/grype.md +611 -0
- package/modules/radar/src/tools/semgrep.md +378 -0
- package/modules/radar/src/tools/sonarqube.md +550 -0
- package/modules/radar/src/tools/syft.md +539 -0
- package/modules/radar/src/tools/trivy.md +439 -0
- package/modules/radar/src/transform/agents/change-risk-modeler.md +24 -0
- package/modules/radar/src/transform/agents/execution-validator.md +24 -0
- package/modules/radar/src/transform/agents/guardrail-generator.md +24 -0
- package/modules/radar/src/transform/agents/pedagogy-agent.md +24 -0
- package/modules/radar/src/transform/agents/remediation-architect.md +24 -0
- package/modules/radar/src/transform/personas/change-risk-modeler.md +95 -0
- package/modules/radar/src/transform/personas/execution-validator.md +95 -0
- package/modules/radar/src/transform/personas/guardrail-generator.md +103 -0
- package/modules/radar/src/transform/personas/pedagogy-agent.md +105 -0
- package/modules/radar/src/transform/personas/remediation-architect.md +95 -0
- package/modules/radar/src/transform/rules/change-risk-rules.md +87 -0
- package/modules/radar/src/transform/rules/safety-governance.md +87 -0
- package/modules/radar/src/transform/schemas/change-risk.md +139 -0
- package/modules/radar/src/transform/schemas/intervention-level.md +207 -0
- package/modules/radar/src/transform/schemas/playbook.md +205 -0
- package/modules/radar/src/transform/schemas/verification-plan.md +134 -0
- package/modules/radar/src/transform/workflows/phase-6-remediation.md +148 -0
- package/modules/radar/src/transform/workflows/phase-7-risk-validation.md +161 -0
- package/modules/radar/src/transform/workflows/phase-8-execution-planning.md +159 -0
- package/modules/radar/src/transform/workflows/transform-safety.md +158 -0
- package/modules/vector/.vector-template/sessions/.gitkeep +0 -0
- package/modules/vector/.vector-template/vector.json +72 -0
- package/modules/vector/AUDIT-CLAUDEMD.md +154 -0
- package/modules/vector/INSTALL.md +185 -0
- package/modules/vector/LICENSE +21 -0
- package/modules/vector/README.md +409 -0
- package/modules/vector/VECTOR-BLOCK.md +57 -0
- package/modules/vector/assets/terminal.svg +68 -0
- package/modules/vector/bin/install.js +455 -0
- package/modules/vector/bin/migrate-v1-to-v2.sh +492 -0
- package/modules/vector/commands/help.md +46 -0
- package/modules/vector/hooks/vector-hook.py +775 -0
- package/modules/vector/mcp/index.js +118 -0
- package/modules/vector/mcp/package.json +10 -0
- package/modules/vector/mcp/tools/decisions.js +269 -0
- package/modules/vector/mcp/tools/domains.js +361 -0
- package/modules/vector/mcp/tools/staging.js +252 -0
- package/modules/vector/mcp/tools/vector-json.js +647 -0
- package/modules/vector/package.json +38 -0
- package/modules/vector/schemas/vector.schema.json +237 -0
- package/package.json +39 -0
- package/shared/branding/branding.js +70 -0
- package/shared/config/defaults.json +59 -0
- package/shared/events/README.md +175 -0
- package/shared/events/event-bus.js +134 -0
- package/shared/events/event_bus.py +255 -0
- package/shared/events/integrations.js +161 -0
- package/shared/events/schemas/audit-complete.schema.json +21 -0
- package/shared/events/schemas/phase-progress.schema.json +23 -0
- package/shared/events/schemas/plan-created.schema.json +21 -0
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: gitleaks
|
|
3
|
+
name: Gitleaks
|
|
4
|
+
type: secrets_detection
|
|
5
|
+
domains_fed: ["04", "05"]
|
|
6
|
+
install_required: true
|
|
7
|
+
install_command: "See Installation section — go install, GitHub releases, brew, apt, or Docker"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
Scans git repositories for hardcoded secrets, API keys, tokens, passwords, and credentials. Covers both current working state and full git history (commits, branches). Critical signal source for Security (04 — secrets exposure, credential management) and Compliance (05 — sensitive data in source control, audit trail for secret exposure).
|
|
13
|
+
|
|
14
|
+
Gitleaks uses regex patterns and entropy analysis to detect over 100 types of secrets including AWS keys, GitHub tokens, private keys, database connection strings, JWT secrets, and custom patterns. History scanning reveals secrets that were committed then removed — which may still be exposed in git history.
|
|
15
|
+
|
|
16
|
+
Signals are NOT findings. Gitleaks produces evidence that agents interpret.
|
|
17
|
+
|
|
18
|
+
## Configuration
|
|
19
|
+
|
|
20
|
+
Gitleaks uses a `.gitleaks.toml` configuration file to customize detection behavior:
|
|
21
|
+
|
|
22
|
+
- **Custom allowlist rules**: Known safe patterns, test fixtures, documentation examples
|
|
23
|
+
- **Path exclusions**: Test fixtures, documentation with example keys, vendor directories
|
|
24
|
+
- **Entropy threshold tuning**: Default works well for most repos (5.0 for base64, 3.5 for hex)
|
|
25
|
+
- **Custom regex patterns**: Organization-specific secret formats
|
|
26
|
+
- **Extend default rules**: Add to built-in detection rather than replacing
|
|
27
|
+
|
|
28
|
+
**Realistic .gitleaks.toml example:**
|
|
29
|
+
|
|
30
|
+
```toml
|
|
31
|
+
title = "Radar Gitleaks Configuration"
|
|
32
|
+
|
|
33
|
+
# Extend default Gitleaks config instead of replacing
|
|
34
|
+
[extend]
|
|
35
|
+
useDefault = true
|
|
36
|
+
|
|
37
|
+
# Custom rules for organization-specific secrets
|
|
38
|
+
[[rules]]
|
|
39
|
+
id = "custom-internal-api-key"
|
|
40
|
+
description = "Internal API Key Pattern"
|
|
41
|
+
regex = '''(?i)internal[_-]?api[_-]?key[:\s=]+['"]?([a-z0-9]{32})['"]?'''
|
|
42
|
+
keywords = ["internal_api_key", "internal-api-key"]
|
|
43
|
+
|
|
44
|
+
[[rules]]
|
|
45
|
+
id = "custom-service-token"
|
|
46
|
+
description = "Service Authentication Token"
|
|
47
|
+
regex = '''(?i)service[_-]?token[:\s=]+['"]?([A-Za-z0-9+/]{40,})['"]?'''
|
|
48
|
+
keywords = ["service_token", "service-token"]
|
|
49
|
+
|
|
50
|
+
# Allowlist for known false positives
|
|
51
|
+
[allowlist]
|
|
52
|
+
description = "Approved exceptions and test fixtures"
|
|
53
|
+
|
|
54
|
+
# Exclude test directories with intentional fake secrets
|
|
55
|
+
paths = [
|
|
56
|
+
'''tests/fixtures/.*''',
|
|
57
|
+
'''test/data/.*''',
|
|
58
|
+
'''.*_test\.go''',
|
|
59
|
+
'''.*\.test\.ts''',
|
|
60
|
+
'''examples/.*''',
|
|
61
|
+
'''docs/.*\.md''',
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
# Regex patterns for known safe values
|
|
65
|
+
regexes = [
|
|
66
|
+
'''sk-test-[a-zA-Z0-9]{32}''', # Example/test Stripe keys in docs
|
|
67
|
+
'''xoxb-000000000000-.*''', # Example Slack tokens in docs
|
|
68
|
+
'''AKIAIOSFODNN7EXAMPLE''', # AWS documentation example key
|
|
69
|
+
'''wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY''', # AWS docs secret
|
|
70
|
+
'''[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}''', # UUIDs
|
|
71
|
+
]
|
|
72
|
+
|
|
73
|
+
# Specific commits to ignore (e.g., initial test data commit)
|
|
74
|
+
commits = [
|
|
75
|
+
# "abc123def456...",
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
# Stopwords to reduce false positives
|
|
79
|
+
stopwords = [
|
|
80
|
+
'''example''',
|
|
81
|
+
'''sample''',
|
|
82
|
+
'''placeholder''',
|
|
83
|
+
'''your-key-here''',
|
|
84
|
+
'''replace-me''',
|
|
85
|
+
]
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Configuration placement:**
|
|
89
|
+
- Project root: `.gitleaks.toml` (repository-specific rules)
|
|
90
|
+
- Home directory: `~/.gitleaks.toml` (user-wide defaults)
|
|
91
|
+
- Priority: Project config overrides user config overrides defaults
|
|
92
|
+
|
|
93
|
+
## Execution
|
|
94
|
+
|
|
95
|
+
### Installation Options
|
|
96
|
+
|
|
97
|
+
**Go install** (cross-platform, requires Go):
|
|
98
|
+
```bash
|
|
99
|
+
go install github.com/gitleaks/gitleaks/v8@latest
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**GitHub Releases** (download pre-built binary):
|
|
103
|
+
```bash
|
|
104
|
+
# Visit: https://github.com/gitleaks/gitleaks/releases
|
|
105
|
+
# Download appropriate binary for your OS/architecture
|
|
106
|
+
# Example for Linux:
|
|
107
|
+
wget https://github.com/gitleaks/gitleaks/releases/download/v8.18.1/gitleaks_8.18.1_linux_x64.tar.gz
|
|
108
|
+
tar -xzf gitleaks_8.18.1_linux_x64.tar.gz
|
|
109
|
+
sudo mv gitleaks /usr/local/bin/
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Homebrew** (macOS):
|
|
113
|
+
```bash
|
|
114
|
+
brew install gitleaks
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**APT/Debian** (Linux):
|
|
118
|
+
```bash
|
|
119
|
+
# Available via package managers on some distributions
|
|
120
|
+
sudo apt install gitleaks
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Docker** (no local installation):
|
|
124
|
+
```bash
|
|
125
|
+
docker pull zricethezav/gitleaks:latest
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Scan Commands
|
|
129
|
+
|
|
130
|
+
**Primary (current working state):**
|
|
131
|
+
```bash
|
|
132
|
+
gitleaks detect \
|
|
133
|
+
--source {target_path} \
|
|
134
|
+
--report-format json \
|
|
135
|
+
--report-path {output_dir}/gitleaks-results.json \
|
|
136
|
+
--verbose
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Full git history scan:**
|
|
140
|
+
```bash
|
|
141
|
+
gitleaks detect \
|
|
142
|
+
--source {target_path} \
|
|
143
|
+
--report-format json \
|
|
144
|
+
--report-path {output_dir}/gitleaks-history-results.json \
|
|
145
|
+
--log-opts="--all" \
|
|
146
|
+
--verbose
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Docker variant (current state):**
|
|
150
|
+
```bash
|
|
151
|
+
docker run --rm \
|
|
152
|
+
-v {target_path}:/target \
|
|
153
|
+
zricethezav/gitleaks:latest detect \
|
|
154
|
+
--source /target \
|
|
155
|
+
--report-format json \
|
|
156
|
+
--report-path /target/.radar/signals/gitleaks-results.json \
|
|
157
|
+
--verbose
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Docker variant (full history):**
|
|
161
|
+
```bash
|
|
162
|
+
docker run --rm \
|
|
163
|
+
-v {target_path}:/target \
|
|
164
|
+
zricethezav/gitleaks:latest detect \
|
|
165
|
+
--source /target \
|
|
166
|
+
--report-format json \
|
|
167
|
+
--report-path /target/.radar/signals/gitleaks-history-results.json \
|
|
168
|
+
--log-opts="--all" \
|
|
169
|
+
--verbose
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Pre-commit hook mode** (prevents new secrets):
|
|
173
|
+
```bash
|
|
174
|
+
gitleaks protect --staged --verbose
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Parameters
|
|
178
|
+
|
|
179
|
+
| Parameter | Purpose | Required | Default |
|
|
180
|
+
|-----------|---------|----------|---------|
|
|
181
|
+
| `--source` | Path to repository to scan | Yes | Current directory |
|
|
182
|
+
| `--report-format` | Output format (json, csv, sarif) | No | json |
|
|
183
|
+
| `--report-path` | Output file path | No | stdout |
|
|
184
|
+
| `--config` | Path to .gitleaks.toml | No | Auto-detect or defaults |
|
|
185
|
+
| `--verbose` | Detailed logging output | No | false |
|
|
186
|
+
| `--log-opts` | Git log options (e.g., "--all" for full history) | No | HEAD only |
|
|
187
|
+
| `--redact` | Redact secrets in output | No | true (always on v8+) |
|
|
188
|
+
| `--no-git` | Scan directory without requiring .git | No | false |
|
|
189
|
+
| `--baseline-path` | Ignore findings in baseline file | No | None |
|
|
190
|
+
|
|
191
|
+
### Runtime Expectations
|
|
192
|
+
|
|
193
|
+
- **Current state scan**: <1 minute for typical repositories
|
|
194
|
+
- **Full history scan**: 5-30 minutes depending on:
|
|
195
|
+
- Repository age (years of commit history)
|
|
196
|
+
- Total commits (hundreds vs. thousands)
|
|
197
|
+
- Number of files and branches
|
|
198
|
+
- Disk I/O performance
|
|
199
|
+
|
|
200
|
+
**Performance notes:**
|
|
201
|
+
- History scans are I/O intensive (reading all commit objects)
|
|
202
|
+
- Docker adds ~10-20% overhead vs. native binary
|
|
203
|
+
- Large monorepos (>10k commits) may require 30+ minutes for full history
|
|
204
|
+
|
|
205
|
+
## Output Format
|
|
206
|
+
|
|
207
|
+
Gitleaks outputs a JSON array of findings. Each finding contains detailed context about the detected secret, including git history metadata.
|
|
208
|
+
|
|
209
|
+
**Example output structure:**
|
|
210
|
+
|
|
211
|
+
```json
|
|
212
|
+
[
|
|
213
|
+
{
|
|
214
|
+
"Description": "AWS Access Key",
|
|
215
|
+
"StartLine": 23,
|
|
216
|
+
"EndLine": 23,
|
|
217
|
+
"StartColumn": 15,
|
|
218
|
+
"EndColumn": 35,
|
|
219
|
+
"Match": "AKIA****************",
|
|
220
|
+
"Secret": "AKIA****************",
|
|
221
|
+
"File": "src/config/aws.ts",
|
|
222
|
+
"SymlinkFile": "",
|
|
223
|
+
"Commit": "a3f8d92c1e5b4a6d7f8e9c0b1a2d3e4f5a6b7c8d",
|
|
224
|
+
"Entropy": 3.8954,
|
|
225
|
+
"Author": "developer@example.com",
|
|
226
|
+
"Email": "developer@example.com",
|
|
227
|
+
"Date": "2025-11-15T14:32:10Z",
|
|
228
|
+
"Message": "Add AWS configuration for S3 uploads",
|
|
229
|
+
"Tags": [],
|
|
230
|
+
"RuleID": "aws-access-token",
|
|
231
|
+
"Fingerprint": "a3f8d92c1e5b4a6d7f8e9c0b1a2d3e4f5a6b7c8d:src/config/aws.ts:aws-access-token:23"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"Description": "Generic API Key",
|
|
235
|
+
"StartLine": 8,
|
|
236
|
+
"EndLine": 8,
|
|
237
|
+
"StartColumn": 18,
|
|
238
|
+
"EndColumn": 68,
|
|
239
|
+
"Match": "api_key = \"sk_live_********************\"",
|
|
240
|
+
"Secret": "sk_live_********************",
|
|
241
|
+
"File": "backend/payments/stripe.py",
|
|
242
|
+
"SymlinkFile": "",
|
|
243
|
+
"Commit": "b7e4f1a9d8c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9",
|
|
244
|
+
"Entropy": 4.2156,
|
|
245
|
+
"Author": "backend-dev",
|
|
246
|
+
"Email": "backend@example.com",
|
|
247
|
+
"Date": "2025-09-22T09:17:43Z",
|
|
248
|
+
"Message": "Integrate Stripe payment processing",
|
|
249
|
+
"Tags": [],
|
|
250
|
+
"RuleID": "generic-api-key",
|
|
251
|
+
"Fingerprint": "b7e4f1a9d8c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9:backend/payments/stripe.py:generic-api-key:8"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"Description": "Private Key",
|
|
255
|
+
"StartLine": 1,
|
|
256
|
+
"EndLine": 27,
|
|
257
|
+
"StartColumn": 1,
|
|
258
|
+
"EndColumn": 64,
|
|
259
|
+
"Match": "-----BEGIN RSA PRIVATE KEY-----\nMIIE...",
|
|
260
|
+
"Secret": "-----BEGIN RSA PRIVATE KEY-----\nMIIE...",
|
|
261
|
+
"File": "deploy/ssh/id_rsa",
|
|
262
|
+
"SymlinkFile": "",
|
|
263
|
+
"Commit": "2c8f9e1b3a7d4c6f8e0a9b1c2d3e4f5a6b7c8d9e",
|
|
264
|
+
"Entropy": 5.1234,
|
|
265
|
+
"Author": "devops",
|
|
266
|
+
"Email": "devops@example.com",
|
|
267
|
+
"Date": "2024-03-10T11:45:22Z",
|
|
268
|
+
"Message": "Add deployment keys (REMOVED IN LATER COMMIT)",
|
|
269
|
+
"Tags": [],
|
|
270
|
+
"RuleID": "private-key",
|
|
271
|
+
"Fingerprint": "2c8f9e1b3a7d4c6f8e0a9b1c2d3e4f5a6b7c8d9e:deploy/ssh/id_rsa:private-key:1"
|
|
272
|
+
}
|
|
273
|
+
]
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
**Field descriptions:**
|
|
277
|
+
|
|
278
|
+
- **Description**: Human-readable rule name (e.g., "AWS Access Key", "GitHub Token")
|
|
279
|
+
- **File**: Relative path to file containing the secret
|
|
280
|
+
- **StartLine/EndLine**: Line numbers where secret appears
|
|
281
|
+
- **StartColumn/EndColumn**: Character positions within the line
|
|
282
|
+
- **Match**: Redacted preview of the matched pattern (shows context, not full secret)
|
|
283
|
+
- **Secret**: Redacted secret value (always redacted in v8+)
|
|
284
|
+
- **Commit**: Git SHA of commit that introduced the secret
|
|
285
|
+
- **Author/Email**: Commit author information
|
|
286
|
+
- **Date**: Timestamp of the commit
|
|
287
|
+
- **Message**: Git commit message
|
|
288
|
+
- **RuleID**: Internal rule identifier for the detection pattern
|
|
289
|
+
- **Entropy**: Shannon entropy score (measures randomness, higher = more likely real secret)
|
|
290
|
+
- **Fingerprint**: Unique identifier for deduplication (commit:file:rule:line)
|
|
291
|
+
|
|
292
|
+
**Historical vs. current findings:**
|
|
293
|
+
- Findings with commits matching current HEAD: Present in working state
|
|
294
|
+
- Findings with older commits not in HEAD: Historical exposure (removed but in git history)
|
|
295
|
+
|
|
296
|
+
## Normalization
|
|
297
|
+
|
|
298
|
+
Radar transforms Gitleaks output into normalized signals for agent consumption.
|
|
299
|
+
|
|
300
|
+
### Field Mapping
|
|
301
|
+
|
|
302
|
+
| Radar Field | Source | Transformation |
|
|
303
|
+
|-------------|--------|----------------|
|
|
304
|
+
| `signal_id` | Generated | `S-GL-{NNN}` (sequential numbering) |
|
|
305
|
+
| `source_tool` | Static | `gitleaks` |
|
|
306
|
+
| `source_rule` | `RuleID` | Direct mapping (e.g., "aws-access-token") |
|
|
307
|
+
| `location` | `File`, `StartLine`, `EndLine` | `{File}:{StartLine}-{EndLine}` |
|
|
308
|
+
| `severity` | `RuleID` | Rule-based mapping (see table below) |
|
|
309
|
+
| `confidence_estimate` | `Entropy`, `RuleID` | Detection method heuristic (see below) |
|
|
310
|
+
| `blast_radius` | `RuleID` | Secret type inference (see below) |
|
|
311
|
+
| `domain_relevance` | `RuleID`, `File` | All → "04", context-dependent → also "05" |
|
|
312
|
+
| `raw_output` | Full finding | Complete JSON object preserved |
|
|
313
|
+
| `enrichment` | `Commit`, `Date` | Historical exposure flag, commit metadata |
|
|
314
|
+
|
|
315
|
+
### Severity Mapping
|
|
316
|
+
|
|
317
|
+
All Gitleaks findings map to high or critical severity — secrets are inherently high-risk.
|
|
318
|
+
|
|
319
|
+
| Secret Type | Severity | Examples |
|
|
320
|
+
|-------------|----------|----------|
|
|
321
|
+
| Cloud provider keys | critical | AWS keys, GCP service accounts, Azure storage keys |
|
|
322
|
+
| Database credentials | critical | PostgreSQL passwords, MongoDB connection strings, Redis auth |
|
|
323
|
+
| Private keys | critical | RSA/SSH private keys, TLS certificates, JWT signing keys |
|
|
324
|
+
| API tokens | high | GitHub PATs, Stripe API keys, Slack tokens, generic API keys |
|
|
325
|
+
| Generic passwords | high | Hardcoded passwords, basic auth credentials |
|
|
326
|
+
| Service secrets | high | JWT secrets, session secrets, encryption keys |
|
|
327
|
+
|
|
328
|
+
### Confidence Estimate
|
|
329
|
+
|
|
330
|
+
Based on detection method and entropy:
|
|
331
|
+
|
|
332
|
+
| Condition | Confidence | Rationale |
|
|
333
|
+
|-----------|------------|-----------|
|
|
334
|
+
| Regex match + entropy ≥ 4.5 | high | Strong pattern + high randomness |
|
|
335
|
+
| Regex match + entropy 3.5-4.5 | high | Pattern match with moderate randomness |
|
|
336
|
+
| Regex match + entropy < 3.5 | medium | Pattern match but low entropy (possible placeholder) |
|
|
337
|
+
| Entropy-only detection | low | High randomness without pattern (likely false positive) |
|
|
338
|
+
| Known secret format (e.g., "sk_live_") | high | Recognizable vendor-specific prefix |
|
|
339
|
+
|
|
340
|
+
### Blast Radius
|
|
341
|
+
|
|
342
|
+
Derived from secret type to estimate potential impact scope:
|
|
343
|
+
|
|
344
|
+
| Secret Type | Blast Radius | Rationale |
|
|
345
|
+
|-------------|--------------|-----------|
|
|
346
|
+
| Cloud provider keys | widespread | Full infrastructure access, multi-service permissions |
|
|
347
|
+
| Database credentials | widespread | Access to all stored data, potential PII exposure |
|
|
348
|
+
| API tokens (third-party) | moderate | Service-level access, limited to vendor API scope |
|
|
349
|
+
| Generic passwords | localized | Unknown scope, likely single-service or user account |
|
|
350
|
+
| Private keys (deployment) | widespread | Server access, potential lateral movement |
|
|
351
|
+
| JWT secrets | moderate | Session hijacking, authentication bypass |
|
|
352
|
+
|
|
353
|
+
### Enrichment Fields
|
|
354
|
+
|
|
355
|
+
Additional context added during normalization:
|
|
356
|
+
|
|
357
|
+
- **historical_exposure**: Boolean flag — `true` if secret detected in git history but not in current HEAD
|
|
358
|
+
- **first_seen**: Date of earliest commit containing the secret
|
|
359
|
+
- **last_seen**: Date of latest commit (current HEAD date if still present)
|
|
360
|
+
- **commit_count**: Number of commits where secret appears (if same secret in multiple commits)
|
|
361
|
+
- **author_email**: Commit author email (for accountability, not blame)
|
|
362
|
+
- **removal_status**: `"active"` (in HEAD), `"removed"` (history only), or `"modified"` (changed between commits)
|
|
363
|
+
|
|
364
|
+
### Deduplication Strategy
|
|
365
|
+
|
|
366
|
+
**Same secret in multiple commits** = single signal with metadata:
|
|
367
|
+
- Use earliest commit date as `first_seen`
|
|
368
|
+
- Use latest commit date as `last_seen`
|
|
369
|
+
- Increment `commit_count`
|
|
370
|
+
- List all affected commits in enrichment
|
|
371
|
+
- Primary `Fingerprint` uses earliest commit SHA
|
|
372
|
+
|
|
373
|
+
**Example deduplicated signal:**
|
|
374
|
+
```json
|
|
375
|
+
{
|
|
376
|
+
"signal_id": "S-GL-042",
|
|
377
|
+
"source_tool": "gitleaks",
|
|
378
|
+
"source_rule": "aws-access-token",
|
|
379
|
+
"location": "config/aws.js:15-15",
|
|
380
|
+
"severity": "critical",
|
|
381
|
+
"confidence_estimate": "high",
|
|
382
|
+
"blast_radius": "widespread",
|
|
383
|
+
"domain_relevance": ["04"],
|
|
384
|
+
"enrichment": {
|
|
385
|
+
"historical_exposure": false,
|
|
386
|
+
"first_seen": "2024-08-12T10:23:45Z",
|
|
387
|
+
"last_seen": "2025-11-15T14:32:10Z",
|
|
388
|
+
"commit_count": 3,
|
|
389
|
+
"commits": [
|
|
390
|
+
"2c8f9e1b3a7d4c6f8e0a9b1c2d3e4f5a6b7c8d9e",
|
|
391
|
+
"5a3d7f9c1e4b8a6d2f0e9c8b7a6f5e4d3c2b1a0",
|
|
392
|
+
"a3f8d92c1e5b4a6d7f8e9c0b1a2d3e4f5a6b7c8d"
|
|
393
|
+
],
|
|
394
|
+
"removal_status": "active"
|
|
395
|
+
},
|
|
396
|
+
"raw_output": { /* full Gitleaks finding */ }
|
|
397
|
+
}
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
### Critical Normalization Rule
|
|
401
|
+
|
|
402
|
+
**Radar signals MUST NEVER contain actual secret values.** Gitleaks automatically redacts secrets in v8+, but normalization layer must verify:
|
|
403
|
+
- `Match` field is redacted (asterisks or truncated)
|
|
404
|
+
- `Secret` field is redacted
|
|
405
|
+
- No raw secret values in `enrichment` metadata
|
|
406
|
+
- If unredacted output detected, apply additional redaction before signal creation
|
|
407
|
+
|
|
408
|
+
## Limitations
|
|
409
|
+
|
|
410
|
+
### Cannot Detect
|
|
411
|
+
|
|
412
|
+
Gitleaks is limited to scanning git-tracked text files and cannot detect secrets in:
|
|
413
|
+
|
|
414
|
+
1. **Compiled binaries or encrypted configuration files**: Secrets embedded in .class, .jar, .exe, .so, or encrypted vaults
|
|
415
|
+
2. **Environment variables not committed to source control**: Correctly externalized secrets (e.g., `export AWS_KEY=...` in shell, not in repo)
|
|
416
|
+
3. **External secret management systems**: HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager (these are correct practices, not gaps)
|
|
417
|
+
4. **Container images not in git**: Secrets baked into Docker images via layers not tracked in repository
|
|
418
|
+
5. **Non-git communication channels**: Secrets shared via Slack, email, wikis, Jira comments, documentation systems
|
|
419
|
+
6. **Runtime-generated secrets**: API keys fetched from services at application startup, temporary credentials
|
|
420
|
+
7. **Obfuscated or encoded secrets**: Base64/hex-encoded strings that don't match patterns, split across variables
|
|
421
|
+
|
|
422
|
+
### False Positives
|
|
423
|
+
|
|
424
|
+
Gitleaks may flag non-sensitive data that matches secret patterns:
|
|
425
|
+
|
|
426
|
+
1. **Example/documentation API keys**: README files with `"your-api-key-here"` or `"sk-test-xxxx"` placeholders
|
|
427
|
+
2. **High-entropy non-secrets**: UUIDs, SHA checksums, content hashes, base64-encoded images, cryptographic nonces
|
|
428
|
+
3. **Test fixture secrets**: Intentionally fake credentials in test suites (e.g., `"password123"`, `"fake-key-for-testing"`)
|
|
429
|
+
4. **Package lock file hashes**: npm/yarn integrity checksums, git submodule SHAs, vendor lock files
|
|
430
|
+
5. **Encoded binary data**: Serialized protocol buffers, msgpack data, compressed archives as text
|
|
431
|
+
6. **Random identifiers**: Transaction IDs, request IDs, session tokens that aren't reusable secrets
|
|
432
|
+
|
|
433
|
+
**Mitigation**: Use `.gitleaks.toml` allowlists to suppress known false positives while preserving detection coverage.
|
|
434
|
+
|
|
435
|
+
### False Negatives
|
|
436
|
+
|
|
437
|
+
Gitleaks may miss real secrets that evade detection patterns:
|
|
438
|
+
|
|
439
|
+
1. **Custom secret formats**: Organization-specific API key patterns not in default rules (requires custom regex rules)
|
|
440
|
+
2. **Secrets committed then removed**: Only caught with `--log-opts="--all"` full history scan (not default behavior)
|
|
441
|
+
3. **Split or obfuscated secrets**: String concatenation (`"sk_" + "live_" + key_suffix`), multi-variable composition
|
|
442
|
+
4. **Binary files**: Secrets in .zip, .pdf, .docx, images (Gitleaks scans text, skips binaries)
|
|
443
|
+
5. **Low-entropy secrets**: Simple passwords like `"admin123"` that don't trigger entropy thresholds
|
|
444
|
+
6. **Secrets in non-standard encodings**: ROT13, XOR-encoded, custom cipher text
|
|
445
|
+
7. **Comments with credentials**: Secrets in non-code contexts (SQL comments, HTML comments) if pattern doesn't match
|
|
446
|
+
|
|
447
|
+
**Mitigation**: Combine Gitleaks with code review, security training, and pre-commit hooks to catch secrets before they enter git history.
|