🔔

GitHubで削除できない通知がある場合の対処法

に公開2

この記事は

GitHubの通知で「未読があるが通知一覧では表示されない」という謎の現象を解決する方法です。

問題の背景

先日、私のGitHubアカウントで以下のような現象が発生しました。

  • 右上の通知アイコンに通知ありのマークがついている
  • Notifications画面のサイドバーには1件の未読通知がある
  • しかし、通知一覧には何も表示されない

どうやら通知はycombinattoor/-coというリポジトリに関連しているようです。私には全然心当たりがないのですが、確認しようにもそのリポジトリは既に削除されて存在しません。

notifications

しばらくは気にせず使っていました。しかし通知アイコンに未読マークがついたままだと、いちいち通知画面を開かないと未読通知があるのかないのかがわからず非常に邪魔です。

そこで解決方法を調べました。

すると、同じ問題に直面している人がいました。

https://github.com/orgs/community/discussions/174602

原因

あるリポジトリに関連する未読の通知がある状態でそのリポジトリが削除されると、通知が残ったままになり、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を確認すると、以下のように未読通知が消えていました。

removed

まとめ

GitHub CLIを使用することで、Webインタフェースでは削除できない通知を削除できます。

主な手順は以下の通りです。

  • gh api notificationsで通知一覧を取得
  • 削除対象の通知IDを特定
  • gh api -X DELETE notifications/threads/<ID>で個別削除

もし同様の問題に直面した場合は、ぜひ試してみてください。

Discussion