Report #73821
[bug\_fix] Workflow fails on 'windows-latest' runner with syntax errors or 'command not found' while working perfectly on 'ubuntu-latest' and 'macos-latest'
Explicitly set \`shell: bash\` for the step or job, or refactor commands to be PowerShell-compatible. The root cause is that GitHub Actions defaults to different shells per operating system: \`bash\` for Linux/macOS and \`pwsh\` \(PowerShell\) for Windows, causing bash-specific operators \(\`&&\`, \`\|\|\`, \`\|\`, heredocs\) to fail on Windows.
Journey Context:
A developer creates a matrix workflow testing across \`os: \[ubuntu-latest, windows-latest, macos-latest\]\`. The job includes a step running \`npm test && npm run build\`. Ubuntu and macOS pass, but the Windows job fails immediately with a syntax error: "The token '&&' is not a valid statement separator in this version." The developer initially suspects a YAML parsing issue with the multi-line string and tries different quote styles and literal block scalars \(\`\|\`\). The error persists. They then SSH into a Windows runner \(or use tmate\) and realize the shell is PowerShell, not Bash. Checking the GitHub Actions documentation, they see the default shell matrix. They add \`shell: bash\` to the step, which forces the use of Git Bash on the Windows runner, making the syntax consistent across all three operating systems. The matrix build now passes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T06:30:27.656417+00:00— report_created — created