Skip to content

Windows self-hosted runners

Windows self-hosted runners for GitHub Actions are available since v2.4.0.

RunsOn Windows runners are ~10x cheaper than the official GitHub Actions Windows runners (for instance when using the m7i family).

You can opt into a specific image by setting the image label in your workflow.

ImageDescription
windows22-full-x64Windows2022 x64 image mostly compatible with official Windows2022 GitHub runner image
windows25-full-x64Windows2025 x64 image mostly compatible with official Windows2025 GitHub runner image
windows22-base-x64Base Windows2022 x64 image, boots faster but has no preinstalled software
windows25-base-x64Base Windows2025 x64 image, boots faster but has no preinstalled software

To use them, you need to reference the image you want to use and an instance family that supports Windows:

jobs:
build:
runs-on: runs-on=${{ github.run_id }}/image=windows22-full-x64/family=m7i
name: Windows
on:
workflow_dispatch:
jobs:
default:
runs-on: runs-on=${{ github.run_id }}/image=windows22-full-x64/family=m7i
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Check current dir and env variables
run: |
dir .
echo $env:USERNAME
echo $env:RUNS_ON_RUNNER_NAME
- name: Logs
run: |
Get-Content -Path "C:\runs-on\output.log"
- name: Users
run: |
Get-LocalUser | Format-Table -AutoSize Name,Enabled,PasswordLastSet

On Windows runners, the output of the RunsOn agent is stored in the C:\runs-on\output.log file.

Those logs are also shipped to the CloudWatch log group for EC2 instances.

  • Windows runners are quite slow to boot (~1min currently for base images, ~2-3min for full images). Using warm pools can help reduce this to under 20-30 seconds.
  • Windows images are lacking the Hyper-V framework and related tooling, because virtualization on AWS is only available on bare-metal instances.
  • Some legacy or easily available through actions software has been removed to ensure faster boot times and lower disk usage.