From 70cffae0cecfdd0b82ceafe9167169a8944e0e2c Mon Sep 17 00:00:00 2001 From: "Jiaxiao (mossaka) Zhou" Date: Thu, 19 Feb 2026 21:14:19 +0000 Subject: [PATCH] feat: set NO_COLOR=1 in agent container environment Disables ANSI color escape codes from CLI tools (Rich, Chalk, etc.) inside the container. Tools like Rich inject escape codes that break test assertions expecting plain text output (e.g. typer CLI tests). NO_COLOR is a standard convention (https://no-color.org/) supported by many libraries. Adding it to the base environment ensures it is always set before --env-all expansion. Co-Authored-By: Claude Sonnet 4.6 --- src/docker-manager.test.ts | 8 ++++++++ src/docker-manager.ts | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/src/docker-manager.test.ts b/src/docker-manager.test.ts index fad43378..bda14391 100644 --- a/src/docker-manager.test.ts +++ b/src/docker-manager.test.ts @@ -494,6 +494,14 @@ describe('docker-manager', () => { expect(env.SQUID_PROXY_PORT).toBe('3128'); }); + it('should set NO_COLOR=1 to disable ANSI color output from CLI tools', () => { + const result = generateDockerCompose(mockConfig, mockNetworkConfig); + const agent = result.services.agent; + const env = agent.environment as Record; + + expect(env.NO_COLOR).toBe('1'); + }); + it('should mount required volumes in agent container (default behavior)', () => { const result = generateDockerCompose(mockConfig, mockNetworkConfig); const agent = result.services.agent; diff --git a/src/docker-manager.ts b/src/docker-manager.ts index 299b4128..3773326d 100644 --- a/src/docker-manager.ts +++ b/src/docker-manager.ts @@ -347,6 +347,10 @@ export function generateDockerCompose( SQUID_PROXY_PORT: SQUID_PORT.toString(), HOME: homeDir, PATH: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', + // Disable ANSI color output from CLI tools (Rich, Chalk, etc.) inside the container. + // Tools like Rich inject ANSI escape codes that break test assertions expecting plain text. + // NO_COLOR is a standard convention (https://no-color.org/) supported by many libraries. + NO_COLOR: '1', // Configure one-shot-token library with sensitive tokens to protect // These tokens are cached on first access and unset from /proc/self/environ AWF_ONE_SHOT_TOKENS: 'COPILOT_GITHUB_TOKEN,GITHUB_TOKEN,GH_TOKEN,GITHUB_API_TOKEN,GITHUB_PAT,GH_ACCESS_TOKEN,OPENAI_API_KEY,OPENAI_KEY,ANTHROPIC_API_KEY,CLAUDE_API_KEY,CODEX_API_KEY',