diff --git a/src/client/plugin_manager_interface.cpp b/src/client/plugin_manager_interface.cpp
index 0da6fa6641d564c2e417dc496be1942f0ed21701..52359626f37abb4834ad24cc370cc0988a8f4e9e 100644
--- a/src/client/plugin_manager_interface.cpp
+++ b/src/client/plugin_manager_interface.cpp
@@ -83,7 +83,7 @@ getInstalledPlugins()
 std::vector<std::string>
 getLoadedPlugins()
 {
-    return jami::Manager::instance().getJamiPluginManager().getLoadedPlugins();
+    return jami::Manager::instance().pluginPreferences.getLoadedPlugins();
 }
 
 int
@@ -186,6 +186,12 @@ void
 setPluginsEnabled(bool state)
 {
     jami::Manager::instance().pluginPreferences.setPluginsEnabled(state);
+    for (auto& item : jami::Manager::instance().pluginPreferences.getLoadedPlugins()) {
+        if (state)
+            jami::Manager::instance().getJamiPluginManager().loadPlugin(item);
+        else
+            jami::Manager::instance().getJamiPluginManager().unloadPlugin(item);
+    }
     jami::Manager::instance().saveConfig();
 }
 } // namespace DRing
diff --git a/src/manager.cpp b/src/manager.cpp
index 6cbc79f6df6a08cb1e99331a7c289b424dc3b7a9..2544543e7be831dc6bffdb2742fedc8fe6c94960 100644
--- a/src/manager.cpp
+++ b/src/manager.cpp
@@ -2918,9 +2918,11 @@ Manager::loadAccountMap(const YAML::Node& node)
 #ifdef ENABLE_PLUGIN
         pluginPreferences.unserialize(node);
 
-        std::vector<std::string> loadedPlugins = pluginPreferences.getLoadedPlugins();
-        for (const std::string& plugin : loadedPlugins) {
-            jami::Manager::instance().getJamiPluginManager().loadPlugin(plugin);
+        if (pluginPreferences.getPluginsEnabled()) {
+            std::vector<std::string> loadedPlugins = pluginPreferences.getLoadedPlugins();
+            for (const std::string& plugin : loadedPlugins) {
+                jami::Manager::instance().getJamiPluginManager().loadPlugin(plugin);
+            }
         }
 #endif
     } catch (const YAML::Exception& e) {