diff --git a/CHANGELOG.md b/CHANGELOG.md
index 44e78101e1feb68504c26783f4865c13d3e21866..41991d2e9a696e126a5076ed27031f3c55a4f60b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 ## [Unreleased]
 
 ### New Features
+* Block module loading after iocInit has been invoked.
 * Arguments have been added to `iocsh.bash` to enable user to pass any debugger options to GDB and Valgrind.
 * Autocompletion for `iocsh.bash` has been added
 * Removed `iocsh_gdb.bash` and `iocsh_nice.bash`, both of whose functionality can be called via `iocsh.bash -dg` and `iocsh.bash -n`, respectively.
diff --git a/require-ess/src/require.c b/require-ess/src/require.c
index b91e88400505596eec5c42db918c2236bf9f1c0f..1943a6481f26fc7eef7c8d8e9b9bd6e2c3c26a67 100644
--- a/require-ess/src/require.c
+++ b/require-ess/src/require.c
@@ -918,6 +918,11 @@ int require(const char *module, const char *version, const char *args) {
     return -1;
   }
 
+  if (interruptAccept) {
+    fprintf(stderr, "Error! Modules can only be loaded before iocIint!\n");
+    return -1;
+  }
+
   /* either order for version and args, either may be empty or NULL */
   if (version && strchr(version, '=')) {
     const char *v = version;