Desktop app: auto-merge is hardcoded to github.com, and the PR bar requires manual binding, on GitHub Enterprise Cloud with data residency (*.ghe.com)
Status Fixed / completed
Maintainer reply None cached
Workaround ✓ Mentioned in description ↑
Activity 0 comments · opened Sep 22, 2026 · closed Sep 22, 2026
Environment
- Claude desktop app: 2.2553.1 (macOS 26.7)
ghCLI: 2.100.0, authenticated to<tenant>.ghe.com(gh auth statusshows an active account on that host)- Repo remote:
git@<tenant>.ghe.com:<org>/<repo>.git - This is a GitHub Enterprise Cloud with data residency tenant (
*.ghe.com), not github.com and not a self-hosted GHES instance.
Expected
The desktop app should surface PR/CI feedback (checks, review state, mergeable status) and support the same PR automation (auto-merge, auto-fix) for a repo hosted on a *.ghe.com tenant as it does on github.com.
Actual
Tested against two separate open PRs on the same *.ghe.com tenant, to separate what's consistently broken from what's PR-specific.
- The PR bar never auto-binds, even when checking out a branch that has an open PR.
git checkout <branch-with-open-PR>followed by an internal status query still reports no PR bound to the session — binding only happens when the session itself runsgh pr createor pushes to a branch with an open PR, per the app's own tooling. Confirmed on two different PRs (#A and #B in this writeup). An internalbind_prtool exists specifically to cover this gap and names "GitHub Enterprise host" as one of its motivating cases (alongside fork remotes and PRs opened elsewhere) — which suggests the maintainers are aware auto-detection can miss Enterprise-hosted PRs, though I have not directly compared against equivalent github.com behavior (switching to a branch with an open github.com PR) to confirm this is GHE-specific versus a general auto-detection limitation. - Once manually bound via
bind_pr, the underlying data plane works correctly — check counts, review decision and mergeable state were all fetched accurately for both PRs tested. So PR binding and status querying are not blocked by the*.ghe.comhost once bound. - Auto-merge ("Fusion automatique quand prêt") is shown disabled (grayed out) in the CI popover for both PRs tested, consistently — and this is not caused by repo or branch-protection configuration.
GET /repos/<org>/<repo>on the tenant returnsallow_auto_merge: true, andGET /repos/<org>/<repo>/branches/main/protectionshows no merge-queue requirement or setting that would otherwise block auto-merge. GitHub's native auto-merge is fully available on this repo; the app still grays it out. This matches an internal tool description stating the feature is "(github.com only)" — an explicit, unconditional host restriction, not a config-dependent one. This is the one finding that reproduced identically across both PRs regardless of their check state. - The CI-checks popover display is inconsistent between the two PRs — not a confirmed systematic bug. For PR A (multiple checks across several workflows: 2 passing, 6 skipped), the popover showed "CI checks unavailable" despite an internal status query returning complete, accurate check data for that same PR. For PR B (a single skipped check), the popover displayed the check status correctly ("Ignoré · 1"). I could not reproduce the "unavailable" state on the second PR, so this does not look like a blanket ghe.com limitation — it may correlate with check volume/type, or be a transient/caching issue unrelated to the host. Flagging as an open question rather than a confirmed root cause.
- "Auto-fix CI and address comments" tracks the CI-checks display state rather than being an independent host restriction. On PR A (checks showing "unavailable"), this checkbox was grayed out; on PR B (checks displaying correctly), it was enabled/interactive. This suggests it's gated by whether check data successfully rendered in the popover (finding 4), not by the host itself — unlike auto-merge (finding 3), which stayed disabled on both PRs regardless of check-data state.
- "Auto-archive after merge or close" works normally on both PRs — enabled and toggleable in the UI. Not part of any gap.
- Raw
ghCLI works fine against the tenant when host-aware.gh pr view --json ...andgh pr checksboth succeed on<tenant>.ghe.com, correctly resolving the host fromgit remote. gh api <path>without an explicit host silently targets github.com.gh api repos/<org>/<repo>/pulls/<n>/commentsreturns404 Not Found;GH_DEBUG=apiconfirms the request goes tohttps://api.github.com/...instead of the tenant. Passing--hostname <tenant>.ghe.com(orGH_HOST=<tenant>.ghe.com) fixes it. Untested whether any internal comment-fetching path is affected by the same default-host behavior.- No explicit errors in desktop app logs. Searched
~/Library/Logs/Claude/main.logandmain1.logforgh,ghe.com, "GitHub App", PR/CI keywords — no matches. Whatever causes finding 4 is silent; nothing is logged when the CI popover fails to fetch checks. - Worktree cleanup is a separate, likely unrelated gap.
git worktree prune --dry-runreports several orphaned worktrees created under.claude/worktrees/that were never pruned automatically. Noted since it was in scope of this investigation, but not clearly tied to the ghe.com issue.
Root cause hypothesis
Two distinct issues, of differing confidence:
- Auto-merge (finding 3): confirmed hardcoded to github.com. Reproduced identically on two separate PRs; matches the app's own internal tool documentation.
- PR-bar auto-detection (finding 1): confirmed not to trigger from a branch checkout alone on this
*.ghe.comtenant, requiring manualbind_pr. The app's ownbind_prtool description names "GitHub Enterprise host" as a case it exists to cover, alongside fork remotes and PRs opened elsewhere — but I have not directly A/B tested this against a github.com repo, so I can't state with certainty whether github.com auto-binds on a plain branch switch where GHE doesn't, or whether both hosts share the same "only binds aftergh pr create/push from this session" behavior. Worth a maintainer confirming the intended behavior on github.com. - CI-checks display and the auto-fix checkbox (findings 4-5): inconsistent, not confirmed as host-related. They may share a root cause with each other (auto-fix gating on check-data availability), but the check-data availability issue itself needs more repro data (varying check count/workflow structure, retrying the same PR over time) before pinning it on
*.ghe.comspecifically.
Workarounds
- PR tracking: manually bind the PR by URL (via the app's "bind" affordance) instead of relying on auto-detection.
- Auto-merge: not available on any Enterprise host; merge manually.
- CI check status: if the popover shows "unavailable", fall back to
gh pr checks --hostname <tenant>.ghe.com. - Raw API calls: always pass
--hostname <tenant>.ghe.comor setGH_HOST=<tenant>.ghe.com. - Auto-archive-on-close: works normally, no workaround needed.
Links
- Help Center — Code Review host support (github.com / GHES only): https://support.claude.com/en/articles/14233555-set-up-code-review-for-claude-code
- GHES docs (silent on GitHub Enterprise Cloud with data residency): https://code.claude.com/docs/en/github-enterprise-server
- Desktop docs (PR/CI bar requires
gh, no host restriction documented): https://code.claude.com/docs/en/desktop - Related: "Install the GitHub App" shown despite App being installed (closed not planned) — https://github.com/anthropics/claude-code/issues/67192
- Related: PR/CI widgets can't be hidden — https://github.com/anthropics/claude-code/issues/64972
- Related:
ghnot found in PATH on macOS — https://github.com/anthropics/claude-code/issues/57859 - Related: CI counters stuck at zero — https://github.com/anthropics/claude-code/issues/32084
- Related: local
ghinvoked from a remote session — https://github.com/anthropics/claude-code/issues/61111 - Related, unanswered since Nov 2025: GHE Cloud setup — https://github.com/anthropics/claude-code-action/issues/696
ghon ghe.com hosts /GH_TOKENhost-resolution caveat: https://github.com/cli/cli/issues/14389- Equivalent request filed against another vendor's CLI: https://github.com/openai/codex/issues/8818
---
🤖 Generated with Claude Code