Before submitting
Area
apps/server
Steps to reproduce
- Authenticate
gh with a GitHub App installation token (ghs_…), e.g. gh auth login --with-token on a machine where a bot account runs the T3 Code server. gh auth status reports it as logged in, and gh pr list works.
- Run
t3 serve and add a GitHub repository as a project.
- Open the Pull Requests page.
Expected behavior
Pull requests are listed. Everything the listing itself runs (gh pr list --json …, gh repo view --json …) succeeds with this token.
Actual behavior
The page shows Could not load pull requests: Pull request operation list failed: GitHub CLI command failed. Retry fails the same way.
Before listing anything, GitHubPullRequestCli.getViewerLogin runs:
github.execute({ cwd: input.cwd, args: ["api", "user", "--jq", ".login"] })
GitHub doesn't allow installation tokens to call REST GET /user:
$ gh api user --jq .login
{"message":"Resource not accessible by integration","documentation_url":"https://docs.github.com/rest/users/users#get-the-authenticated-user","status":"403"}
gh: Resource not accessible by integration (HTTP 403)
So getViewer fails and the whole pullRequests.list fails with it. The 403 message doesn't appear in the UI or the trace; only "GitHub CLI command failed" does.
GraphQL viewer works with the same token, and returns the login a user token would get from /user:
$ gh api graphql -f 'query={viewer{login}}' --jq .data.viewer.login
<app-slug>[bot]
The login it returns also works in the qualifiers the listing builds (author:<app-slug>[bot], review-requested:…).
Suggested fix: in getViewerLogin, use ["api", "graphql", "-f", "query={viewer{login}}", "--jq", ".data.viewer.login"] instead of ["api", "user", …]. I patched the 0.0.40 build this way and the page loads.
Impact
Minor bug or occasional failure
Only the Pull Requests page is affected, but on that page it fails every time.
Version or commit
v0.0.40. The same getViewerLogin call is still on main (apps/server/src/pullRequest/GitHubPullRequestCli.ts).
Environment
NixOS, t3 serve --mode web, Node 24.19.0, gh 2.100.0, authenticated as a GitHub App installation (ghs_ token)
Logs or stack traces
PullRequestOperationError: Pull request operation list failed: GitHub CLI command failed.
[cause]: PullRequestProviderError: github failed in getViewer: GitHub CLI command failed.
[cause]: GitHubCliCommandError: GitHub CLI failed in execute: GitHub CLI command failed.
[cause]: VcsProcessExitError: VCS process failed in GitHubCli.execute: gh (/path/to/repo) exited with 1 - Process exited with a non-zero status.
Workaround
Patch getViewerLogin to use the GraphQL viewer query shown above, or authenticate gh with a user token instead of an app installation token.
Before submitting
Area
apps/server
Steps to reproduce
ghwith a GitHub App installation token (ghs_…), e.g.gh auth login --with-tokenon a machine where a bot account runs the T3 Code server.gh auth statusreports it as logged in, andgh pr listworks.t3 serveand add a GitHub repository as a project.Expected behavior
Pull requests are listed. Everything the listing itself runs (
gh pr list --json …,gh repo view --json …) succeeds with this token.Actual behavior
The page shows Could not load pull requests: Pull request operation list failed: GitHub CLI command failed. Retry fails the same way.
Before listing anything,
GitHubPullRequestCli.getViewerLoginruns:GitHub doesn't allow installation tokens to call REST
GET /user:$ gh api user --jq .login {"message":"Resource not accessible by integration","documentation_url":"https://docs.github.com/rest/users/users#get-the-authenticated-user","status":"403"} gh: Resource not accessible by integration (HTTP 403)So
getViewerfails and the wholepullRequests.listfails with it. The 403 message doesn't appear in the UI or the trace; only "GitHub CLI command failed" does.GraphQL
viewerworks with the same token, and returns the login a user token would get from/user:The login it returns also works in the qualifiers the listing builds (
author:<app-slug>[bot],review-requested:…).Suggested fix: in
getViewerLogin, use["api", "graphql", "-f", "query={viewer{login}}", "--jq", ".data.viewer.login"]instead of["api", "user", …]. I patched the 0.0.40 build this way and the page loads.Impact
Minor bug or occasional failure
Only the Pull Requests page is affected, but on that page it fails every time.
Version or commit
v0.0.40. The same
getViewerLogincall is still onmain(apps/server/src/pullRequest/GitHubPullRequestCli.ts).Environment
NixOS,
t3 serve --mode web, Node 24.19.0, gh 2.100.0, authenticated as a GitHub App installation (ghs_token)Logs or stack traces
Workaround
Patch
getViewerLoginto use the GraphQLviewerquery shown above, or authenticateghwith a user token instead of an app installation token.