Contents

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.com

Attackers 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:

  1. Attackers create a fake repo or issue

  2. Mass-mention developers to generate real GitHub notifications

  3. Direct users to a site asking them to connect a crypto wallet

  4. Request approval or “verification” transaction

  5. 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 TechniqueExplanation
Fake Gitcoin repoDesigned to appear legitimate via similar organization name
Auto-adding usersPeople were tagged without consent to trigger notification curiosity
Crypto-reward baitThreads referenced bounties or airdrops
Phishing linksRedirected 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_ID

Refresh GitHub — the red badge disappears immediately.


If you don’t have jq installed

gh api notifications
gh api --method DELETE notifications/threads/THREAD_ID

Conclusion

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.

References

GitHub community discussion