docHub

PAT Rotation Plan

Date: 2026-06-22 23:37 UTC (originally written) → re-archived in docHub 2026-06-23 00:30 UTC Source: Helper session 412100071272671 Deadline: 2026-06-24 (2 days, current classic PAT expires) Goal: rotate the exposed classic PAT and mint a fine-grained PAT with delete permission so case-variant dup cleanup can proceed


TL;DR

  1. Revoke the old classic PAT (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) — leak window has been open since 2026-06-19.
  2. Mint a fine-grained PAT with Administration: Read and write (this is what unblocks the dup cleanup).
  3. Strip the old token from local .git/config files.
  4. Rotate the Cloudflare API token too (separate system, same leak risk).
  5. (Optional) Delete the 5 case-variant dup repos now that delete permission is available.

What was being replaced

FieldValue
Token (DO NOT paste anywhere new)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
Typeclassic PAT
Scopesrepo, workflow
Where it lives/workspace/freshvibestudio/.git/config (raw URL with token embedded)
RiskVisible to anyone with sandbox read access. Has been publicly visible on GitHub.

Step 1 — Revoke the old PAT

  1. Open https://github.com/settings/tokens
  2. Find the row matching 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
  3. Click Delete, then confirm.
  4. Effect: immediate. Anything still using the old token stops on the next API call.

Status: Operator chose to let it expire on 2026-06-24 rather than manually revoke. Per OQ-2 in bootstrap/open-questions.md.


Step 2 — Mint a fine-grained replacement

  1. Open https://github.com/settings/personal-access-tokens/new
  2. Fill in:
  1. Set only these permissions:
  1. Click Generate token.
  2. Copy it now — you will not see it again.

Status: New PAT received by Helper 2026-06-22 23:50 UTC. Administration: delete confirmed.


Step 3 — Strip the old token from local clones

For each repo on disk, run:

git remote set-url origin https://github.com/<owner>/<repo>.git

For each repo where you want the new token used non-interactively:

git remote set-url origin https://<NEW_TOKEN>@github.com/<owner>/<repo>.git

Or — preferred — switch to one of these so the token never lives in .git/config:

gh auth login                  # OAuth, refresh tokens, scoped per command

Status: Pending operator action on local clones. Helper has the new PAT in memory but hasn't pushed to any local repo (Helper doesn't have a worktree).


Step 4 — Rotate the Cloudflare API token too

Cloudflare API tokens are a separate system from GitHub PATs. The Cloudflare Pages API token was previously visible on GitHub in repo configs.

Status: ✅ Done. Operator confirmed 2026-06-22 23:48 UTC.


Step 5 — Clean up the case-variant dups (optional, now possible)

Once the new PAT has Administration: delete, the 5 case-variant pairs become deletable. Status: ✅ Executed 2026-06-22 23:53 UTC. All 5 dups deleted (204 each). Both casings of each pair return 404. Per reports/2026-06-22-dup-cleanup.md and dangerous/case-variant-dups.md.


Why this matters

The old token has been visible on GitHub since 2026-06-19. Anyone who saw it can still use it until you revoke (or it expires on 2026-06-24).


Cross-references


← back to Mavis workshop