fix(core): whitelist TERM and COLORTERM in environment sanitization

Terminal editors (vim, emacs) and interactive commands (top) fail when
these variables are redacted. They are safe to pass through as they
only describe terminal capabilities.

Fixes #20444
This commit is contained in:
Arnav Raj
2026-02-27 05:27:19 +05:30
parent f700c923d9
commit 3ebc7d7c1a
2 changed files with 26 additions and 0 deletions

View File

@@ -32,6 +32,28 @@ describe('sanitizeEnvironment', () => {
expect(sanitized).toEqual(env);
});
it('should allow TERM and COLORTERM environment variables', () => {
const env = {
TERM: 'xterm-256color',
COLORTERM: 'truecolor',
};
const sanitized = sanitizeEnvironment(env, EMPTY_OPTIONS);
expect(sanitized).toEqual(env);
});
it('should preserve TERM and COLORTERM even in strict sanitization mode', () => {
const env = {
GITHUB_SHA: 'abc123',
TERM: 'xterm-256color',
COLORTERM: 'truecolor',
SOME_OTHER_VAR: 'value',
};
const sanitized = sanitizeEnvironment(env, EMPTY_OPTIONS);
expect(sanitized['TERM']).toBe('xterm-256color');
expect(sanitized['COLORTERM']).toBe('truecolor');
expect(sanitized['SOME_OTHER_VAR']).toBeUndefined();
});
it('should allow variables prefixed with GEMINI_CLI_', () => {
const env = {
GEMINI_CLI_FOO: 'bar',

View File

@@ -71,6 +71,10 @@ export const ALWAYS_ALLOWED_ENVIRONMENT_VARIABLES: ReadonlySet<string> =
'TMPDIR',
'USER',
'LOGNAME',
// Terminal capability variables (needed by editors like vim/emacs and
// interactive commands like top)
'TERM',
'COLORTERM',
// GitHub Action-related variables
'ADDITIONAL_CONTEXT',
'AVAILABLE_LABELS',