From 3ae6aa0f07b0eebba628f0fe2cc3853cee2a45a7 Mon Sep 17 00:00:00 2001 From: Filipe Guerreiro Date: Wed, 16 Sep 2026 16:01:23 +0900 Subject: [PATCH 1/2] feat: sign in with an existing GitHub CLI login Orgs that forbid classic PATs and refuse third-party OAuth app approval leave no working sign-in path, but the GitHub CLI's own OAuth app is often already authorized. Read that token from `gh auth token` at request time so the CLI stays its owner, rotation needs no re-login, and Gitify persists no copy. --- src/main/handlers/github-cli.test.ts | 122 ++++++++ src/main/handlers/github-cli.ts | 122 ++++++++ src/main/handlers/index.ts | 1 + src/main/index.ts | 2 + src/preload/index.ts | 8 + src/renderer/App.tsx | 2 + src/renderer/__helpers__/hook-mocks.ts | 1 + src/renderer/__helpers__/test-utils.tsx | 1 + src/renderer/__helpers__/visual.setup.ts | 1 + src/renderer/__helpers__/vitest.setup.ts | 1 + src/renderer/__mocks__/account-mocks.ts | 12 + src/renderer/hooks/useLogins.ts | 30 ++ src/renderer/routes/AccountScopes.test.tsx | 14 + src/renderer/routes/AccountScopes.tsx | 57 ++-- .../login-dark-classic-chromium-linux.png | Bin 33934 -> 35196 bytes ...github-cli-dark-classic-chromium-linux.png | Bin 0 -> 54764 bytes ...ithub-cli-light-classic-chromium-linux.png | Bin 0 -> 54584 bytes .../login-light-classic-chromium-linux.png | Bin 34318 -> 35628 bytes .../routes/__snapshots__/Login.test.tsx.snap | 45 +++ .../routes/github/LoginWithGitHubCLI.test.tsx | 93 ++++++ .../routes/github/LoginWithGitHubCLI.tsx | 118 ++++++++ .../LoginWithGitHubCLI.test.tsx.snap | 279 ++++++++++++++++++ src/renderer/routes/routes.visual.test.tsx | 6 + src/renderer/stores/useAccountsStore.ts | 4 +- src/renderer/utils/auth/scopes.ts | 11 + src/renderer/utils/auth/types.ts | 2 +- .../utils/forges/github/adapter.test.ts | 33 ++- src/renderer/utils/forges/github/adapter.ts | 62 +++- src/renderer/utils/forges/github/auth.ts | 4 + src/renderer/utils/forges/github/cli.test.ts | 88 ++++++ src/renderer/utils/forges/github/cli.ts | 74 +++++ .../utils/forges/github/octokit.test.ts | 71 +++++ src/renderer/utils/forges/github/octokit.ts | 49 ++- src/renderer/utils/forges/registry.ts | 1 + src/renderer/utils/forges/types.ts | 44 +++ src/renderer/utils/system/comms.ts | 12 +- src/shared/events.ts | 20 ++ 37 files changed, 1357 insertions(+), 33 deletions(-) create mode 100644 src/main/handlers/github-cli.test.ts create mode 100644 src/main/handlers/github-cli.ts create mode 100644 src/renderer/routes/__screenshots__/routes.visual.test.tsx/login-github-cli-dark-classic-chromium-linux.png create mode 100644 src/renderer/routes/__screenshots__/routes.visual.test.tsx/login-github-cli-light-classic-chromium-linux.png create mode 100644 src/renderer/routes/github/LoginWithGitHubCLI.test.tsx create mode 100644 src/renderer/routes/github/LoginWithGitHubCLI.tsx create mode 100644 src/renderer/routes/github/__snapshots__/LoginWithGitHubCLI.test.tsx.snap create mode 100644 src/renderer/utils/forges/github/cli.test.ts create mode 100644 src/renderer/utils/forges/github/cli.ts diff --git a/src/main/handlers/github-cli.test.ts b/src/main/handlers/github-cli.test.ts new file mode 100644 index 000000000..0f7c4bd20 --- /dev/null +++ b/src/main/handlers/github-cli.test.ts @@ -0,0 +1,122 @@ +import { delimiter } from 'node:path'; + +import { readGitHubCliToken } from './github-cli'; + +const execFileMock = vi.fn(); + +vi.mock('node:child_process', () => { + const execFile = (...args: unknown[]) => execFileMock(...args); + + // Node's real `execFile` carries this custom implementation, which is what + // makes `promisify(execFile)` resolve to `{ stdout, stderr }`. + (execFile as unknown as Record)[Symbol.for('nodejs.util.promisify.custom')] = ( + ...args: unknown[] + ) => execFileMock(...args); + + return { execFile }; +}); + +vi.mock('electron', () => ({ ipcMain: { handle: vi.fn() } })); + +describe('main/handlers/github-cli.ts', () => { + const inheritedEnv = { ...process.env }; + + beforeEach(() => { + execFileMock.mockReset(); + execFileMock.mockResolvedValue({ stdout: 'gho_token', stderr: '' }); + }); + + afterEach(() => { + process.env = { ...inheritedEnv }; + }); + + function spawnedEnv(): Record { + const options = execFileMock.mock.calls[0][2]; + return options.env; + } + + it('returns the token the CLI holds for the host', async () => { + execFileMock.mockResolvedValue({ stdout: 'gho_token\n', stderr: '' }); + + await expect(readGitHubCliToken('github.com')).resolves.toEqual({ token: 'gho_token' }); + expect(execFileMock).toHaveBeenCalledWith( + 'gh', + ['auth', 'token', '--hostname', 'github.com'], + expect.anything(), + ); + }); + + it('never leaves an empty PATH element, which would search the working directory', async () => { + delete process.env.PATH; + + await readGitHubCliToken('github.com'); + + expect(spawnedEnv().PATH?.split(delimiter)).not.toContain(''); + }); + + it('ignores ambient tokens so the CLI answers from its own keyring', async () => { + process.env.GH_TOKEN = 'gho_from_shell'; + process.env.GITHUB_TOKEN = 'gho_from_shell'; + process.env.GH_ENTERPRISE_TOKEN = 'gho_from_shell'; + process.env.GITHUB_ENTERPRISE_TOKEN = 'gho_from_shell'; + + await readGitHubCliToken('github.com'); + + const env = spawnedEnv(); + expect(env.GH_TOKEN).toBeUndefined(); + expect(env.GITHUB_TOKEN).toBeUndefined(); + expect(env.GH_ENTERPRISE_TOKEN).toBeUndefined(); + expect(env.GITHUB_ENTERPRISE_TOKEN).toBeUndefined(); + }); + + it('reports a missing CLI', async () => { + execFileMock.mockRejectedValue(Object.assign(new Error('spawn gh ENOENT'), { code: 'ENOENT' })); + + await expect(readGitHubCliToken('github.com')).resolves.toEqual({ error: 'GH_NOT_FOUND' }); + }); + + it('reports a CLI with no token for the host', async () => { + execFileMock.mockRejectedValue( + Object.assign(new Error('exit 1'), { + code: 1, + stderr: 'no oauth token found for github.example.com\n', + }), + ); + + await expect(readGitHubCliToken('github.example.com')).resolves.toEqual({ + error: 'GH_NOT_AUTHENTICATED', + }); + }); + + it('treats empty CLI output as no token', async () => { + execFileMock.mockResolvedValue({ stdout: '\n', stderr: '' }); + + await expect(readGitHubCliToken('github.com')).resolves.toEqual({ + error: 'GH_NOT_AUTHENTICATED', + }); + }); + + it('reports a timed-out CLI separately, since a keychain prompt blocks it', async () => { + execFileMock.mockRejectedValue(Object.assign(new Error('killed'), { killed: true })); + + await expect(readGitHubCliToken('github.com')).resolves.toEqual({ error: 'GH_TIMED_OUT' }); + }); + + it("carries the CLI's own reason for an unclassified failure", async () => { + execFileMock.mockRejectedValue( + Object.assign(new Error('exit 1'), { code: 1, stderr: 'keyring is locked\nmore detail' }), + ); + + await expect(readGitHubCliToken('github.com')).resolves.toEqual({ + error: 'GH_FAILED', + detail: 'keyring is locked', + }); + }); + + it('never spawns the CLI for a hostname it cannot vouch for', async () => { + await expect(readGitHubCliToken('github.com; rm -rf /')).resolves.toEqual({ + error: 'GH_FAILED', + }); + expect(execFileMock).not.toHaveBeenCalled(); + }); +}); diff --git a/src/main/handlers/github-cli.ts b/src/main/handlers/github-cli.ts new file mode 100644 index 000000000..653a43d4c --- /dev/null +++ b/src/main/handlers/github-cli.ts @@ -0,0 +1,122 @@ +import { execFile } from 'node:child_process'; +import { homedir } from 'node:os'; +import { delimiter } from 'node:path'; +import { promisify } from 'node:util'; + +import type { GitHubCliTokenError, IGitHubCliTokenResult } from '../../shared/events'; +import { EVENTS } from '../../shared/events'; +import { logError, toError } from '../../shared/logger'; +import { isWindows } from '../../shared/platform'; + +import { handleMainEvent } from '../events'; + +const execFileAsync = promisify(execFile); + +/** + * A GUI-launched app inherits the session launcher's minimal PATH, which omits + * the package-manager prefixes `gh` is usually installed under. Unix-only: the + * Windows installer puts `gh` on the inherited PATH itself. + */ +const EXTRA_PATH_ENTRIES = isWindows() + ? [] + : [ + '/opt/homebrew/bin', + '/usr/local/bin', + '/home/linuxbrew/.linuxbrew/bin', + `${homedir()}/.local/bin`, + ]; + +const HOSTNAME_PATTERN = /^[a-z0-9][a-z0-9.-]*$/i; + +/** + * `gh auth token` prefers these over the keyring, and the enterprise pair + * applies to every non-github.com host, so a Gitify started from a shell that + * exports one would hand back a token issued for a different host. + */ +const TOKEN_ENV_VARS = [ + 'GH_TOKEN', + 'GITHUB_TOKEN', + 'GH_ENTERPRISE_TOKEN', + 'GITHUB_ENTERPRISE_TOKEN', +]; + +/** + * Ask the locally installed GitHub CLI for the token it holds for `hostname`. + * + * The CLI owns the credential: it is read on every call rather than cached + * here, so a `gh auth login`/`gh auth refresh` that rotates the token is picked + * up without the user re-authenticating in Gitify. + * + * @param hostname - Host to read the token for (e.g. `github.com`). + * @returns The token, or the reason the CLI could not supply one. + */ +export async function readGitHubCliToken(hostname: string): Promise { + if (typeof hostname !== 'string' || !HOSTNAME_PATTERN.test(hostname)) { + return { error: 'GH_FAILED' }; + } + + const env: NodeJS.ProcessEnv = { ...process.env, PATH: buildPath() }; + for (const name of TOKEN_ENV_VARS) { + delete env[name]; + } + + try { + const { stdout } = await execFileAsync('gh', ['auth', 'token', '--hostname', hostname], { + env, + timeout: 10_000, + }); + + const token = stdout.trim(); + + return token ? { token } : { error: 'GH_NOT_AUTHENTICATED' }; + } catch (err) { + const { error, detail } = classifyFailure(err); + + if (error === 'GH_FAILED') { + logError('main:github-cli-token', `Failed to read gh token for ${hostname}`, toError(err)); + } + + return { error, detail }; + } +} + +/** + * An empty PATH element means "the current directory" to `execvp`, so an unset + * PATH must not leave one behind. + */ +function buildPath(): string { + return [process.env.PATH, ...EXTRA_PATH_ENTRIES].filter(Boolean).join(delimiter); +} + +function classifyFailure(err: unknown): { + error: GitHubCliTokenError; + detail?: string; +} { + const { code, killed, stderr } = err as { + code?: string | number; + killed?: boolean; + stderr?: string; + }; + + if (code === 'ENOENT') { + return { error: 'GH_NOT_FOUND' }; + } + + if (killed) { + return { error: 'GH_TIMED_OUT' }; + } + + if (/no oauth token found|not logged in/i.test(stderr ?? '')) { + return { error: 'GH_NOT_AUTHENTICATED' }; + } + + return { error: 'GH_FAILED', detail: stderr?.trim().split('\n')[0] || undefined }; +} + +/** + * Register the IPC handler that resolves GitHub CLI tokens. Spawning is only + * possible from the main process, so the renderer asks for the token per host. + */ +export function registerGitHubCliHandlers(): void { + handleMainEvent(EVENTS.GITHUB_CLI_TOKEN, (_, hostname) => readGitHubCliToken(hostname)); +} diff --git a/src/main/handlers/index.ts b/src/main/handlers/index.ts index 29c36d0e5..7a2353259 100644 --- a/src/main/handlers/index.ts +++ b/src/main/handlers/index.ts @@ -1,4 +1,5 @@ export * from './app'; +export * from './github-cli'; export * from './storage'; export * from './system'; export * from './tray'; diff --git a/src/main/index.ts b/src/main/index.ts index 3d403932c..39017df15 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -5,6 +5,7 @@ import { menubar } from 'electron-menubar'; import { Paths, WindowConfig } from './config'; import { registerAppHandlers, + registerGitHubCliHandlers, registerStorageHandlers, registerSystemHandlers, registerTrayHandlers, @@ -63,6 +64,7 @@ app.whenReady().then(async () => { registerTrayHandlers(mb); registerSystemHandlers(mb); registerStorageHandlers(); + registerGitHubCliHandlers(); registerAppHandlers(mb); registerUpdaterHandlers(appUpdater); }); diff --git a/src/preload/index.ts b/src/preload/index.ts index c0bf146c7..51333a8b7 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -42,6 +42,14 @@ export const api = { */ decryptValue: (value: string) => invokeMainEvent(EVENTS.SAFE_STORAGE_DECRYPT, value), + /** + * Read the token the locally installed GitHub CLI holds for a host. + * + * @param hostname - Host to read the token for (e.g. `github.com`). + * @returns The token, or the reason the CLI could not supply one. + */ + githubCliToken: (hostname: string) => invokeMainEvent(EVENTS.GITHUB_CLI_TOKEN, hostname), + /** * Enable or disable launching the application at system login. * diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 20c48bc4a..1054836a7 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -11,6 +11,7 @@ import { BitbucketLoginWithPersonalAccessTokenRoute } from './routes/bitbucket/L import { FiltersRoute } from './routes/Filters'; import { GiteaLoginWithPersonalAccessTokenRoute } from './routes/gitea/LoginWithPersonalAccessToken'; import { GitHubLoginWithDeviceFlowRoute } from './routes/github/LoginWithDeviceFlow'; +import { GitHubLoginWithCLIRoute } from './routes/github/LoginWithGitHubCLI'; import { GitHubLoginWithOAuthAppRoute } from './routes/github/LoginWithOAuthApp'; import { GitHubLoginWithPersonalAccessTokenRoute } from './routes/github/LoginWithPersonalAccessToken'; import { GitLabLoginWithPersonalAccessTokenRoute } from './routes/gitlab/LoginWithPersonalAccessToken'; @@ -101,6 +102,7 @@ export const App = () => { element={} path="/login/github/device-flow" /> + } path="/login/github/cli" /> } path="/login/github/personal-access-token" diff --git a/src/renderer/__helpers__/hook-mocks.ts b/src/renderer/__helpers__/hook-mocks.ts index 631795783..b2f10de15 100644 --- a/src/renderer/__helpers__/hook-mocks.ts +++ b/src/renderer/__helpers__/hook-mocks.ts @@ -51,6 +51,7 @@ function buildLoginsDefaults(): LoginsState { loginWithDeviceFlowStart: vi.fn(), loginWithDeviceFlowPoll: vi.fn(), loginWithDeviceFlowComplete: vi.fn(), + loginWithCli: vi.fn(), loginWithOAuthApp: vi.fn(), loginWithPersonalAccessToken: vi.fn(), logoutFromAccount: vi.fn(), diff --git a/src/renderer/__helpers__/test-utils.tsx b/src/renderer/__helpers__/test-utils.tsx index 2735311c8..0455dbbb1 100644 --- a/src/renderer/__helpers__/test-utils.tsx +++ b/src/renderer/__helpers__/test-utils.tsx @@ -41,6 +41,7 @@ const LOGIN_KEYS = [ 'loginWithDeviceFlowStart', 'loginWithDeviceFlowPoll', 'loginWithDeviceFlowComplete', + 'loginWithCli', 'loginWithOAuthApp', 'loginWithPersonalAccessToken', 'logoutFromAccount', diff --git a/src/renderer/__helpers__/visual.setup.ts b/src/renderer/__helpers__/visual.setup.ts index 3e05ceb49..67af5be5a 100644 --- a/src/renderer/__helpers__/visual.setup.ts +++ b/src/renderer/__helpers__/visual.setup.ts @@ -86,6 +86,7 @@ function createGitifyBridgeApi(): Window['gitify'] { openExternalLink: vi.fn(), decryptValue: vi.fn().mockResolvedValue({ token: 'decrypted' }), encryptValue: vi.fn().mockResolvedValue('encrypted'), + githubCliToken: vi.fn().mockResolvedValue({ token: 'gh-cli-token' }), setWindowVibrancy: vi.fn().mockResolvedValue(undefined), setNativeTheme: vi.fn().mockResolvedValue(undefined), platform: { diff --git a/src/renderer/__helpers__/vitest.setup.ts b/src/renderer/__helpers__/vitest.setup.ts index b172ce9d5..20b14e639 100644 --- a/src/renderer/__helpers__/vitest.setup.ts +++ b/src/renderer/__helpers__/vitest.setup.ts @@ -84,6 +84,7 @@ function createGitifyBridgeApi(): Window['gitify'] { openExternalLink: vi.fn(), decryptValue: vi.fn().mockResolvedValue({ token: 'decrypted' }), encryptValue: vi.fn().mockResolvedValue('encrypted'), + githubCliToken: vi.fn().mockResolvedValue({ token: 'gh-cli-token' }), setWindowVibrancy: vi.fn().mockResolvedValue(undefined), setNativeTheme: vi.fn().mockResolvedValue(undefined), platform: { diff --git a/src/renderer/__mocks__/account-mocks.ts b/src/renderer/__mocks__/account-mocks.ts index 01d00d629..5c87fd56c 100644 --- a/src/renderer/__mocks__/account-mocks.ts +++ b/src/renderer/__mocks__/account-mocks.ts @@ -25,6 +25,18 @@ export const mockPersonalAccessTokenAccount: Account = { scopes: getRecommendedScopeNames(), }; +export const mockGitHubCliAccount: Account = { + forge: 'github', + platform: 'GitHub Cloud', + method: 'GitHub CLI', + // CLI accounts carry no credential of their own; the CLI is read per request. + token: '' as Token, + hostname: Constants.GITHUB_HOSTNAME, + user: mockGitifyUser, + // The scope set the GitHub CLI's own OAuth app is granted. + scopes: ['gist', 'read:org', 'repo', 'workflow'], +}; + export const mockOAuthAccount: Account = { forge: 'github', platform: 'GitHub Enterprise Server', diff --git a/src/renderer/hooks/useLogins.ts b/src/renderer/hooks/useLogins.ts index 76f510678..4cba250eb 100644 --- a/src/renderer/hooks/useLogins.ts +++ b/src/renderer/hooks/useLogins.ts @@ -24,6 +24,7 @@ interface LoginsState { ) => Promise; loginWithDeviceFlowPoll: (forge: Forge, session: DeviceFlowSession) => Promise; loginWithDeviceFlowComplete: (forge: Forge, token: Token, hostname: Hostname) => Promise; + loginWithCli: (forge: Forge, hostname: Hostname) => Promise; loginWithOAuthApp: (forge: Forge, data: LoginOAuthWebOptions) => Promise; loginWithPersonalAccessToken: (data: LoginPersonalAccessTokenOptions) => Promise; logoutFromAccount: (account: Account) => Promise; @@ -104,6 +105,34 @@ export const useLogins = (): LoginsState => { [accounts, createAccount, removeAccountNotifications], ); + /** + * Login with the token held by a locally installed forge CLI. + * + * The token is resolved here only to fail fast while the login screen is + * still up. Nothing persists it: the CLI is re-read for every API client, so + * the account carries no credential of its own. + */ + const loginWithCli = useCallback( + async (forge: Forge, hostname: Hostname) => { + const { cliAuth } = getAdapter(forge); + if (!cliAuth) { + throw new Error(`CLI login is not supported for forge "${forge}".`); + } + + await cliAuth.resolveToken(hostname); + + const existingAccount = accounts.find( + (a) => a.hostname === hostname && a.method === cliAuth.authMethod, + ); + if (existingAccount) { + await removeAccountNotifications(existingAccount); + } + + await createAccount(cliAuth.authMethod, '' as Token, hostname, forge); + }, + [accounts, createAccount, removeAccountNotifications], + ); + /** * Login with a custom OAuth app on the given forge. */ @@ -171,6 +200,7 @@ export const useLogins = (): LoginsState => { loginWithDeviceFlowStart, loginWithDeviceFlowPoll, loginWithDeviceFlowComplete, + loginWithCli, loginWithOAuthApp, loginWithPersonalAccessToken, logoutFromAccount, diff --git a/src/renderer/routes/AccountScopes.test.tsx b/src/renderer/routes/AccountScopes.test.tsx index e96e13181..9a0677bed 100644 --- a/src/renderer/routes/AccountScopes.test.tsx +++ b/src/renderer/routes/AccountScopes.test.tsx @@ -4,6 +4,7 @@ import userEvent from '@testing-library/user-event'; import { renderWithProviders } from '../__helpers__/test-utils'; import { mockGitHubAppAccount, + mockGitHubCliAccount, mockOAuthAccount, mockPersonalAccessTokenAccount, } from '../__mocks__/account-mocks'; @@ -69,6 +70,19 @@ describe('renderer/routes/AccountScopes.tsx', () => { expect(rows[1]).toHaveTextContent('read:user'); }); + it('explains scopes another tool owns instead of listing rows the user cannot grant', async () => { + mockLocationAccount = mockGitHubCliAccount; + + await act(async () => { + renderWithProviders(); + }); + + expect(screen.getByTestId('account-scopes-managed-elsewhere')).toHaveTextContent( + 'gh auth refresh -s notifications', + ); + expect(screen.queryAllByTestId('account-scopes-required-scope')).toHaveLength(0); + }); + it('should show Detailed Notifications section with repo and public_repo rows', async () => { await act(async () => { renderWithProviders(); diff --git a/src/renderer/routes/AccountScopes.tsx b/src/renderer/routes/AccountScopes.tsx index af965674f..6ff34991b 100644 --- a/src/renderer/routes/AccountScopes.tsx +++ b/src/renderer/routes/AccountScopes.tsx @@ -15,6 +15,7 @@ import { Header } from '../components/primitives/Header'; import type { Account } from '../types'; import { + externallyManagedScopes, getAlternateScopeNames, getRecommendedScopeNames, getRequiredScopeNames, @@ -38,6 +39,8 @@ export const AccountScopesRoute: FC = () => { const publicRepoGranted = scopes.includes(OAUTH_SCOPE.PUBLIC_REPO.name); const hasDetailedNotifications = scopesLoaded && (repoGranted || publicRepoGranted); + const managedElsewhere = externallyManagedScopes(account); + // Scopes that don't belong to any known tier const allKnownNames = new Set([ ...getRequiredScopeNames(), @@ -77,26 +80,42 @@ export const AccountScopesRoute: FC = () => { Required - {Constants.OAUTH_SCOPES.REQUIRED.map(({ name, description }) => { - const granted = scopes.includes(name); - return ( - - - {name} - {description} + {managedElsewhere ? ( + + {managedElsewhere.label} + + {managedElsewhere.detail} Run{' '} + {managedElsewhere.command} to widen them. + + + ) : ( + Constants.OAUTH_SCOPES.REQUIRED.map(({ name, description }) => { + const granted = scopes.includes(name); + return ( + + + {name} + {description} + + - - - ); - })} + ); + }) + )} diff --git a/src/renderer/routes/__screenshots__/routes.visual.test.tsx/login-dark-classic-chromium-linux.png b/src/renderer/routes/__screenshots__/routes.visual.test.tsx/login-dark-classic-chromium-linux.png index 5b8ff3fe06b86b4e829690e3b5ee816a22640555..caea7edd6b70921f93c7f67f9fd6f8f4c01b4e68 100644 GIT binary patch literal 35196 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�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 R-u(stJ&;wFDU>$!{~ri4b;$q# literal 0 HcmV?d00001 diff --git a/src/renderer/routes/__screenshots__/routes.visual.test.tsx/login-github-cli-light-classic-chromium-linux.png b/src/renderer/routes/__screenshots__/routes.visual.test.tsx/login-github-cli-light-classic-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b1f51d31360774eb84aa5d67461d0356069652c2 GIT binary patch literal 54584 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 literal 34318 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 should render itself & its children 1`] = ` + + + + ); +}; diff --git a/src/renderer/routes/github/__snapshots__/LoginWithGitHubCLI.test.tsx.snap b/src/renderer/routes/github/__snapshots__/LoginWithGitHubCLI.test.tsx.snap new file mode 100644 index 000000000..d2586058d --- /dev/null +++ b/src/renderer/routes/github/__snapshots__/LoginWithGitHubCLI.test.tsx.snap @@ -0,0 +1,279 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`renderer/routes/github/LoginWithGitHubCLI.tsx > renders correctly 1`] = ` +
+
+
+
+ + +
+
+ +

+ Login with GitHub CLI +

+
+
+
+
+
+
+
+ + Uses the token your local + + gh + + install already holds, so no token has to be created or pasted. Gitify reads it from the CLI on every refresh, which means + + + gh auth login + + and + + gh auth refresh + + keep working without re-authenticating here. + + + The scopes come from the GitHub CLI and cannot be changed from Gitify. Its + + + repo + + scope covers notification access; run + + + gh auth refresh -s notifications + + to grant that scope explicitly. + +
+ + + + + + + Change only if you are using GitHub Enterprise Server + + +
+
+
+ +
+
+`; diff --git a/src/renderer/routes/routes.visual.test.tsx b/src/renderer/routes/routes.visual.test.tsx index 6c1a54b52..1b5afe38e 100644 --- a/src/renderer/routes/routes.visual.test.tsx +++ b/src/renderer/routes/routes.visual.test.tsx @@ -18,6 +18,7 @@ import { BitbucketLoginWithPersonalAccessTokenRoute } from './bitbucket/LoginWit import { FiltersRoute } from './Filters'; import { GiteaLoginWithPersonalAccessTokenRoute } from './gitea/LoginWithPersonalAccessToken'; import { GitHubLoginWithDeviceFlowRoute } from './github/LoginWithDeviceFlow'; +import { GitHubLoginWithCLIRoute } from './github/LoginWithGitHubCLI'; import { GitHubLoginWithOAuthAppRoute } from './github/LoginWithOAuthApp'; import { GitHubLoginWithPersonalAccessTokenRoute } from './github/LoginWithPersonalAccessToken'; import { GitLabLoginWithPersonalAccessTokenRoute } from './gitlab/LoginWithPersonalAccessToken'; @@ -77,6 +78,11 @@ const ROUTES: RouteCase[] = [ element: , state: { initialEntries: ['/login/github/device-flow'] }, }, + { + name: 'login-github-cli', + element: , + state: { initialEntries: ['/login/github/cli'] }, + }, { name: 'login-github-personal-access-token', element: , diff --git a/src/renderer/stores/useAccountsStore.ts b/src/renderer/stores/useAccountsStore.ts index af3e87f20..936e200c4 100644 --- a/src/renderer/stores/useAccountsStore.ts +++ b/src/renderer/stores/useAccountsStore.ts @@ -115,8 +115,10 @@ const useAccountsStore = create()( // Drop any forge-specific HTTP client state for the removed account. getAccountAdapter(account).onAccountTokenChange?.(); + const removedUUID = getAccountUUID(account); + set((state) => ({ - accounts: state.accounts.filter((a) => a.token !== account.token), + accounts: state.accounts.filter((a) => getAccountUUID(a) !== removedUUID), })); }, diff --git a/src/renderer/utils/auth/scopes.ts b/src/renderer/utils/auth/scopes.ts index 2d7a18c6b..b05947a9d 100644 --- a/src/renderer/utils/auth/scopes.ts +++ b/src/renderer/utils/auth/scopes.ts @@ -1,6 +1,7 @@ import { Constants } from '../../constants'; import type { Account } from '../../types'; +import type { ExternallyManagedScopes } from '../forges/types'; import { getAccountAdapter } from '../forges/registry'; @@ -34,6 +35,16 @@ export function hasAlternateScopes(account: Account): boolean { return getAccountAdapter(account).oauthScopes?.hasAlternate() ?? true; } +/** + * Return how to explain the account's scopes when another tool owns the + * credential, or `undefined` when Gitify can change them itself. + * + * @param account - The account whose scopes to describe. + */ +export function externallyManagedScopes(account: Account): ExternallyManagedScopes | undefined { + return getAccountAdapter(account).oauthScopes?.externallyManaged(); +} + /** * Return the list of required OAuth scope names. * diff --git a/src/renderer/utils/auth/types.ts b/src/renderer/utils/auth/types.ts index 9e7a4f594..60654acc2 100644 --- a/src/renderer/utils/auth/types.ts +++ b/src/renderer/utils/auth/types.ts @@ -1,6 +1,6 @@ import type { AuthCode, ClientID, ClientSecret, Forge, Hostname, Token } from '../../types'; -export type AuthMethod = 'GitHub App' | 'Personal Access Token' | 'OAuth App'; +export type AuthMethod = 'GitHub App' | 'GitHub CLI' | 'Personal Access Token' | 'OAuth App'; export type PlatformType = | 'Bitbucket Cloud' diff --git a/src/renderer/utils/forges/github/adapter.test.ts b/src/renderer/utils/forges/github/adapter.test.ts index 446b9e008..9f8668c99 100644 --- a/src/renderer/utils/forges/github/adapter.test.ts +++ b/src/renderer/utils/forges/github/adapter.test.ts @@ -1,6 +1,6 @@ import { AppsIcon, KeyIcon, PersonIcon } from '@primer/octicons-react'; -import { mockGitHubCloudAccount } from '../../../__mocks__/account-mocks'; +import { mockGitHubCliAccount, mockGitHubCloudAccount } from '../../../__mocks__/account-mocks'; import type { GitifyNotificationUser, Hostname, Link, Token } from '../../../types'; @@ -15,9 +15,9 @@ describe('renderer/utils/forges/github/adapter.ts', () => { expect(githubAdapter.displayName).toBe('GitHub'); }); - it('exposes the device-flow / PAT / OAuth login methods', () => { + it('exposes the device-flow / PAT / CLI / OAuth login methods', () => { const ids = githubAdapter.loginMethods.map((m) => m.testId); - expect(ids).toEqual(['login-github', 'login-pat', 'login-oauth-app']); + expect(ids).toEqual(['login-github', 'login-pat', 'login-github-cli', 'login-oauth-app']); }); it('defaults the PAT hostname to github.com', () => { @@ -275,6 +275,33 @@ describe('renderer/utils/forges/github/adapter.ts', () => { ), ).toBe(true); }); + + it('judges GitHub CLI accounts on notification access, not PAT scope names', () => { + const oauthScopes = githubAdapter.accountOps.oauthScopes!; + const withCliScopes = (scopes: string[]) => ({ ...mockGitHubCliAccount, scopes }); + + // The scope set `gh` actually carries: no notifications, no read:user. + expect(oauthScopes.hasRequired(mockGitHubCliAccount)).toBe(true); + expect(oauthScopes.hasRecommended(mockGitHubCliAccount)).toBe(true); + + expect(oauthScopes.hasRequired(withCliScopes(['notifications']))).toBe(true); + expect(oauthScopes.hasRequired(withCliScopes(['gist', 'public_repo']))).toBe(false); + + expect(oauthScopes.hasRecommended(withCliScopes(['notifications', 'public_repo']))).toBe( + false, + ); + }); + + it('reports CLI scopes as owned by the CLI, and PAT scopes as Gitify-owned', () => { + const oauthScopes = githubAdapter.accountOps.oauthScopes!; + + expect(oauthScopes.externallyManaged(mockGitHubCliAccount)).toEqual({ + label: 'Managed by the GitHub CLI', + detail: 'The repo scope grants notification access.', + command: 'gh auth refresh -s notifications', + }); + expect(oauthScopes.externallyManaged(mockGitHubCloudAccount)).toBeUndefined(); + }); }); describe('followUrl', () => { diff --git a/src/renderer/utils/forges/github/adapter.ts b/src/renderer/utils/forges/github/adapter.ts index deead393c..aa86f5d33 100644 --- a/src/renderer/utils/forges/github/adapter.ts +++ b/src/renderer/utils/forges/github/adapter.ts @@ -1,6 +1,12 @@ -import { AppsIcon, KeyIcon, MarkGithubIcon, PersonIcon } from '@primer/octicons-react'; +import { + AppsIcon, + KeyIcon, + MarkGithubIcon, + PersonIcon, + TerminalIcon, +} from '@primer/octicons-react'; -import { Constants } from '../../../constants'; +import { Constants, OAUTH_SCOPE } from '../../../constants'; import type { Account, Link, RawGitifyNotification } from '../../../types'; import type { AuthMethod } from '../../auth/types'; @@ -15,6 +21,7 @@ import { isValidToken, } from './auth'; import { githubCapabilities } from './capabilities'; +import { forgetGitHubCliToken, resolveGitHubCliToken } from './cli'; import { fetchAuthenticatedUserDetails, ignoreNotificationThreadSubscription, @@ -36,6 +43,12 @@ import { transformNotifications } from './transform'; import { formatGitHubNotificationUser } from './users'; async function fetchAuthenticatedUser(account: Account): Promise { + if (account.method === 'GitHub CLI') { + // Re-read the CLI so a `gh auth refresh` that widened the token's scopes is + // reflected here; a merely rotated token is handled per request. + forgetGitHubCliToken(account.hostname); + } + const response = await fetchAuthenticatedUserDetails(account); const user = response.data; const headers = response.headers as Record; @@ -109,6 +122,13 @@ export const githubAdapter: ForgeAdapter = { route: '/login/github/personal-access-token', authMethod: 'Personal Access Token', }, + { + testId: 'login-github-cli', + icon: TerminalIcon, + label: 'GitHub CLI', + route: '/login/github/cli', + authMethod: 'GitHub CLI', + }, { testId: 'login-oauth-app', icon: PersonIcon, @@ -133,11 +153,19 @@ export const githubAdapter: ForgeAdapter = { getNewOAuthAppUrl: getNewOAuthAppURL, }, + cliAuth: { + authMethod: 'GitHub CLI', + resolveToken: resolveGitHubCliToken, + }, + accountOps: { capabilities: githubCapabilities, formatNotificationUser: formatGitHubNotificationUser, fetchAuthenticatedUser, - onAccountTokenChange: clearOctokitClientCacheForAccount, + onAccountTokenChange: (account) => { + clearOctokitClientCacheForAccount(account); + forgetGitHubCliToken(account.hostname); + }, listNotifications, markThreadAsRead: async (account, threadId) => { await markNotificationThreadAsRead(account, threadId); @@ -157,6 +185,14 @@ export const githubAdapter: ForgeAdapter = { hasRequired: (account) => accountHasScopes(account, 'REQUIRED'), hasRecommended: (account) => accountHasScopes(account, 'RECOMMENDED'), hasAlternate: (account) => accountHasScopes(account, 'ALTERNATE'), + externallyManaged: (account) => + account.method === 'GitHub CLI' + ? { + label: 'Managed by the GitHub CLI', + detail: 'The repo scope grants notification access.', + command: 'gh auth refresh -s notifications', + } + : undefined, }, }, }; @@ -165,13 +201,31 @@ function accountHasScopes( account: Account, group: 'REQUIRED' | 'RECOMMENDED' | 'ALTERNATE', ): boolean { - return Constants.OAUTH_SCOPES[group].every(({ name }) => (account.scopes ?? []).includes(name)); + const scopes = account.scopes ?? []; + + if (account.method === 'GitHub CLI') { + // The GitHub CLI's own OAuth app issues a fixed scope set that Gitify + // cannot widen, and its `repo` scope already grants the notifications API. + // So judge these accounts on notification access and enrichment reach + // rather than on the scope names a PAT would be asked for. + if (group === 'RECOMMENDED') { + return scopes.includes(OAUTH_SCOPE.REPO.name); + } + + return ( + scopes.includes(OAUTH_SCOPE.NOTIFICATIONS.name) || scopes.includes(OAUTH_SCOPE.REPO.name) + ); + } + + return Constants.OAUTH_SCOPES[group].every(({ name }) => scopes.includes(name)); } function githubAuthMethodIcon(method: AuthMethod) { switch (method) { case 'GitHub App': return AppsIcon; + case 'GitHub CLI': + return TerminalIcon; case 'OAuth App': return PersonIcon; default: diff --git a/src/renderer/utils/forges/github/auth.ts b/src/renderer/utils/forges/github/auth.ts index 1f64405cc..99915c750 100644 --- a/src/renderer/utils/forges/github/auth.ts +++ b/src/renderer/utils/forges/github/auth.ts @@ -63,6 +63,7 @@ export function getGitHubAuthBaseUrl(hostname: Hostname): URL { * Return the GitHub developer settings URL appropriate for the account's auth method. * * - GitHub App → application connections page + * - GitHub CLI → authorized applications page * - OAuth App → developer settings page * - Personal Access Token → tokens settings page * @@ -76,6 +77,9 @@ export function getDeveloperSettingsURL(account: Account): Link { case 'GitHub App': settingsURL.pathname = `/settings/connections/applications/${Constants.OAUTH_DEVICE_FLOW_CLIENT_ID}`; break; + case 'GitHub CLI': + settingsURL.pathname = '/settings/applications'; + break; case 'OAuth App': settingsURL.pathname = '/settings/developers'; break; diff --git a/src/renderer/utils/forges/github/cli.test.ts b/src/renderer/utils/forges/github/cli.test.ts new file mode 100644 index 000000000..cd63aa6fa --- /dev/null +++ b/src/renderer/utils/forges/github/cli.test.ts @@ -0,0 +1,88 @@ +import type { Hostname } from '../../../types'; + +import * as comms from '../../system/comms'; +import { forgetGitHubCliToken, resolveGitHubCliToken } from './cli'; + +const GITHUB = 'github.com' as Hostname; +const ENTERPRISE = 'github.example.com' as Hostname; + +describe('renderer/utils/forges/github/cli.ts', () => { + const readToken = vi.spyOn(comms, 'readGitHubCliToken'); + + beforeEach(() => { + forgetGitHubCliToken(GITHUB); + forgetGitHubCliToken(ENTERPRISE); + readToken.mockReset(); + }); + + it('collapses concurrent resolutions onto one CLI read', async () => { + readToken.mockResolvedValue({ token: 'gho_token' }); + + const [first, second] = await Promise.all([ + resolveGitHubCliToken(GITHUB), + resolveGitHubCliToken(GITHUB), + ]); + + expect([first, second]).toEqual(['gho_token', 'gho_token']); + expect(readToken).toHaveBeenCalledTimes(1); + }); + + it('re-reads the CLI once the host is forgotten', async () => { + readToken.mockResolvedValueOnce({ token: 'gho_stale' }); + readToken.mockResolvedValueOnce({ token: 'gho_rotated' }); + + await expect(resolveGitHubCliToken(GITHUB)).resolves.toBe('gho_stale'); + forgetGitHubCliToken(GITHUB); + + await expect(resolveGitHubCliToken(GITHUB)).resolves.toBe('gho_rotated'); + }); + + it('resolves each host against its own CLI entry', async () => { + readToken.mockImplementation(async (hostname) => + hostname === GITHUB ? { token: 'gho_cloud' } : { token: 'gho_enterprise' }, + ); + + await expect(resolveGitHubCliToken(GITHUB)).resolves.toBe('gho_cloud'); + await expect(resolveGitHubCliToken(ENTERPRISE)).resolves.toBe('gho_enterprise'); + }); + + it('does not cache a failed read', async () => { + readToken.mockResolvedValueOnce({ error: 'GH_FAILED' }); + readToken.mockResolvedValueOnce({ token: 'gho_token' }); + + await expect(resolveGitHubCliToken(GITHUB)).rejects.toThrow(); + await expect(resolveGitHubCliToken(GITHUB)).resolves.toBe('gho_token'); + }); + + it('tells the user how to install a CLI it could not find', async () => { + readToken.mockResolvedValue({ error: 'GH_NOT_FOUND' }); + + await expect(resolveGitHubCliToken(GITHUB)).rejects.toThrow( + 'GitHub CLI (gh) was not found. Install it from https://cli.github.com, log in, and try again.', + ); + }); + + it('tells the user how to log the CLI in to the host', async () => { + readToken.mockResolvedValue({ error: 'GH_NOT_AUTHENTICATED' }); + + await expect(resolveGitHubCliToken(ENTERPRISE)).rejects.toThrow( + 'GitHub CLI has no token for github.example.com. Run `gh auth login --hostname github.example.com` and try again.', + ); + }); + + it('names the keychain prompt when the CLI does not respond', async () => { + readToken.mockResolvedValue({ error: 'GH_TIMED_OUT' }); + + await expect(resolveGitHubCliToken(GITHUB)).rejects.toThrow( + 'GitHub CLI did not respond within 10 seconds for github.com. It may be waiting on a keychain prompt.', + ); + }); + + it("passes through the CLI's own reason for an unclassified failure", async () => { + readToken.mockResolvedValue({ error: 'GH_FAILED', detail: 'keyring is locked' }); + + await expect(resolveGitHubCliToken(GITHUB)).rejects.toThrow( + 'GitHub CLI could not provide a token for github.com: keyring is locked', + ); + }); +}); diff --git a/src/renderer/utils/forges/github/cli.ts b/src/renderer/utils/forges/github/cli.ts new file mode 100644 index 000000000..9faa478d7 --- /dev/null +++ b/src/renderer/utils/forges/github/cli.ts @@ -0,0 +1,74 @@ +import type { GitHubCliTokenError } from '../../../../shared/events'; + +import type { Hostname, Token } from '../../../types'; + +import { readGitHubCliToken } from '../../system/comms'; + +/** + * In-flight and resolved CLI reads, per host. + * + * The CLI keychain is the source of truth for `GitHub CLI` accounts — nothing + * here is persisted. Reading it spawns a process and touches the OS keychain, + * so the promise is shared: concurrent requests collapse onto one read, and a + * resolved token is reused until it is forgotten. + */ +const cliTokens = new Map>(); + +/** + * Resolve the GitHub CLI token for `hostname`. + * + * @param hostname - Host to resolve the token for. + * @returns The token the CLI holds for that host. + * @throws If the CLI is missing, not logged in to the host, or failed. + */ +export function resolveGitHubCliToken(hostname: Hostname): Promise { + const inFlight = cliTokens.get(hostname); + if (inFlight) { + return inFlight; + } + + const read = readCliToken(hostname); + cliTokens.set(hostname, read); + + return read.catch((err) => { + cliTokens.delete(hostname); + throw err; + }); +} + +/** + * Drop the token held for `hostname`, so the next resolution re-reads the + * GitHub CLI. + */ +export function forgetGitHubCliToken(hostname: Hostname): void { + cliTokens.delete(hostname); +} + +async function readCliToken(hostname: Hostname): Promise { + const result = await readGitHubCliToken(hostname); + + if (result.error) { + throw new Error(describeFailure(result.error, result.detail, hostname)); + } + + return result.token as Token; +} + +function describeFailure( + error: GitHubCliTokenError, + detail: string | undefined, + hostname: Hostname, +): string { + switch (error) { + case 'GH_NOT_FOUND': + return 'GitHub CLI (gh) was not found. Install it from https://cli.github.com, log in, and try again.'; + case 'GH_NOT_AUTHENTICATED': + return `GitHub CLI has no token for ${hostname}. Run \`gh auth login --hostname ${hostname}\` and try again.`; + case 'GH_TIMED_OUT': + return `GitHub CLI did not respond within 10 seconds for ${hostname}. It may be waiting on a keychain prompt.`; + default: + return detail + ? `GitHub CLI could not provide a token for ${hostname}: ${detail}` + : `GitHub CLI could not provide a token for ${hostname}.`; + } +} diff --git a/src/renderer/utils/forges/github/octokit.test.ts b/src/renderer/utils/forges/github/octokit.test.ts index d8e62b39b..ecc72b334 100644 --- a/src/renderer/utils/forges/github/octokit.test.ts +++ b/src/renderer/utils/forges/github/octokit.test.ts @@ -1,10 +1,14 @@ import { mockGitHubAppAccount, + mockGitHubCliAccount, mockGitHubCloudAccount, mockGitHubEnterpriseServerAccount, } from '../../../__mocks__/account-mocks'; +import type { Token } from '../../../types'; + import * as comms from '../../system/comms'; +import * as cli from './cli'; import { clearOctokitClientCache, createOctokitClient, @@ -135,4 +139,71 @@ describe('renderer/utils/forges/github/octokit.ts', () => { expect(mockDecryptValue).toHaveBeenCalledTimes(2); }); }); + + describe('GitHub CLI accounts', () => { + function stubFetch(statuses: number[]) { + const authorizations: string[] = []; + + const fetchMock = vi.fn( + async (_url: string, options: { headers: Record }) => { + authorizations.push(options.headers.authorization); + const status = statuses.shift() ?? 200; + + return new Response( + status === 200 ? '{"login":"octocat"}' : '{"message":"Bad credentials"}', + { + status, + headers: { 'content-type': 'application/json' }, + }, + ); + }, + ); + + vi.stubGlobal('fetch', fetchMock); + + return { authorizations, fetchMock }; + } + + afterEach(() => { + vi.unstubAllGlobals(); + }); + + it('authenticates each request from the CLI rather than the stored token', async () => { + const resolveSpy = vi + .spyOn(cli, 'resolveGitHubCliToken') + .mockResolvedValue('gho_live' as Token); + const { authorizations } = stubFetch([200]); + + const octokit = await createOctokitClientUncached(mockGitHubCliAccount, 'rest'); + await octokit.request('GET /user'); + + expect(authorizations).toEqual(['token gho_live']); + expect(resolveSpy).toHaveBeenCalledWith(mockGitHubCliAccount.hostname); + expect(mockDecryptValue).not.toHaveBeenCalled(); + }); + + it('retries a rejected request against a re-read CLI credential', async () => { + const tokens = ['gho_stale', 'gho_rotated']; + vi.spyOn(cli, 'resolveGitHubCliToken').mockImplementation( + async () => tokens.shift() as Token, + ); + const { authorizations } = stubFetch([401, 200]); + + const octokit = await createOctokitClientUncached(mockGitHubCliAccount, 'rest'); + const response = await octokit.request('GET /user'); + + expect(response.status).toBe(200); + expect(authorizations).toEqual(['token gho_stale', 'token gho_rotated']); + }); + + it('gives up when the re-read credential is rejected too', async () => { + vi.spyOn(cli, 'resolveGitHubCliToken').mockResolvedValue('gho_stale' as Token); + const { fetchMock } = stubFetch([401, 401]); + + const octokit = await createOctokitClientUncached(mockGitHubCliAccount, 'rest'); + + await expect(octokit.request('GET /user')).rejects.toThrow('Bad credentials'); + expect(fetchMock).toHaveBeenCalledTimes(2); + }); + }); }); diff --git a/src/renderer/utils/forges/github/octokit.ts b/src/renderer/utils/forges/github/octokit.ts index 4ff69c056..3c4788fdf 100644 --- a/src/renderer/utils/forges/github/octokit.ts +++ b/src/renderer/utils/forges/github/octokit.ts @@ -4,11 +4,12 @@ import { restEndpointMethods } from '@octokit/plugin-rest-endpoint-methods'; import { APPLICATION } from '../../../../shared/constants'; -import type { Account } from '../../../types'; +import type { Account, Hostname } from '../../../types'; import type { APIClientType } from './types'; import { getAccountUUID } from '../../auth/utils'; import { decryptValue, getAppVersion } from '../../system/comms'; +import { forgetGitHubCliToken, resolveGitHubCliToken } from './cli'; import { getGitHubAPIBaseUrl } from './utils'; // Create the Octokit type with plugins @@ -75,21 +76,61 @@ export async function createOctokitClientUncached( account: Account, type: APIClientType, ): Promise { - const { token: decryptedToken } = await decryptValue(account.token); + const isCliAccount = account.method === 'GitHub CLI'; const version = await getAppVersion(); const userAgent = `${APPLICATION.NAME}/${version}`; const baseUrl = getGitHubAPIBaseUrl(account.hostname, type).toString().replace(/\/$/, ''); - return new OctokitWithPlugins({ - auth: decryptedToken, + const client = new OctokitWithPlugins({ + auth: isCliAccount ? undefined : (await decryptValue(account.token)).token, baseUrl: baseUrl, userAgent: userAgent, retry: { retries: 1, }, }); + + if (isCliAccount) { + authenticateFromCli(client, account.hostname); + } + + return client; +} + +/** + * Authenticate every request from the GitHub CLI rather than from a token + * baked in at construction, so a token the CLI rotates (`gh auth login`, + * `gh auth refresh`) is picked up on the next request instead of stranding + * this client until the account is refreshed. + */ +function authenticateFromCli(client: OctokitClient, hostname: Hostname): void { + client.hook.wrap('request', async (request, options) => { + const authorize = async () => ({ + ...options, + headers: { + ...options.headers, + authorization: `token ${await resolveGitHubCliToken(hostname)}`, + }, + }); + + try { + return await request(await authorize()); + } catch (err) { + if (!isUnauthorized(err)) { + throw err; + } + + forgetGitHubCliToken(hostname); + + return await request(await authorize()); + } + }); +} + +function isUnauthorized(err: unknown): boolean { + return typeof err === 'object' && err !== null && 'status' in err && err.status === 401; } /** diff --git a/src/renderer/utils/forges/registry.ts b/src/renderer/utils/forges/registry.ts index eee3f7999..d13cb76cb 100644 --- a/src/renderer/utils/forges/registry.ts +++ b/src/renderer/utils/forges/registry.ts @@ -86,6 +86,7 @@ export function getAccountAdapter(account: Account): ForgeAccountAdapter { hasRequired: () => oauthScopes.hasRequired(account), hasRecommended: () => oauthScopes.hasRecommended(account), hasAlternate: () => oauthScopes.hasAlternate(account), + externallyManaged: () => oauthScopes.externallyManaged(account), } : undefined, }; diff --git a/src/renderer/utils/forges/types.ts b/src/renderer/utils/forges/types.ts index 89170ef5e..8bcc26524 100644 --- a/src/renderer/utils/forges/types.ts +++ b/src/renderer/utils/forges/types.ts @@ -179,6 +179,13 @@ export interface ForgeAdapter { * omit this bundle entirely — callers gate the OAuth-app UI on its presence. */ oauthWebApp?: OAuthWebAppSupport; + + /** + * Reuse of a locally installed forge CLI's credential. Forges whose CLI + * Gitify cannot read a token from omit this bundle entirely — callers gate + * the CLI login UI on its presence. + */ + cliAuth?: CliAuthSupport; } /** @@ -253,6 +260,12 @@ export interface ForgeAccountAdapter { hasRecommended(): boolean; /** Whether the account holds the alternate (legacy) scope set. */ hasAlternate(): boolean; + /** + * Set when another tool owns the credential and Gitify cannot widen its + * scopes, so a scopes UI should explain that instead of listing rows the + * user cannot act on. + */ + externallyManaged(): ExternallyManagedScopes | undefined; }; } @@ -282,6 +295,7 @@ export interface ForgeAccountOperations { hasRequired(account: Account): boolean; hasRecommended(account: Account): boolean; hasAlternate(account: Account): boolean; + externallyManaged(account: Account): ExternallyManagedScopes | undefined; }; } @@ -291,6 +305,16 @@ export interface ForgeAccountOperations { */ export type OAuthScopesSupport = NonNullable; +/** How to explain a scope set Gitify cannot change. */ +export interface ExternallyManagedScopes { + /** Who owns the scopes, e.g. `Managed by the GitHub CLI`. */ + label: string; + /** Why the account still works, in one sentence. */ + detail: string; + /** Command that widens the scopes outside Gitify. */ + command: string; +} + /** * Custom-OAuth-app web flow capability bundle. Present only on forges that * support browser-redirect OAuth with user-supplied client credentials @@ -321,3 +345,23 @@ export interface DeviceFlowSupport { /** URL the user visits to revoke Gitify's access on this forge. */ getRevokeAccessUrl(hostname: Hostname): Link; } + +/** + * Local-CLI credential capability bundle. Present only on forges whose + * official CLI stores a token Gitify can reuse (GitHub's `gh` today). + * + * The CLI owns the credential: `resolveToken` is called for every API client + * instead of reading a stored copy, so a token the CLI rotates does not strand + * the account. + */ +export interface CliAuthSupport { + /** Auth method recorded on accounts created from the CLI's credential. */ + authMethod: AuthMethod; + /** + * Read the token the CLI holds for `hostname`. + * + * @throws With a user-facing message when the CLI is absent, is not logged + * in to the host, or failed. + */ + resolveToken(hostname: Hostname): Promise; +} diff --git a/src/renderer/utils/system/comms.ts b/src/renderer/utils/system/comms.ts index 688944218..a613846be 100644 --- a/src/renderer/utils/system/comms.ts +++ b/src/renderer/utils/system/comms.ts @@ -1,4 +1,4 @@ -import type { ISafeStorageDecryptResult } from '../../../shared/events'; +import type { IGitHubCliTokenResult, ISafeStorageDecryptResult } from '../../../shared/events'; import { useSettingsStore } from '../../stores'; @@ -52,6 +52,16 @@ export async function decryptValue(value: string): Promise { + return await window.gitify.githubCliToken(hostname); +} + /** * Quit the application. */ diff --git a/src/shared/events.ts b/src/shared/events.ts index dc74cd571..5e29cdc3c 100644 --- a/src/shared/events.ts +++ b/src/shared/events.ts @@ -23,6 +23,7 @@ export const EVENTS = { SET_NATIVE_THEME: `${P}set-native-theme`, SAFE_STORAGE_ENCRYPT: `${P}safe-storage-encrypt`, SAFE_STORAGE_DECRYPT: `${P}safe-storage-decrypt`, + GITHUB_CLI_TOKEN: `${P}github-cli-token`, NOTIFICATION_SOUND_PATH: `${P}notification-sound-path`, OPEN_EXTERNAL: `${P}open-external`, RESET_APP: `${P}reset-app`, @@ -78,6 +79,21 @@ export interface ISafeStorageDecryptResult { reEncryptedToken?: string; } +/** Why the GitHub CLI could not provide a token. */ +export type GitHubCliTokenError = + | 'GH_NOT_FOUND' + | 'GH_NOT_AUTHENTICATED' + | 'GH_TIMED_OUT' + | 'GH_FAILED'; + +/** + * Result of asking the locally installed GitHub CLI for the token it holds for + * a host. `detail` carries the CLI's own first line of stderr, when it has one. + */ +export type IGitHubCliTokenResult = + | { token: string; error?: never; detail?: never } + | { token?: never; error: GitHubCliTokenError; detail?: string }; + /** Shape of a single event contract: a request payload and a response payload. */ type Contract = { request: unknown; response: unknown }; @@ -128,6 +144,10 @@ export type EventContracts = AssertEventCoverage<{ request: string; response: ISafeStorageDecryptResult; }; + [EVENTS.GITHUB_CLI_TOKEN]: { + request: string; + response: IGitHubCliTokenResult; + }; [EVENTS.NOTIFICATION_SOUND_PATH]: { request: undefined; response: string }; [EVENTS.OPEN_EXTERNAL]: { request: IOpenExternal; response: undefined }; [EVENTS.RESET_APP]: { request: undefined; response: undefined }; From 4941319ac0c906ede9d7c6bdc87ccf2cd33a078a Mon Sep 17 00:00:00 2001 From: Filipe Guerreiro Date: Wed, 16 Sep 2026 16:33:51 +0900 Subject: [PATCH 2/2] fix: reuse whatever token gh resolves, env token included An exported GH_TOKEN can be the only credential gh has, so dropping it from the spawn environment broke sign-in for those users. It also means the token may be any PAT, which keeps the narrower scope tiers reachable. --- src/main/handlers/github-cli.test.ts | 11 ++-------- src/main/handlers/github-cli.ts | 21 +++---------------- .../utils/forges/github/adapter.test.ts | 3 +++ src/renderer/utils/forges/github/adapter.ts | 20 +++++++++++------- src/renderer/utils/forges/github/cli.ts | 4 ---- .../utils/forges/github/octokit.test.ts | 3 +++ src/renderer/utils/forges/types.ts | 4 ---- 7 files changed, 24 insertions(+), 42 deletions(-) diff --git a/src/main/handlers/github-cli.test.ts b/src/main/handlers/github-cli.test.ts index 0f7c4bd20..d1c0b2484 100644 --- a/src/main/handlers/github-cli.test.ts +++ b/src/main/handlers/github-cli.test.ts @@ -54,19 +54,12 @@ describe('main/handlers/github-cli.ts', () => { expect(spawnedEnv().PATH?.split(delimiter)).not.toContain(''); }); - it('ignores ambient tokens so the CLI answers from its own keyring', async () => { + it("passes an ambient token through, since it can be the CLI's only credential", async () => { process.env.GH_TOKEN = 'gho_from_shell'; - process.env.GITHUB_TOKEN = 'gho_from_shell'; - process.env.GH_ENTERPRISE_TOKEN = 'gho_from_shell'; - process.env.GITHUB_ENTERPRISE_TOKEN = 'gho_from_shell'; await readGitHubCliToken('github.com'); - const env = spawnedEnv(); - expect(env.GH_TOKEN).toBeUndefined(); - expect(env.GITHUB_TOKEN).toBeUndefined(); - expect(env.GH_ENTERPRISE_TOKEN).toBeUndefined(); - expect(env.GITHUB_ENTERPRISE_TOKEN).toBeUndefined(); + expect(spawnedEnv().GH_TOKEN).toBe('gho_from_shell'); }); it('reports a missing CLI', async () => { diff --git a/src/main/handlers/github-cli.ts b/src/main/handlers/github-cli.ts index 653a43d4c..7498d6b80 100644 --- a/src/main/handlers/github-cli.ts +++ b/src/main/handlers/github-cli.ts @@ -28,24 +28,12 @@ const EXTRA_PATH_ENTRIES = isWindows() const HOSTNAME_PATTERN = /^[a-z0-9][a-z0-9.-]*$/i; -/** - * `gh auth token` prefers these over the keyring, and the enterprise pair - * applies to every non-github.com host, so a Gitify started from a shell that - * exports one would hand back a token issued for a different host. - */ -const TOKEN_ENV_VARS = [ - 'GH_TOKEN', - 'GITHUB_TOKEN', - 'GH_ENTERPRISE_TOKEN', - 'GITHUB_ENTERPRISE_TOKEN', -]; - /** * Ask the locally installed GitHub CLI for the token it holds for `hostname`. * - * The CLI owns the credential: it is read on every call rather than cached - * here, so a `gh auth login`/`gh auth refresh` that rotates the token is picked - * up without the user re-authenticating in Gitify. + * Whatever the CLI resolves is what Gitify uses, including a token it takes + * from `GH_TOKEN`/`GH_ENTERPRISE_TOKEN`: for some users that environment token + * is the only credential `gh` has. * * @param hostname - Host to read the token for (e.g. `github.com`). * @returns The token, or the reason the CLI could not supply one. @@ -56,9 +44,6 @@ export async function readGitHubCliToken(hostname: string): Promise { expect(oauthScopes.hasRequired(withCliScopes(['notifications']))).toBe(true); expect(oauthScopes.hasRequired(withCliScopes(['gist', 'public_repo']))).toBe(false); + // `gh auth token` can return an exported GH_TOKEN, which may be any PAT. expect(oauthScopes.hasRecommended(withCliScopes(['notifications', 'public_repo']))).toBe( false, ); + expect(oauthScopes.hasAlternate(withCliScopes(['notifications', 'public_repo']))).toBe(true); + expect(oauthScopes.hasAlternate(withCliScopes(['notifications']))).toBe(false); }); it('reports CLI scopes as owned by the CLI, and PAT scopes as Gitify-owned', () => { diff --git a/src/renderer/utils/forges/github/adapter.ts b/src/renderer/utils/forges/github/adapter.ts index aa86f5d33..dc7231c74 100644 --- a/src/renderer/utils/forges/github/adapter.ts +++ b/src/renderer/utils/forges/github/adapter.ts @@ -204,17 +204,23 @@ function accountHasScopes( const scopes = account.scopes ?? []; if (account.method === 'GitHub CLI') { - // The GitHub CLI's own OAuth app issues a fixed scope set that Gitify - // cannot widen, and its `repo` scope already grants the notifications API. - // So judge these accounts on notification access and enrichment reach - // rather than on the scope names a PAT would be asked for. + // `gh` issues a fixed scope set Gitify cannot widen, and its `repo` scope + // already grants the notifications API, so judge these accounts on + // notification access rather than the scope names a PAT would be asked + // for. `gh auth token` can also return a `GH_TOKEN` the user exported, + // which may be any PAT, so the narrower tiers stay meaningful. + const canReadNotifications = + scopes.includes(OAUTH_SCOPE.NOTIFICATIONS.name) || scopes.includes(OAUTH_SCOPE.REPO.name); + if (group === 'RECOMMENDED') { return scopes.includes(OAUTH_SCOPE.REPO.name); } - return ( - scopes.includes(OAUTH_SCOPE.NOTIFICATIONS.name) || scopes.includes(OAUTH_SCOPE.REPO.name) - ); + if (group === 'ALTERNATE') { + return canReadNotifications && scopes.includes(OAUTH_SCOPE.PUBLIC_REPO.name); + } + + return canReadNotifications; } return Constants.OAUTH_SCOPES[group].every(({ name }) => scopes.includes(name)); diff --git a/src/renderer/utils/forges/github/cli.ts b/src/renderer/utils/forges/github/cli.ts index 9faa478d7..e80783fd0 100644 --- a/src/renderer/utils/forges/github/cli.ts +++ b/src/renderer/utils/forges/github/cli.ts @@ -36,10 +36,6 @@ export function resolveGitHubCliToken(hostname: Hostname): Promise { }); } -/** - * Drop the token held for `hostname`, so the next resolution re-reads the - * GitHub CLI. - */ export function forgetGitHubCliToken(hostname: Hostname): void { cliTokens.delete(hostname); } diff --git a/src/renderer/utils/forges/github/octokit.test.ts b/src/renderer/utils/forges/github/octokit.test.ts index ecc72b334..51a6111f4 100644 --- a/src/renderer/utils/forges/github/octokit.test.ts +++ b/src/renderer/utils/forges/github/octokit.test.ts @@ -187,6 +187,7 @@ describe('renderer/utils/forges/github/octokit.ts', () => { vi.spyOn(cli, 'resolveGitHubCliToken').mockImplementation( async () => tokens.shift() as Token, ); + const forgetSpy = vi.spyOn(cli, 'forgetGitHubCliToken'); const { authorizations } = stubFetch([401, 200]); const octokit = await createOctokitClientUncached(mockGitHubCliAccount, 'rest'); @@ -194,6 +195,8 @@ describe('renderer/utils/forges/github/octokit.ts', () => { expect(response.status).toBe(200); expect(authorizations).toEqual(['token gho_stale', 'token gho_rotated']); + // Without this the memo would keep serving the stale token. + expect(forgetSpy).toHaveBeenCalledWith(mockGitHubCliAccount.hostname); }); it('gives up when the re-read credential is rejected too', async () => { diff --git a/src/renderer/utils/forges/types.ts b/src/renderer/utils/forges/types.ts index 8bcc26524..3aa2f0274 100644 --- a/src/renderer/utils/forges/types.ts +++ b/src/renderer/utils/forges/types.ts @@ -349,10 +349,6 @@ export interface DeviceFlowSupport { /** * Local-CLI credential capability bundle. Present only on forges whose * official CLI stores a token Gitify can reuse (GitHub's `gh` today). - * - * The CLI owns the credential: `resolveToken` is called for every API client - * instead of reading a stored copy, so a token the CLI rotates does not strand - * the account. */ export interface CliAuthSupport { /** Auth method recorded on accounts created from the CLI's credential. */