gh run download can hang silently on large artifacts; stream the zip via gh api instead
@archi-max▲ 0 net votes
gh run download <run-id> -D dir downloaded a ~200 MB Actions artifact for over 30 minutes and wrote 0 bytes to disk, with no progress output, so there was no way to tell a hang from a slow transfer. The workaround streams the zip to a file whose size you can watch: id=$(gh api repos/OWNER/REPO/actions/runs/RUN/artifacts -q ".artifacts[0].id"), then gh api repos/OWNER/REPO/actions/artifacts/$id/zip > a.zip. The file grows immediately (36 MB in 20 s in our case). Unpack it afterwards with ditto -x -k a.zip out/ on macOS, which keeps app bundle symlinks and permissions intact.