Skip to content

[Bug]: Pull request pane treats SSH aliases as GitHub API hosts #6198

Description

@jdlar1

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/server

Steps to reproduce

  1. Configure a GitHub SSH alias:

    Host github-personal
      HostName github.com
      User git
      IdentityFile ~/.ssh/id_ed25519_personal
  2. Use that alias in a repository remote:

    git@github-personal:OWNER/REPOSITORY.git
    
  3. Open the repository in T3 Code on a branch with an open pull request.

  4. Click the pull-request indicator from the thread view.

  5. Observe the new in-app pull-request pane.

Expected behavior

The pane should use github.com as the GitHub API/browser host while preserving github-personal for Git SSH authentication.

Actual behavior

T3 derives the repository's canonical host directly from the remote and records github-personal as a self-hosted GitHub hostname. The pull-request pane then invokes GitHub CLI against github-personal, so it cannot load the pull request.

The previous behavior opened the pull-request URL externally, so this became visible after the in-app pane was introduced in #4849.

Impact

Major degradation or frequent failure

The pull-request pane is unavailable for every repository using the common SSH-alias pattern for multiple GitHub accounts.

Version or commit

main @ 3517201

Environment

Linux 7.0.0-29-generic x86_64
gh 2.97.0
OpenSSH 10.2p1
Affects the web UI and desktop wrapper

Logs or stack traces

$ ssh -G github-personal 2>/dev/null | awk '$1 == "hostname" { print $2; exit }'
github.com

$ gh repo view github-personal/pingdotgg/t3code --json nameWithOwner --jq '.nameWithOwner'
error connecting to github-personal

$ gh repo view github.com/pingdotgg/t3code --json nameWithOwner --jq '.nameWithOwner'
pingdotgg/t3code

Workaround

Open the pull request manually in the browser. Changing the remote to use github.com also avoids the problem, but can disrupt multi-account SSH key selection.

Implementation

I’d be happy to prepare a focused PR after maintainers confirm the preferred normalization boundary.

Activity

  1. maslinedwin commented on Aug 16, 2026

    @maslinedwin
    Contributor

    Fix is in #7186. SSH aliases like github-personal are resolved to their HostName before the pull-request pane talks to GitHub.

  2. t3dotgg commented on Sep 4, 2026

    @t3dotgg
    Member

    Note

    🤖 GPT-6 Astra (preview) responding on behalf of Theo

    This note is part of an automated cleanup pass.

    Related report #9458 adds a dotted SSH alias on macOS 15.7.4 with T3 Code v0.0.38. Its config uses Host github.com-customalias, HostName github.com and an account-specific IdentityFile. The remote is git@github.com-customalias:organization/repository.git, which produces an invalid HTTPS host. Preserve this case when resolving SSH HostName, and leave the raw Git remote unchanged so push and pull keep the selected key. #7186 currently resolves only undotted aliases, so that candidate does not yet cover this reproduction.

  3. Mnigos commented on Sep 7, 2026

    @Mnigos
    Contributor

    The dotted-alias case from #9458 (Host github.com-customalias → HostName github.com) is what #7186 still misses: its gate skips any alias that contains a dot. I had that handled in #9497 before it was closed as a duplicate, so I can carry it over as a small change on top of the current host resolution, keeping the raw remote untouched so push and pull keep the selected key. Happy to do that unless #7186 is about to pick it up.

  4. juliusmarminge commented on Oct 6, 2026

    @juliusmarminge
    Member

    Note

    Grok responding on behalf of Julius.

    Fixed by #16321, which landed on main today. A dotless SSH host such as github-personal is now treated as an alias for github.com, so the pull request pane reads the PR through the github.com API while git keeps using your alias. Closing; reopen if it still happens on the next nightly. (#14919 stays open for keying aliased remotes by their real HostName in the sidebar.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions