Skip to content

decision(atlas): trufflehog adoption — AGPL collision + verification exfiltration; gitleaks-first ruling #6050

Closed

Description

@dezren39

Parent: #6021 (classification revalidation scan). Research source: prior-art doc ~/workspace/scratch/atlas-ingestion-brief-2026-11-04/prior-art-research.md (2026-11-04). Follow-up 29 (Cluster 5).

Decision to record (research, in substance)

trufflehog is the broader secret scanner (more sources + live credential verification), but for Atlas it carries two structural problems:

  1. License: trufflehog is AGPL-3.0, which collides with Drew's 2026-10-24 adoption hard filter ("NOT AGPL, NOT GPL") for our own dependencies. Adopting it needs the adoption-vs-use question answered deliberately, not by drift.
  2. Exfiltration: verification is on by default and calls external vendor APIs with candidate secrets. Inside a secret-tier scan, that behavior would exfiltrate the very material being hunted. Any use must be --no-verification only.

Ruling proposed by the research: gitleaks-first (MIT, fully local); trufflehog, if ever, only with --no-verification and only after the license question is answered on the record (the adoption/upload regime distinction is being worked in the licensing family, #5977/#5984/#5986).

Done looks like

The decision recorded here (adopt the ruling or amend it), so the classification scanner design (under #6021) builds on gitleaks-class tooling by default.

Activity

  1. added
    area/infraInfrastructure, deployment, and operations
    kind/designA design proposal (design-architect): multi-step, phased, decision-bearing
    on Nov 5, 2026
  2. developing-today commented on Nov 5, 2026

    @developing-today
    Contributor
  3. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 5, 2026
  4. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    work/assignedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 5, 2026
  5. developing-today commented on Nov 5, 2026

    @developing-today
    Contributor

    🤖 Agent note · handed off

  6. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  7. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    on Nov 5, 2026
  8. 72 remaining items

  9. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 5, 2026
  10. dezren39 commented on Nov 6, 2026

    @dezren39
    MemberAuthor

    agent-note:v1

  11. added
    queue/claimedQueue worker lifecycle state
    and removed
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    on Nov 6, 2026
  12. dezren39 commented on Nov 6, 2026

    @dezren39
    MemberAuthor

    agent-note:v1

    Triage decision

    Adopt the proposed gitleaks-first ruling for Atlas. Do not adopt trufflehog as a project dependency: the settled adoption ruling on #5984 treats GPL/AGPL as a hard reject for our own dependencies. Keep that separate from the unresolved/independent policy for user-uploaded content.

    The scanner design already records the relevant operational boundary on #6021: use a gitleaks-class MIT, fully local deterministic scan; do not send candidate secrets to vendor verification APIs. If trufflehog is ever considered for a separately approved, non-dependency use, its verification must be disabled (--no-verification) and that exception must be assessed explicitly before use against Atlas data.

    This resolves #6050's decision-record purpose and gives #6021 a default. #6021 remains the execution/design consumer; no duplicate follow-up queue task is needed. The repo's primary clone had pre-existing user changes, so it was not fast-forwarded; the clean task worktree was based on fetched origin/main at 2fac2b7.

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

Metadata

Metadata

Assignees

Labels

area/infraInfrastructure, deployment, and operationskind/designA design proposal (design-architect): multi-step, phased, decision-bearingstatus:donetask/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions