It would be nice if Agentic workflows also cleaned up really old branches. I didn't realize that I have almost 150 remotes.
Biggest culprits
- repo-assist/ branches: 85 — the automated agent creates long-hash-suffixed branches, and when retries happen they chain (-hash1-hash2-hash3). These are never cleaned up.
- copilot/ branches: 28 — from Copilot coding agent sessions, also never auto-deleted.
- dependabot/, shanselman/, fix/, etc. — smaller numbers, normal.
What cleans them today?
Almost nothing. You have:
stale.yml — marks stale PRs and issues after 14–27 days and closes them after 7 more days. But closing a PR does not delete its branch unless the repo setting "Automatically delete head branches" is enabled at the repository level.
No workflow or cron job that deletes branches after PR merge/close.
What should be done?
Enable "Automatically delete head branches" in repo Settings → General. This is the single biggest win — it auto-deletes branches when their PR is merged. It's a GitHub repo-level toggle, not a workflow setting.
Delete the 13 already-merged branches immediately. These are dead weight (e.g., copilot/tidy-remote-branches, pr-211-build-props, pr-triage, several repo-assist/eng-* branches).
Add a scheduled workflow to prune stale branches — e.g., delete remote branches older than 60 days that are either (a) fully merged, or (b) have no open PR. This catches the repo-assist/ retry chains that pile up with no PR at all.
Audit the 39 branches older than 60 days — most are abandoned repo-assist/ retry chains from March that will never be merged.

It would be nice if Agentic workflows also cleaned up really old branches. I didn't realize that I have almost 150 remotes.
Biggest culprits
What cleans them today?
Almost nothing. You have:
stale.yml — marks stale PRs and issues after 14–27 days and closes them after 7 more days. But closing a PR does not delete its branch unless the repo setting "Automatically delete head branches" is enabled at the repository level.
No workflow or cron job that deletes branches after PR merge/close.
What should be done?
Enable "Automatically delete head branches" in repo Settings → General. This is the single biggest win — it auto-deletes branches when their PR is merged. It's a GitHub repo-level toggle, not a workflow setting.
Delete the 13 already-merged branches immediately. These are dead weight (e.g., copilot/tidy-remote-branches, pr-211-build-props, pr-triage, several repo-assist/eng-* branches).
Add a scheduled workflow to prune stale branches — e.g., delete remote branches older than 60 days that are either (a) fully merged, or (b) have no open PR. This catches the repo-assist/ retry chains that pile up with no PR at all.
Audit the 39 branches older than 60 days — most are abandoned repo-assist/ retry chains from March that will never be merged.
