diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index c0744ce5033f3e2043c505ad6cdbc60fb5cd66e8..ba23c72586d49ea54f0adabfc8222cfde142e782 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -22,6 +22,10 @@ on:
 permissions:
   contents: read
 
+concurrency:
+  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+  cancel-in-progress: true
+
 jobs:
   check_source:
     name: 'Check for source changes'
diff --git a/.github/workflows/build_msi.yml b/.github/workflows/build_msi.yml
index 04917ff184aa6420b4ffbcf32dcedb9bd1ddaed6..0eba92e1c844385baae0ef45c093b211af92f13b 100644
--- a/.github/workflows/build_msi.yml
+++ b/.github/workflows/build_msi.yml
@@ -23,6 +23,10 @@ on:
 permissions:
   contents: read
 
+concurrency:
+  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+  cancel-in-progress: true
+
 jobs:
   build_win32:
     name: 'Windows (x86) Installer'
diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml
index eb4884a487325ac5119374d8b8c23eaaf585b7ad..3bc280be95f31e92620583a350cf4ed9a604ca58 100644
--- a/.github/workflows/doc.yml
+++ b/.github/workflows/doc.yml
@@ -23,6 +23,10 @@ on:
 permissions:
   contents: read
 
+concurrency:
+  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+  cancel-in-progress: true
+
 jobs:
   build_doc:
     name: 'Docs'
diff --git a/.github/workflows/verify-ensurepip-wheels.yml b/.github/workflows/verify-ensurepip-wheels.yml
index 61e3d1adf534d54b5d5ebbef7196c37ca4ad14cc..9f4754f912b09f6257caac0a9bb2093752b5e952 100644
--- a/.github/workflows/verify-ensurepip-wheels.yml
+++ b/.github/workflows/verify-ensurepip-wheels.yml
@@ -16,6 +16,10 @@ on:
 permissions:
   contents: read
 
+concurrency:
+  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+  cancel-in-progress: true
+
 jobs:
   verify:
     runs-on: ubuntu-latest