diff --git a/src/syncterm/bbslist.c b/src/syncterm/bbslist.c
index 6c64f2c509e029275ab89a87d66cde2edbfe7c44..ce6e49a755ea1a358dde97010c7782f3534e389e 100644
--- a/src/syncterm/bbslist.c
+++ b/src/syncterm/bbslist.c
@@ -839,6 +839,14 @@ read_item(str_list_t listfile, struct bbslist *entry, char *bbsname, int id, int
 	strListFree(&section);
 }
 
+bool
+is_reserved_bbs_name(const char *name)
+{
+	if (stricmp(name, "syncterm-system-cache") == 0)
+		return true;
+	return false;
+}
+
 /*
  * Checks if bbsname already is listed in list
  * setting *pos to the position if not NULL.
@@ -894,7 +902,7 @@ read_list(char *listpath, struct bbslist **list, struct bbslist *defaults, int *
 			read_item(inilines, defaults, NULL, -1, type);
 		bbses = iniGetSectionList(inilines, NULL);
 		while ((bbsname = strListRemove(&bbses, 0)) != NULL) {
-			if (!list_name_check(list, bbsname, NULL, false)) {
+			if ((!list_name_check(list, bbsname, NULL, false)) && (!is_reserved_bbs_name(bbsname))) {
 				if ((list[*i] = (struct bbslist *)malloc(sizeof(struct bbslist))) == NULL) {
 					free(bbsname);
 					break;
@@ -1102,6 +1110,12 @@ edit_name(char *itemname, struct bbslist **list, str_list_t inifile, bool edit_t
 			uifc.msg("Entry Name Already Exists!");
 			check_exit(false);
 		}
+		else if(is_reserved_bbs_name(tmp)) {
+			uifc.helpbuf = "`Reserved Name`\n\n"
+			               "The name you entered is reserved for internal use\n";
+			uifc.msg("Reserved Name!");
+			check_exit(false);
+		}
 		else {
 			if (tmp[0] == 0) {
 				uifc.helpbuf = "`Can Not Use an Empty Name`\n\n"
@@ -3266,6 +3280,13 @@ show_bbslist(char *current, int connected)
 								check_exit(false);
 								break;
 							}
+							if(is_reserved_bbs_name(tmp)) {
+								uifc.helpbuf = "`Reserved Name`\n\n"
+									       "The name you entered is reserved for internal use\n";
+								uifc.msg("Reserved Name!");
+								check_exit(false);
+								break;
+							}
 							listcount++;
 							list[listcount] = list[listcount - 1];
 							list[listcount