diff --git a/CHANGES.rst b/CHANGES.rst
index 664c1fd670ffb732349906386004d316d92f057f..cbe36e9967065592fddbba982b0386d99414475e 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -20,6 +20,11 @@ Config
 * Setting to skip reading of the default config file (``.NO_DEFAULT = true``)
 * Add function to convert ISO periods to seconds (period2sec)
 
+Tools
+-----
+
+* Make deletion of missing keys non-fatal for setconfig
+
 Release 1.4.1
 =============
 
diff --git a/setconfig b/setconfig
index 561f5f5a9b681a2d5eacf56be92b50878408fd89..dfad453ee0ced6332a59cb823425048e7031d300 100755
--- a/setconfig
+++ b/setconfig
@@ -15,7 +15,7 @@ import sys
 from expconfig import ConfigObj
 
 from expargparse import assigns_to_dicts, get_key_chain
-from feedback import die
+from feedback import die, warn
 import package_info
 
 #
@@ -70,9 +70,12 @@ for current in args.delete:
     chain = get_key_chain(current)
     chain.reverse()
     key = chain.pop()
-    for section in chain:
-        config = config[section]
-    del config[key]
+    try:
+        for section in chain:
+            config = config[section]
+        del config[key]
+    except KeyError:
+        warn(f"key to be deleted ({current}) does not exist")
 
 # Merge key=value assignments from command line