diff --git a/conf/type/__key_value/gencode-remote b/conf/type/__key_value/gencode-remote
index 0846dca1..b3ffeb46 100755
--- a/conf/type/__key_value/gencode-remote
+++ b/conf/type/__key_value/gencode-remote
@@ -34,7 +34,8 @@ fi
 case "$state_should" in
    absent)
       # remove lines starting with key
-      echo "sed -i '/^$key\($delimiter\+\)/d' \"$file\""
+      echo "sed '/^$key\($delimiter\+\)/d' \"$file\" > \"$file.cdist-tmp\""
+      echo "mv \"$file.cdist-tmp\" \"$file\""
    ;;
    present)
       case "$state_is" in
@@ -44,7 +45,8 @@ case "$state_should" in
          ;;
          wrongvalue)
             # change exisiting value
-            echo "sed -i \"s|^$key\($delimiter\+\).*|$key\1$value|\" \"$file\""
+            echo "sed \"s|^$key\($delimiter\+\).*|$key\1$value|\" \"$file\" > \"$file.cdist-tmp\""
+            echo "mv \"$file.cdist-tmp\" \"$file\""
          ;;
          *)
             echo "Unknown explorer state: $state_is" >&2
diff --git a/conf/type/__rvm/gencode-remote b/conf/type/__rvm/gencode-remote
index f306979a..1ba1d499 100755
--- a/conf/type/__rvm/gencode-remote
+++ b/conf/type/__rvm/gencode-remote
@@ -32,7 +32,9 @@ DONE
       removed)
          cat << DONE
 su - $user -c "rm -Rf \"\\\$HOME/.rvm\";
-sed -i '/rvm\/scripts\/rvm/d' \"\\\$HOME/.bashrc\""
+sed '/rvm\/scripts\/rvm/d' \"\\\$HOME/.bashrc\" > \"\\\$HOME/.bashrc.cdist-tmp\"
+mv \"\\\$HOME/.bashrc.cdist-tmp\" \"\\\$HOME/.bashrc\""
+
 DONE
       ;;
    esac
diff --git a/conf/type/__start_on_boot/gencode-remote b/conf/type/__start_on_boot/gencode-remote
index a64c1096..78a82de3 100755
--- a/conf/type/__start_on_boot/gencode-remote
+++ b/conf/type/__start_on_boot/gencode-remote
@@ -32,7 +32,8 @@ case "$state_should" in
     present)
         case "$os" in
             archlinux)
-                echo "sed -i 's/^\\(DAEMONS=.*\\))/\\1 $name)/' /etc/rc.conf"
+                echo "sed 's/^\\(DAEMONS=.*\\))/\\1 $name)/' /etc/rc.conf > /etc/rc.conf.cdist-tmp"
+                echo "mv /etc/rc.conf.cdist-tmp /etc/rc.conf"
             ;;
             debian|ubuntu)
                 echo "update-rc.d \"$name\" defaults >/dev/null"
@@ -66,7 +67,8 @@ case "$state_should" in
             archlinux)
                 # Replace a) at the beginning b) in the middle c) end d) only
                 # Support @name as well...makes it more ugly, but well...
-                echo "sed -i /etc/rc.conf -e 's/^\\(DAEMONS=(\\)@\\{0,1\\}$name /\\1/' -e 's/^\\(DAEMONS=(.* \\)@\\{0,1\\}$name \\(.*\\)/\\1\\2/' -e 's/^\\(DAEMONS=(.*\\) @\\{0,1\\}$name)/\\1)/' -e 's/^\\(DAEMONS=(\\)@\\{0,1\\}$name)/\\1)/'"
+                echo "sed /etc/rc.conf -e 's/^\\(DAEMONS=(\\)@\\{0,1\\}$name /\\1/' -e 's/^\\(DAEMONS=(.* \\)@\\{0,1\\}$name \\(.*\\)/\\1\\2/' -e 's/^\\(DAEMONS=(.*\\) @\\{0,1\\}$name)/\\1)/' -e 's/^\\(DAEMONS=(\\)@\\{0,1\\}$name)/\\1)/' > /etc/rc.conf.cdist-tmp"
+                echo "mv /etc/rc.conf.cdist-tmp /etc/rc.conf"
             ;;
             debian|ubuntu)
                 echo update-rc.d -f \"$name\" remove