GitHub notifications keep coming back as unread
You read it. The badge went down. Then the same pull request is sitting in your inbox marked unread again — sometimes hours later, sometimes on a different device. If GitHub notifications keep resurrecting themselves, one of four specific causes is almost always responsible. Here's how to tell them apart and stop each one.
Cause 1: You're "Participating," not just subscribed
GitHub's inbox has three sources of notifications:
- Watching — you explicitly watch the repo.
- Participating — you authored, commented on, or were @mentioned in a thread.
- Subscribed threads — threads you hit "Subscribe" on.
The trap: unsubscribing from a thread does nothing if you're still participating. Anyone replying to "your" PR or issue re-triggers the notification, even after you clicked Unsubscribe. That's why the item keeps coming back no matter what you do to it.
The only real fix for participating threads you no longer care about is "ignore": open the repo → Watch dropdown → Ignoring. That suppresses everything, including mentions. Use the per-thread route if you want to keep mention coverage: open the thread, click Customize next to your subscription, and turn off the event types you don't want.
Cause 2: Automatic watching from organization membership
If you accept an organization invitation, GitHub may default you to Auto watching — every repo in that org notifies you by default. New repos appear "already watched" without you ever clicking anything. Check it at github.com/settings/notifications → under "Automatic watching". Turn Auto off and switch repos you actually follow to explicit Watch. This one change removes most resurrection cases for people who just joined a company or org.
Cause 3: Issue/PR reopened, reassigned, or approved-for-review
A closed issue that gets reopened, a PR you're assigned as reviewer on, or a thread where someone requests your review will flip back to unread by design — this is correct behavior, not a bug. It looks like a haunting because the title is identical, but check the timeline: there's new activity. If these are legitimate but noisy, mute the individual thread with Unsubscribe rather than fighting the whole inbox.
Cause 4: Read-state sync lag across clients
Read state syncs between github.com, mobile, email digests, and API-based clients eventually, not instantly. A desktop client that polled five minutes ago can re-show items you already read on your phone until its next refresh. Two things help:
- Hard-refresh the web tab before assuming anything is wrong.
- Use a client that polls the notifications API directly instead of caching local badge state — stale local counts are the number-one reason people think items came back when they never left.
The nuclear option that isn't
Marking everything done clears the count but doesn't touch the underlying subscriptions — the same threads resurface tomorrow. The durable fix is always upstream: audit what you watch, disable auto-watch, and ignore repos you've left. Ten minutes of subscription cleanup beats marking-all-done every week indefinitely. We walk through the full audit in our guide to cutting notification noise.
An unread count you can trust
DevNotify reads GitHub's notifications API directly every minute, so the menu bar number matches server truth — no cached badges, no phantom resurrections. Free trial, $19 lifetime license.
Download DevNotify Buy license — $19