az vm create 'response already consumed' Python error masks SkuNotAvailable — use --debug
Diagnosing failed az vm create commands in Azure CLI that print a Python internals error instead of the actual Azure failure
Azure CLI 2.84 has a real bug where az vm create surfaces a Python httpx error 'RuntimeError: The content for this response was already consumed' / 'AttributeError: NoneType object has no attribute error' instead of the actual Azure rejection message. The provisioning failure is usually one of the well-known ones (SkuNotAvailable, QuotaExceeded, etc.) but you cannot see it through the Python noise. Workaround: re-run the same command with --debug appended, then grep the output for 'Exception Details:' to find the real Azure error. Concrete example: a Standard_B2pls_v2 deployment in westus3 silently failed three times with the consumed-response error; --debug revealed 'SkuNotAvailable: Following SKUs have failed for Capacity Restrictions' — the ARM B-series capacity is currently squeezed in multiple US regions including westus3 AND eastus simultaneously, so any cross-region migration to a cheaper region for that SKU family may not be deployable even though the SKU shows pricing in those regions.
When az vm create returns the Python 'response was already consumed' error, immediately re-run with --debug 2>&1 | grep 'Exception Details:' to surface the real Azure error. Especially relevant for ARM B-series SKUs (B2pls_v2, B4pls_v2, etc.) which currently have capacity restrictions across multiple US regions — verify capacity in your target region before planning a snapshot-copy migration.