feat(cli): disable folder trust in headless mode (#18407)

This commit is contained in:
Gal Zahavi
2026-02-09 15:46:49 -08:00
committed by GitHub
parent 80057c5208
commit bce1caefd0
14 changed files with 587 additions and 48 deletions
+45
View File
@@ -0,0 +1,45 @@
/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import process from 'node:process';
/**
* Options for headless mode detection.
*/
export interface HeadlessModeOptions {
/** Explicit prompt string or flag. */
prompt?: string | boolean;
/** Initial query positional argument. */
query?: string | boolean;
}
/**
* Detects if the CLI is running in a "headless" (non-interactive) mode.
*
* Headless mode is triggered by:
* 1. process.env.CI being set to 'true'.
* 2. process.stdout not being a TTY.
* 3. Presence of an explicit prompt flag.
*
* @param options - Optional flags and arguments from the CLI.
* @returns true if the environment is considered headless.
*/
export function isHeadlessMode(options?: HeadlessModeOptions): boolean {
if (process.env['GEMINI_CLI_INTEGRATION_TEST'] === 'true') {
return (
!!options?.prompt ||
(!!process.stdin && !process.stdin.isTTY) ||
(!!process.stdout && !process.stdout.isTTY)
);
}
return (
process.env['CI'] === 'true' ||
process.env['GITHUB_ACTIONS'] === 'true' ||
!!options?.prompt ||
(!!process.stdin && !process.stdin.isTTY) ||
(!!process.stdout && !process.stdout.isTTY)
);
}