🔔

GitHubの通知がないのにあるバグの修正方法

に公開

最近にあった出来事なのですが、GitHubの通知に謎の空の通知が追加され、リストに表示されない影響で既読をつけられないということがありました


問題のスクリーンショット

通知にはycombina/torというリポジトリが設定されていますが、このリポジトリは執筆開始時点では存在しません。
また、Mentionedのカテゴリに分類されているため、僕がメンションされたということでしょう。

結論

GitHubのサポートチームによると、具体的な理由は調査中のようです。
ただし、可能性として、次のような理由が考えられるといいます。

リポジトリを作成したユーザーがGitHubの利用規約を違反したなどの理由で、ユーザーごと削除されてしまい、違反したユーザーの通知も非表示になったが、通知自体のデータは残っており「存在するけど表示されず、リストからも既読にできない」という状況が発生した
Nerconeによる意訳、一部間違っているかもしれません

修正方法

サポートチームは同時に、動作する可能性のある修正方法を提案してくれました。

通知を「既読」にするスクリプトを実行することは、通知自体を削除するのではなく、通知のステータスを更新するだけなので、一般的に安全だと考えられています。スクリプトは以下のとおりです:

gh api \
  --method PUT \
  -H "Accept: application/vnd.github+json" \
  /notifications \
 -F read=true 

コード部分以外はNerconeによる意訳、一部間違っているかもしれません

このスクリプト(厳密にはシェルコマンド)は、GitHub CLIを使用してAPIの/notificationsアクセスポイントに、フォームデータとして「read=true」を送るものです。
つまり、すべての通知を既読状態にするスクリプトで、非表示/表示に関係なく動作するようです。
実際、このスクリプトを実行することで解決しました。

また、一緒にcURLのコマンドも提供してくれました。
$TOKEN部分をGitHubのPAT(Personal Access Token)に置き換えるか、TOKEN環境変数に設定することで動作するようです。

curl -X PUT \
-H "Accept: application/vnd.github.v3+json" \
-H "Authorization: token $TOKEN" \
https://api.github.com/notifications

PATについてはGitHub公式ドキュメント(日本語)を見てくれると嬉しいです。

試した手順

1.通知リスト上で「全選択」をしてから「既読としてマーク」を選択

まず「非表示になっていても全選択ならリスト外も選択されるのでは」と思い、この手順をやってみました。
結果は失敗、非表示のものは選択されないようで、他の通知が既読になり消え去りました。
おそらくUIからの場合、全選択の際に単に表示されている通知全ての一覧をAPIに送っているのでしょう。

2.おとなしくGitHubサポートに連絡

自分だけでは解決できないことが明白だと感じたので、すぐにGitHubのサポートチームに連絡しました。
調べて出てきたサポートのリクエストページでチケットを作成し、少し待ちました。
なんと3分後、すぐに長い返信が返ってきて、しかも修正方法まで一緒に書いてくれました。
すぐに連絡していればよかったと思いました。
そして、修正方法は普通に動作しました。
なお、GitHubのサポートでは、このようなレベルのサポートの場合、有料ユーザーでないと確実な修正は保証されないといいます。
今回は無料ユーザーなのに、修正方法まで送ってくださるという、親切な人に対応してもらえてよかったです。

で、今に至るってわけ

GitHub CLIがインストール済みだったので、修正方法のGitHub CLIの方のコマンドを実行してみました。
ちゃんと動作し、見事に通知は空っぽです。
なんだか嬉しいような寂しいような、複雑な気持ちになりました。

最後に

英語で質問したからかもしれませんが、結構早く回答してもらえました。
これからも、自分で解決できないと思ったら有識者やサポートに相談するようにします。

更新履歴

  • 2025/10/08 22:00 JST: サポートの応答に記載されていたcURLのコマンドを追加しました
  • 2026/05/22 21:35 JST: 引用部分をMarkdown記法の引用構文に変えたりなどして、少し読みやすくしました

Discussion