Skip to content

security(laptop-repo-keeper): secret guard misses credentials inside wholly untracked directories — autocommit snapshot pushes them (Codex P1 on #1740, merged unacted) #2268

Closed

Description

@dezren39

Defect

The laptop repo-keeper's secret guard can be bypassed by directory nesting: the guard regex runs over collapsed git status output, so a credential file inside a wholly untracked directory (status shows only ?? config/) is never matched — and the autocommit snapshot then commits and pushes it. Codex flagged this as a P1 on PR #1740 and reproduced it in a temp clone; the PR merged without the finding being acted on. Defect confirmed present on main 2026-10-29 (audit: REAL + never engaged + merged anyway).

The Codex finding (verbatim, PR #1740)

Check individual untracked paths in the secret guard

When a sensitive file is inside a wholly untracked directory, this status output can contain only the directory name, such as ?? config/, so the regex never sees config/credentials.json. The subsequent snapshot commits the nested file despite the advertised secret-path guard. I reproduced this with a temporary hatch clone; the enabled autocommit script then pushed that snapshot. Inspect individual untracked paths, as the size check already does, rather than relying on collapsed status entries.

Finding: #1740 (comment) (filed against nixos/home/laptop-repo-keeper.sh line 78, PR #1740)

Fix direction (as Codex prescribed)

Inspect individual untracked paths in the secret guard — as the size check already does — rather than relying on collapsed status entries.

Related but distinct: #1751 (laptop-untracked-review bare git commit sweeping pre-staged work) is a different mechanism in a sibling script; this issue is only the keeper secret-guard bypass.

Source

Codex review-value audit 2026-10-29 (research_notes/codex-review-value-20261029/findings.md §2, best catch #2): 636 Codex findings classified, this one REAL-CATCH, never engaged, PR merged anyway. Verification: defect confirmed present on main 2026-10-29.

Activity

  1. developing-today commented on Oct 29, 2026

    @developing-today
    Contributor
  2. added
    queue/queuedHas a queued task in the Supabase agent queue
    effort/sSmall: expected under 2 hours of work
    on Oct 29, 2026
  3. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    Agent note — picked up (OpenChamber scheduled lane)

  4. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 2, 2026
  5. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    Agent note — PR opened, parking for CI (OpenChamber scheduled lane)

  6. 11 remaining items

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

    @dezren39
    MemberAuthor

    agent-note:v1 — state: picked-up (task 3423, OpenChamber scheduled lane)

  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 3, 2026
  10. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — state: parked (task 3423, OpenChamber scheduled lane)

  11. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — state: handed off

    Queue task #3423 is handed to OpenCode for execution.

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

Metadata

Metadata

Assignees

Labels

effort/sSmall: expected under 2 hours of workkind/securitySecurity issue or security hardeningpriority/highImportant and time-sensitivequeue/parkedQueue task is parked (waiting on CI, time, or an event)status/parkedDeliberately paused with a recorded resume conditionwork/assignedQueue worker lifecycle state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions