/ utils / shell / shellToolUtils.ts
shellToolUtils.ts
 1  import { BASH_TOOL_NAME } from '../../tools/BashTool/toolName.js'
 2  import { POWERSHELL_TOOL_NAME } from '../../tools/PowerShellTool/toolName.js'
 3  import { isEnvDefinedFalsy, isEnvTruthy } from '../envUtils.js'
 4  import { getPlatform } from '../platform.js'
 5  
 6  export const SHELL_TOOL_NAMES: string[] = [BASH_TOOL_NAME, POWERSHELL_TOOL_NAME]
 7  
 8  /**
 9   * Runtime gate for PowerShellTool. Windows-only (the permission engine uses
10   * Win32-specific path normalizations). Ant defaults on (opt-out via env=0);
11   * external defaults off (opt-in via env=1).
12   *
13   * Used by tools.ts (tool-list visibility), processBashCommand (! routing),
14   * and promptShellExecution (skill frontmatter routing) so the gate is
15   * consistent across all paths that invoke PowerShellTool.call().
16   */
17  export function isPowerShellToolEnabled(): boolean {
18    if (getPlatform() !== 'windows') return false
19    return process.env.USER_TYPE === 'ant'
20      ? !isEnvDefinedFalsy(process.env.CLAUDE_CODE_USE_POWERSHELL_TOOL)
21      : isEnvTruthy(process.env.CLAUDE_CODE_USE_POWERSHELL_TOOL)
22  }