diff --git a/ansible/roles/kubernetes/files/k8s_delete_pipeline_runs b/ansible/roles/kubernetes/files/k8s_delete_pipeline_runs
new file mode 100644
index 0000000..0158a84
--- /dev/null
+++ b/ansible/roles/kubernetes/files/k8s_delete_pipeline_runs
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+#
+set -euo pipefail
+IFS=$'\n\t'
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+kubectl get pipelinerun --all-namespaces -o go-template='{{range .items}}{{.metadata.namespace}}/{{.metadata.name}}{{"\n"}}{{end}}' | while read p; do namespace=$(cut -d '/' -f 1 <<<"$p"); name=$(cut -d '/' -f 2 <<<"$p"); kubectl delete pipelinerun -n "$namespace" "$name"; done
diff --git a/ansible/roles/kubernetes/tasks/common.yaml b/ansible/roles/kubernetes/tasks/common.yaml
index f3a77ce..1ea1207 100644
--- a/ansible/roles/kubernetes/tasks/common.yaml
+++ b/ansible/roles/kubernetes/tasks/common.yaml
@@ -37,6 +37,8 @@
       dest: /usr/local/bin/kx
     - src: decrypt_k8s_secret
       dest: /usr/local/bin/decrypt_k8s_secret
+    - src: k8s_delete_pipeline_runs
+      dest: /usr/local/bin/
 
 - import_tasks: tasks/freebsd.yaml
   when: 'os_flavor == "freebsd"'