You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
gh stack submit fails when remote uses a custom SSH host alias #45
gh stack submit exits with an error when the git remote URL uses a custom SSH host alias (e.g. github.com-work) instead of the literal github.com hostname. There is no flag to override the repository, so submit is unusable in this configuration.
Steps to reproduce
Configure ~/.ssh/config with a host alias (common for multi-account setups):
Host github.com-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
Clone using the alias:
git clone git@github.com-work:org/repo.git
cd repo
✗ failed to create GitHub client: determining repository: unable to determine current
repository, none of the git remotes configured for this repository point to a known
GitHub host
The --remote origin flag and GH_HOST=github.com env var do not help — the error
is identical with both.
Expected result
gh stack submit pushes the branches and opens draft PRs, the same as it would with a git@github.com:org/repo.git remote.
What I tried
gh stack submit --remote origin — same error
GH_HOST=github.com gh stack submit — same error
GH_REPO=org/repo gh stack submit — gets past host detection, but then pushes to git@github.com:org/repo.git instead of the configured alias, so the push fails
with a key-agent rejection
Workaround
Push branches manually and create PRs one at a time:
I opened an upstream fix in cli/go-gh#274. The root cause is in repository.Current: it translates SSH alias URLs, but continues filtering with cached repository metadata from before translation. The PR refreshes that metadata while preserving fetch/push precedence and includes a regression test for the github.com-work case.
This will still need to merge and then be consumed by gh-stack before the issue is resolved.
Hit this today with the same multi-account setup (Host github.com-<org> → HostName github.com in ~/.ssh/config).
One data point that may help scope the fix: the core gh CLI resolves the alias fine — gh repo view and gh pr list correctly identify the repository with only the aliased remote configured. It's only the extension that fails with unable to determine current repository, none of the git remotes configured for this repository point to a known GitHub host, so it looks like the alias translation that gh does via ssh -G/~/.ssh/config isn't wired up in the extension's remote resolution.
Workaround we're using: add a second HTTPS remote (git remote add ghstack https://github.com/org/repo.git) and pass --remote ghstack to submit/push/sync/rebase. Two gaps remain with that workaround:
checkout <stack-number>, trunk, and modify accept no --remote flag, and with two remotes and no remote.pushDefault they fail non-interactively.
Setting remote.pushDefault to the HTTPS remote fixes those but reroutes plain git push away from the SSH remote, which defeats the per-repo identity pinning that motivates the alias setup in the first place.
Translating aliases the same way the core CLI does would make the extension work out of the box for multi-account users.
Translating aliases the same way the core CLI does would make the extension work out of the box for multi-account users.
I think that's the wrong way. It's just putting again a patch over the shortcoming of go-gh and wouldn't solve it for other consumers hence my proposal cli/go-gh#274.
Workaround: choose the SSH key by directory, not by host alias
gh-stack reads the host from the remote URL. A remote like git@work:org/repo doesn't point to a known GitHub host, so it fails. Fix: point remotes at plain github.com and let git choose the SSH key per directory with core.sshCommand.
1. Set the key for each identity (~/.gitconfig; the work include goes last so it wins):
The gh API account is separate from the SSH key. If you're logged in with more than one account, run gh auth switch before submitting, or set GH_TOKEN per directory.
Activity
benekuehn commentedon Jul 30, 2026
I opened an upstream fix in cli/go-gh#274. The root cause is in
repository.Current: it translates SSH alias URLs, but continues filtering with cached repository metadata from before translation. The PR refreshes that metadata while preserving fetch/push precedence and includes a regression test for thegithub.com-workcase.This will still need to merge and then be consumed by gh-stack before the issue is resolved.
RishabJaiswal commentedon Aug 3, 2026
Facing the same.
It quite a common usecase when a user has multiple github account
albinofreitasrunflow commentedon Aug 6, 2026
Hit this today with the same multi-account setup (
Host github.com-<org>→HostName github.comin~/.ssh/config).One data point that may help scope the fix: the core
ghCLI resolves the alias fine —gh repo viewandgh pr listcorrectly identify the repository with only the aliased remote configured. It's only the extension that fails withunable to determine current repository, none of the git remotes configured for this repository point to a known GitHub host, so it looks like the alias translation thatghdoes viassh -G/~/.ssh/configisn't wired up in the extension's remote resolution.Workaround we're using: add a second HTTPS remote (
git remote add ghstack https://github.com/org/repo.git) and pass--remote ghstacktosubmit/push/sync/rebase. Two gaps remain with that workaround:checkout <stack-number>,trunk, andmodifyaccept no--remoteflag, and with two remotes and noremote.pushDefaultthey fail non-interactively.remote.pushDefaultto the HTTPS remote fixes those but reroutes plaingit pushaway from the SSH remote, which defeats the per-repo identity pinning that motivates the alias setup in the first place.Translating aliases the same way the core CLI does would make the extension work out of the box for multi-account users.
benekuehn commentedon Aug 6, 2026
Thanks @albinofreitasrunflow.
I think that's the wrong way. It's just putting again a patch over the shortcoming of go-gh and wouldn't solve it for other consumers hence my proposal cli/go-gh#274.
metalelf0 commentedon Sep 24, 2026
Workaround: choose the SSH key by directory, not by host alias
gh-stack reads the host from the remote URL. A remote like
git@work:org/repodoesn't point to a known GitHub host, so it fails. Fix: point remotes at plaingithub.comand let git choose the SSH key per directory withcore.sshCommand.1. Set the key for each identity (
~/.gitconfig; the work include goes last so it wins):~/.gitconfigs/personal:~/.gitconfigs/work:IdentitiesOnly=yesstops ssh from offering the other account's key first.2. Remove
insteadOfrules that rewritegithub.comback to the alias. Find them withgit config --global --get-regexp '^url\.'. For example:3. Update remotes:
4. Verify:
The gh API account is separate from the SSH key. If you're logged in with more than one account, run
gh auth switchbefore submitting, or setGH_TOKENper directory.fix: refresh repository identity after SSH translation
fix: refresh repository identity after SSH translation