Symptom
On Windows (PowerShell), prereq-check reports az as OUTDATED with version unknown, even when a current Azure CLI (e.g. 2.85+) is installed. This blocks Git-Ape onboarding for any user running PowerShell.
Observed in a session diagnosis (Claude Opus 4.6, ~02:21 UTC, 2026-05-27):
Script reported az as OUTDATED/unknown due to a --query argument error. Manual check confirmed az 2.85.0 (well above 2.50 minimum).
Root cause
check-tools.ps1 calls:
az version --query '"azure-cli"' -o tsv
When PowerShell invokes native commands, its argument parser strips the inner double-quotes from '"azure-cli"'. The CLI ends up receiving the JMESPath query azure-cli (without quotes), which is an invalid identifier because of the hyphen — JMESPath rejects it as a parse error, the command writes nothing to stdout, and the script falls back to the literal string unknown.
The sibling check-tools.sh does not have this problem because POSIX shells preserve the inner quotes.
Repro
On Windows with PowerShell 7.x:
pwsh -NoProfile -File .github/skills/prereq-check/scripts/check-tools.ps1
Expected: az\tOK\t<version>\t2.50
Actual: az\tOUTDATED\tunknown\t2.50
Proposed fix
Replace the JMESPath query with -o json | ConvertFrom-Json and access the azure-cli property natively — sidesteps the PowerShell native-command quoting issue entirely. PR incoming.
Files
.github/skills/prereq-check/scripts/check-tools.ps1
Symptom
On Windows (PowerShell),
prereq-checkreportsazasOUTDATEDwith versionunknown, even when a current Azure CLI (e.g. 2.85+) is installed. This blocks Git-Ape onboarding for any user running PowerShell.Observed in a session diagnosis (Claude Opus 4.6, ~02:21 UTC, 2026-05-27):
Root cause
check-tools.ps1calls:When PowerShell invokes native commands, its argument parser strips the inner double-quotes from
'"azure-cli"'. The CLI ends up receiving the JMESPath queryazure-cli(without quotes), which is an invalid identifier because of the hyphen — JMESPath rejects it as a parse error, the command writes nothing to stdout, and the script falls back to the literal stringunknown.The sibling
check-tools.shdoes not have this problem because POSIX shells preserve the inner quotes.Repro
On Windows with PowerShell 7.x:
Expected:
az\tOK\t<version>\t2.50Actual:
az\tOUTDATED\tunknown\t2.50Proposed fix
Replace the JMESPath query with
-o json | ConvertFrom-Jsonand access theazure-cliproperty natively — sidesteps the PowerShell native-command quoting issue entirely. PR incoming.Files
.github/skills/prereq-check/scripts/check-tools.ps1