diff --git a/brian_dashboard_manager/grafana/folder.py b/brian_dashboard_manager/grafana/folder.py
index 64e6ad46b645d9693a3ea0264e8999fc2c1688b4..fb214ddd9b9a3ed6d449ad355df96cddfc2ef784 100644
--- a/brian_dashboard_manager/grafana/folder.py
+++ b/brian_dashboard_manager/grafana/folder.py
@@ -6,7 +6,7 @@ from brian_dashboard_manager.grafana.utils.request import TokenRequest
 logger = logging.getLogger(__name__)
 
 
-def delete_folder(request: TokenRequest, title, uid=None):
+def delete_folder(request: TokenRequest, title=None, uid=None):
     if uid:
         r = request.delete(f'api/folders/{uid}')
         return r is not None
diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py
index 3ca08778d9bda633559755d17d1b5bafe05cbcc1..9acd02bed82a8daacb45e037ab1fc3caff4eafac 100644
--- a/brian_dashboard_manager/grafana/provision.py
+++ b/brian_dashboard_manager/grafana/provision.py
@@ -22,7 +22,7 @@ from brian_dashboard_manager.grafana.dashboard import find_dashboard, \
 from brian_dashboard_manager.grafana.datasource import \
     check_provisioned, create_datasource
 from brian_dashboard_manager.grafana.folder import find_folder, \
-    delete_folder
+    delete_folder, get_folders
 from brian_dashboard_manager.inventory_provider.interfaces import \
     get_gws_direct, get_gws_indirect, get_interfaces
 
@@ -308,6 +308,11 @@ def provision(config):
         updated = find_dashboard(token_request) or []
         updated = reduce(get_uid, updated, {})
 
+        # General is a base folder present in Grafana
+        folders_to_keep = ['General', 'Aggregates']
+        folders_to_keep.extend([dash['folder_name']
+                                for dash in dashboards.values()])
+
         def update_dash_list(dashboards):
             for dashboard in dashboards:
                 if isinstance(dashboard, Future):
@@ -451,6 +456,7 @@ def provision(config):
         # get dashboard UIDs from ignored folders
         # and make sure we don't touch them
         for name in ignored_folders:
+            folders_to_keep.append(name)
             logger.info(
                 f'Ignoring dashboards under the folder {org["name"]}/{name}')
             folder = find_folder(token_request, name, create=False)
@@ -470,6 +476,13 @@ def provision(config):
                 logger.info(f'Deleting stale dashboard with UID {dash}')
                 delete_dashboard(token_request, {'uid': dash})
 
+        all_folders = get_folders(token_request)
+        folders_to_keep = set(folders_to_keep)
+
+        for folder in all_folders:
+            if folder['title'] not in folders_to_keep:
+                delete_folder(token_request, uid=folder['uid'])
+
     logger.info(f'Time to complete: {time.time() - start}')
     for org_id, token in tokens:
         delete_api_token(request, org_id, token)