Inline PR status badges in long-lived sessions don't refresh after PRs merge

Status Fixed / completed
Reported on v2.1.141
Maintainer reply None cached
Activity 4 comments · opened May 15, 2026 · closed May 23, 2026

Environment

  • macOS 26.4.1 (Build 25E253)
  • Claude Code 2.1.141
  • Claude desktop app 1.7196.0

What's wrong
In a single Claude Code session that opens many PRs over time (some via the main agent, some via subagents), the inline PR cards in the transcript keep showing "Open" status even after the PRs are merged on GitHub. The CI pill on the right side of each card updates fine; only the status badge is stale.

Repro

  1. Start a Claude Code session and open multiple PRs from it over time (mix of agent-created and subagent-created)
  2. Merge the PRs on GitHub via rebase merge
  3. Scroll back through the session transcript

Expected: badges reflect current PR state (Merged/Closed).
Actual: badges remain "Open" indefinitely.

Screenshot
A session transcript showing ~20 PR cards (beryl 157–178, with some gaps) all displaying green "Open" status badges. CI pills on the right side of each card are up to date; only the left-side status badge is stale.

<img width="896" height="1362" alt="Image" src="https://github.com/user-attachments/assets/eb5f6e41-ba52-4b2f-892e-5a7296a8b82a" />

Tried, did not work

  • Re-authenticating GitHub connection
  • Closing and reopening the session
  • Quitting and relaunching the app
  • /compact

Why archiving isn't a fix
The session is still active; I'm continuing to work in it and open more PRs. Per-session archive isn't applicable, and there's no documented per-card refresh.

Related issues

  • #11176 (conversation-to-PR linking immutable once established)
  • #54022 (branch label stale, restart doesn't refresh)
  • #25512 (status bar shows merged/closed PR)

View original on GitHub ↗

4 Comments

github-actions[bot] · 5 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/57789
  2. https://github.com/anthropics/claude-code/issues/58491
  3. https://github.com/anthropics/claude-code/issues/55871

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

mpartipilo · 4 months ago

Additional info — root cause + reliable repro

Today's session pinned this down to a GitHub repo-transfer + cached full_name problem, not just stale UI state.

What happened on the GitHub side:

Original repo: mpartipilo/beryl (personal)
Transferred to: beryl-io/beryl (org)
GitHub preserved every PR number across the transfer and now serves a permanent 301 from mpartipilo/beryl/pull/N → beryl-io/beryl/pull/N
What the Desktop UI shows (incorrect):

20 cards in the Sessions / Pull requests panel pinned to mpartipilo/beryl, all marked "Ready for review", PR numbers #157–#178.

What's actually true on GitHub (verified via gh pr view <N> --repo beryl-io/beryl):

Every one of #157–#178 is MERGED. Examples:

PR # State Merged
#157 MERGED 2026-05-06 — BRY-EVID-009
#158 MERGED 2026-05-07 — BRY-DB-001
#160 MERGED 2026-05-07 — BRY-UC-001
#161 MERGED 2026-05-07 — BRY-RENDER-001
#162 MERGED 2026-05-07 — BRY-PLUG-001
#178 MERGED 2026-05-10 — BRY-RPC-006
gh pr list --state open --repo beryl-io/beryl returns 0 open PRs. Same answer if I query by old or new path — GitHub redirects both to the canonical repo.

Diagnosis:

The Desktop UI's session-card → PR binding caches the pre-transfer mpartipilo/beryl repo full_name (or its numeric repo ID from before the transfer, possibly invalidated on the transfer). When it refreshes PR status, the request either:
(a) follows the redirect but the status-cache key still uses the old path, so the refreshed MERGED state never overwrites the cached "Ready for review", or
(b) hits the old repo ID, gets a 404 / silent failure, and falls back to the stale cached state.

Either way: the UI never picks up that the PRs are merged, and there's no per-card or bulk dismiss action exposed to the user.

What didn't fix it:

cmd-R / reload
cmd-Q + relaunch
No "Clear completed" / "Archive all" control found in Settings → Sessions
Workaround (none clean): dismissing each card individually if a ⋯ menu is available, otherwise stuck.

Suggested fix on Anthropic's side:

When the session/PR card binding fails to refresh against its cached repo path, follow GitHub's 301 redirect chain and update the binding's stored repo full_name + ID to the canonical post-transfer value. Or, simpler: when a cached PR status is "Ready for review" but the underlying PR is closed/merged, archive the card automatically (status reconciliation runs at refresh time).

mpartipilo · 4 months ago

The latest version of claude desktop allows me to dismiss the PR banners. Thanks! This issue is fixed.

github-actions[bot] · 3 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.