Automatically detect non-interactive environments and fall back to a manual, code-based authentication flow (#4475)

This commit is contained in:
Marat Boshernitsan
2025-07-18 17:22:50 -07:00
committed by GitHub
parent 003609239f
commit 5b7b6fe608
6 changed files with 73 additions and 8 deletions

View File

@@ -37,6 +37,7 @@ import {
logUserPrompt,
AuthType,
getOauthClient,
shouldAttemptBrowserLaunch,
} from '@google/gemini-cli-core';
import { validateAuthMethod } from './config/auth.js';
import { setMaxSizedBoxDebugging } from './ui/components/shared/MaxSizedBox.js';
@@ -184,7 +185,7 @@ export async function main() {
if (
settings.merged.selectedAuthType === AuthType.LOGIN_WITH_GOOGLE &&
config.getNoBrowser()
(config.getNoBrowser() || !shouldAttemptBrowserLaunch())
) {
// Do oauth before app renders to make copying the link possible.
await getOauthClient(settings.merged.selectedAuthType, config);

View File

@@ -11,6 +11,7 @@ import {
Config,
clearCachedCredentialFile,
getErrorMessage,
shouldAttemptBrowserLaunch,
} from '@google/gemini-cli-core';
import { runExitCleanup } from '../../utils/cleanup.js';
@@ -56,7 +57,10 @@ export const useAuthCommand = (
if (authType) {
await clearCachedCredentialFile();
settings.setValue(scope, 'selectedAuthType', authType);
if (authType === AuthType.LOGIN_WITH_GOOGLE && config.getNoBrowser()) {
if (
authType === AuthType.LOGIN_WITH_GOOGLE &&
(config.getNoBrowser() || !shouldAttemptBrowserLaunch())
) {
runExitCleanup();
console.log(
`