diff --git a/utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl b/utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl
index d993e39e..32ac3869 100644
--- a/utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl
+++ b/utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl
@@ -207,6 +207,16 @@ int main(int argc, char **argv)
 		return EXIT_FAILURE;
 	}
 
+	/*
+	 * Shutdown of proxy worker can be preemptive by events like
+	 * SIGINT/SIGTERM, even before the pipeline handler can request
+	 * shutdown. Hence, assign a new gid to handle these situations.
+	 */
+	if (setpgid(0, 0) < -1) {
+		LOG({{proxy_worker_name}}, Warning)
+			<< "Failed to set new gid: " << strerror(errno);
+	}
+
 	{{proxy_worker_name}} proxyWorker;
 	int ret = proxyWorker.init(ipam, fd);
 	if (ret < 0) {
