diff --git a/src/lib66/sanitize/sanitize_fdholder.c b/src/lib66/sanitize/sanitize_fdholder.c
index c27e0af23b7575caddf82ce6af5dd76c1f660141..ee561645d5cffd5e9aa6bef6755d43271d343c9c 100644
--- a/src/lib66/sanitize/sanitize_fdholder.c
+++ b/src/lib66/sanitize/sanitize_fdholder.c
@@ -182,7 +182,7 @@ int sanitize_fdholder(resolve_service_t *res, ss_state_t *sta, uint32_t flag, ui
         if (!openwritenclose_unsafe(file, list.s, list.len))
             log_warnusys_return(LOG_EXIT_ZERO, "write file: ", file) ;
 
-        svc_send_fdholder(socket, "twR") ;
+        //svc_send_fdholder(socket, "twR") ;
 
         stralloc_free(&list) ;
     }
diff --git a/src/lib66/sanitize/sanitize_init.c b/src/lib66/sanitize/sanitize_init.c
index ad93ec2a6cb9344a329d86a82b3c4353e514057e..b3ec035b3c6f65da8998b786b9a65d89839dc6ae 100644
--- a/src/lib66/sanitize/sanitize_init.c
+++ b/src/lib66/sanitize/sanitize_init.c
@@ -41,6 +41,7 @@
 #include <66/enum.h>
 #include <66/sanitize.h>
 #include <66/symlink.h>
+#include <66/svc.h>
 
 void cleanup(struct resolve_hash_s *hash, unsigned int alen)
 {
@@ -64,6 +65,10 @@ void cleanup(struct resolve_hash_s *hash, unsigned int alen)
         unlink(pres->sa.s + pres->live.scandir) ;
 
     }
+
+    if (alen)
+        svc_send_fdholder(hash[0].res.sa.s + hash[0].res.live.fdholderdir, "twR") ;
+
     errno = e ;
 }
 
@@ -76,7 +81,7 @@ void sanitize_init(unsigned int *alist, unsigned int alen, graph_t *g, struct re
         return ;
 
     ftrigr_t fifo = FTRIGR_ZERO ;
-    uint32_t earlier ;
+    uint32_t earlier, fdh = 0 ;
     gid_t gid = getgid() ;
     int is_supervised = 0 ;
     unsigned int pos = 0, nsv = 0, msg[alen] ;
@@ -173,6 +178,8 @@ void sanitize_init(unsigned int *alist, unsigned int alen, graph_t *g, struct re
                 cleanup(toclean, pos) ;
                 log_dieusys(LOG_EXIT_SYS, "create fifo: ", pres->sa.s + pres->live.eventdir) ;
             }
+
+            fdh = 1 ;
         }
 
         if (!state_write(&sta, pres)) {
@@ -183,6 +190,9 @@ void sanitize_init(unsigned int *alist, unsigned int alen, graph_t *g, struct re
         real[nsv++] = *hash ;
     }
 
+    if (!earlier && fdh && nsv)
+        svc_send_fdholder(real[0].res.sa.s + real[0].res.live.fdholderdir, "twR") ;
+
     /**
      * scandir is already running, we need to synchronize with it
      * */
diff --git a/src/lib66/svc/svc_unsupervise.c b/src/lib66/svc/svc_unsupervise.c
index e48f0562385b95f70a1f95fda057d7a9da90e617..850e4220c0aceaf2543fb79a7830aac5594b65c3 100644
--- a/src/lib66/svc/svc_unsupervise.c
+++ b/src/lib66/svc/svc_unsupervise.c
@@ -34,6 +34,8 @@ static void sanitize_it(resolve_service_t *res)
 
     sanitize_fdholder(res, &sta, STATE_FLAGS_FALSE, 0) ;
 
+    svc_send_fdholder(res->sa.s + res->live.fdholderdir, "twR") ;
+
     state_set_flag(&sta, STATE_FLAGS_TOUNSUPERVISE, STATE_FLAGS_TRUE) ;
     state_set_flag(&sta, STATE_FLAGS_ISUP, STATE_FLAGS_FALSE) ;