How I Finally Removed GitHub’s Persistent “Ghost Notification” — The Real Fix With GitHub CLI

If you’re a developer who uses GitHub daily, you probably rely on notification badges to track issues, pull requests, and mentions. But what happens when the notification badge gets stuck — even after clearing everything?
For months, I saw a 1 notification badge that refused to disappear, even though there aren’t any unread messages in any inbox folder. No archived items, no subscriptions, nothing hidden. Still, the badge remained.
Many developers started reporting the same issue as early as September 2025. This wasn’t just a UI bug — it was caused by a spam attack impersonating Gitcoin, leaving backend notification records that GitHub never automatically cleaned up.
Here’s the full story and, most importantly, how to fix the phantom notification for real.
Why does this “ghost notification” exist?
A large spam wave impersonated Gitcoin by creating fake repositories such as:
Gitcoin-Developer/gitcoin.com
Gitcoin-Developers/gitcoin.comAttackers added random users to issues and PR threads, which auto-generated GitHub notifications. When the repositories were later deleted or blocked, the notification entries remained in GitHub’s backend without corresponding UI elements — leaving many users with:
🔴 A permanent unread badge
❌ No visible notification in the UI
🧠 A database thread that cannot be cleared normally
So if you’ve ignored the badge for months and now want to clean it up, there’s nothing you can do through the web interface.
How the scam worked
The scam process:
Attackers create a fake repo or issue
Mass-mention developers to generate real GitHub notifications
Direct users to a site asking them to connect a crypto wallet
Request approval or “verification” transaction
Drain assets once permissions are granted
While the scam itself isn’t the focus of this post, it explains why so many developers have the same persistent notification problem.
Once the scam repo or issue is deleted,
GitHub’s UI has nothing to open → but still marks it unread → and it gets stuck forever.
| Scam Technique | Explanation |
|---|---|
| Fake Gitcoin repo | Designed to appear legitimate via similar organization name |
| Auto-adding users | People were tagged without consent to trigger notification curiosity |
| Crypto-reward bait | Threads referenced bounties or airdrops |
| Phishing links | Redirected to fake wallet-connect pages |
Even if you never clicked anything, the notification artifact remained.
How to remove the stuck GitHub notification
The solution comes from this community discussion
✔ Best solution: Clear the backend notification record via GitHub CLI
Step 1 — List all active notification threads
gh api notifications | jq '.[] | { id, title: .subject.title, repo: .repository.full_name }'This will show threads still registered even if invisible with their thread IDs.
Step 2 — Delete the target thread
Replace $THREAD_ID with the ID you find:
gh api --method DELETE notifications/threads/$THREAD_IDRefresh GitHub — the red badge disappears immediately.
If you don’t have jq installed
gh api notifications
gh api --method DELETE notifications/threads/THREAD_IDConclusion
The persistent notification badge wasn’t just an interface glitch — it was a leftover record from a wide-scale scam attack that GitHub never fully cleaned up. Many developers have dealt with this for months, and UI clearing methods don’t help because nothing actually remains in the visible inbox.
The GitHub CLI deletion method is currently the only reliable fix.