GitHubで削除できない通知がある場合の対処法
この記事は
GitHubの通知で「未読があるが通知一覧では表示されない」という謎の現象を解決する方法です。
問題の背景
先日、私のGitHubアカウントで以下のような現象が発生しました。
- 右上の通知アイコンに通知ありのマークがついている
- Notifications画面のサイドバーには1件の未読通知がある
- しかし、通知一覧には何も表示されない
どうやら通知はycombinattoor/-co
というリポジトリに関連しているようです。私には全然心当たりがないのですが、確認しようにもそのリポジトリは既に削除されて存在しません。
しばらくは気にせず使っていました。しかし通知アイコンに未読マークがついたままだと、いちいち通知画面を開かないと未読通知があるのかないのかがわからず非常に邪魔です。
そこで解決方法を調べました。
すると、同じ問題に直面している人がいました。
原因
あるリポジトリに関連する未読の通知がある状態でそのリポジトリが削除されると、通知が残ったままになり、Web UI上では表示ができなくなるようです。
今回の場合はycombinattoor/-co
というリポジトリから無作為に色々なアカウントにスパム通知が送られていたようです。
おそらくそのスパム通知が私にも送られてきたのですが、私がその通知を読む前に誰かの通報によってそのリポジトリが削除されたのでしょう。そして私のアカウントに残っていた通知は表示できなくなった、ということのようです。
こうなってしまうと通常のWebインタフェースでは表示されないため、手動で削除できません。
※GitHubの仕様バグという気がしますが…。
GitHub CLIを使った解決方法
Web UIでは削除できませんが、APIを直接操作すれば削除できます。
今回はGitHub CLIのAPIコマンドを使って解決しました。
前提
以下の環境での動作を確認しています。
- GitHub CLIがインストール済み
- GitHubアカウントでログイン済み
手順1: GitHub CLIのインストールと認証
まず、GitHub CLIがインストールされていない場合はインストールします。
Macの場合
brew install gh
Linuxの場合
# Ubuntu/Debian
sudo apt install gh
# CentOS/RHEL
sudo yum install gh
Windowsの場合
# Windows Package Manager
winget install --id GitHub.cli
インストール後、GitHubアカウントで認証します。
gh auth login
コマンドを実行すると認証方法を選択できます。ブラウザでの認証が最も簡単です。
手順2: 通知の一覧取得
すべての通知を取得して、削除できない通知を特定します。
通知一覧に何も表示されていない状態なら、問題の1件のみが表示されるはずです。
gh api notifications
このコマンドを実行すると、JSON形式で通知の一覧が表示されます。
以下のような出力が表示されます。
[
{
"id": "19145718366",
"unread": true,
"reason": "mention",
"updated_at": "2025-09-24T00:53:11Z",
"last_read_at": null,
"subject": {
"title": "Y-Combinator W2026 | $15M Y-Combinator & GitHub",
"url": "https://api.github.com/repos/ycombinattoor/-co/issues/385",
"latest_comment_url": "https://api.github.com/repos/ycombinattoor/-co/issues/385",
"type": "Issue"
},
{以下省略}
}
]
これで通知のIDがわかります。上記の例では19145718366
です。
手順3: 特定の通知IDの削除
問題となっている通知のIDを特定したら、以下のコマンドで削除します。
gh api -X DELETE notifications/threads/<通知ID>
通知IDが19145718366
の場合は以下のようになります。
gh api -X DELETE notifications/threads/19145718366
これで削除が完了です。
Web UIを確認すると、以下のように未読通知が消えていました。
まとめ
GitHub CLIを使用することで、Webインタフェースでは削除できない通知を削除できます。
主な手順は以下の通りです。
-
gh api notifications
で通知一覧を取得 - 削除対象の通知IDを特定
-
gh api -X DELETE notifications/threads/<ID>
で個別削除
もし同様の問題に直面した場合は、ぜひ試してみてください。
Discussion
同じスパムで通知が残っていたので助かりました!
ありがとうございます🙏
お役に立てて良かったです!