使用 GitHub CLI 徹底移除 GitHub 上頑固的「幽靈通知」

GitHub notification 對開發者來說是一向很方便的工具,可以用來追蹤 issue、pull request 和提及 (mention)。但某天我的通知標記忽然就這麼卡住了,即使已讀了所有內容也他還是非常頑固的卡在那裡,在又拖了幾個月之後我才終於花了點時間研究發生了什麼事。
這幾個月,我的 GitHub 收件夾一直有一個「1」的通知標記,即使每個收件匣都沒有未讀訊息 ,它也沒有消失。沒有封存的項目,沒有訂閱,也沒有任何隱藏的內容。但那個通知就是在那,當其他 notification 出現的時候那個數字就開始往上加。
我查了一下,發現許多開發者早在 2025 年 9 月就開始回報同樣的問題。這是由一場冒充 Gitcoin 的垃圾訊息攻擊引起的,在 GitHub 的後端留下了沒有被自動清理掉的通知紀錄。
以下是整個事件的始末,以及如何修復這個幽靈通知。
這個「幽靈通知」怎麼出現的?
一波大規模的詐騙冒充 Gitcoin,創建了假的儲存庫,例如:
Gitcoin-Developer/gitcoin.com
Gitcoin-Developers/gitcoin.com攻擊者將隨機使用者加入 issue 和 PR 討論串中,因此這些倒霉蛋不出意外的收到了 GitHub 通知。當這些儲存庫後來被刪除或封鎖時,通知的條目仍然保留在 GitHub 的後端,卻沒有對應的 UI 元素,導致這些人面臨了一個尷尬的狀況:
🔴 一個一直存在的未讀標記
❌ UI 中沒有對應可見的通知
🧠 一個無法正常清除的資料庫討論串
所以,如果有這樣的情況的使用者,在這幾個月來一直忽略這個標記,現在想清理它,就會發現透過網頁介面根本清不掉。
詐騙是如何運作的
詐騙流程如下:
- 攻擊者創建一個假的儲存庫或 issue
- 大量提及 (mass-mention) 開發者以產生真實的 GitHub 通知
- 引導使用者前往一個要求他們連接加密貨幣錢包的網站
- 要求批准或「驗證」交易
- 一旦獲得權限,便盜取資產
雖然這篇文章的重點不是詐騙本身,但它解釋了為什麼這麼多開發者會遇到同樣的幽靈通知問題。
一旦詐騙儲存庫或 issue 被刪除:
GitHub 的 UI 沒有任何東西可以打開 → 但仍然將其標記為未讀 → 然後它就永遠卡在那裡囉~~~
| 詐騙手法 | 解釋 |
|---|---|
| 假的 Gitcoin 儲存庫 | 透過相似的組織名稱設計,讓他看起來值得信任 |
| 自動加入使用者 | 在未經同意的情況下標記使用者,以引發他們對通知的好奇心 |
| 加密貨幣獎勵誘餌 | 討論串中提及賞金或空投 |
| 釣魚連結 | 將使用者重新導向至假的錢包連接頁面 |
即使你從未點擊任何東西,這些通知也會默默存在。
如何移除卡住的 GitHub 通知
解決方案來自這個社群討論。
✔ 最佳解法:透過 GitHub CLI 清除後端的通知紀錄
步驟 1 — 列出所有活動中的通知討論串
gh api notifications | jq '.[] | { id, title: .subject.title, repo: .repository.full_name }'這會顯示所有仍然存在後端的討論串,不管它們是不是能在介面上看不看得到,並附帶它們的討論串 ID。
步驟 2 — 刪除目標討論串
將 $THREAD_ID 替換成你找到的 ID:
gh api --method DELETE notifications/threads/$THREAD_ID重新整理 GitHub 頁面——標記就會消失囉!!!
如果你沒有安裝 jq
gh api notifications
gh api --method DELETE notifications/threads/THREAD_ID結論
這個介於存在與不存在之間的通知標記不僅僅是一個介面上的小問題,它是一場大規模詐騙攻擊後,GitHub 未能完全清理的殘留紀錄。許多開發者已經忍受這個問題好幾個月,而 UI 上的清除方法之所以無效,是因為在大家看得到的收件匣中根本沒有任何東西。
目前來說,透過 GitHub CLI 把通知刪除是最有效的解法。