diff --git a/lib/config/migration.ts b/lib/config/migration.ts
index 087511b50154094d7ceb0d2da43ce33772f86454..ee9be629734c3cc2df0014882d17c2b42f825954 100644
--- a/lib/config/migration.ts
+++ b/lib/config/migration.ts
@@ -437,7 +437,7 @@ export function migrateConfig(
         is.array(val) &&
         val.length === 1
       ) {
-        migratedConfig[key] = `${val[0]}`;
+        migratedConfig[key] = String(val[0]);
       } else if (key === 'node' && (val as RenovateConfig).enabled === true) {
         isMigrated = true;
         delete migratedConfig.node.enabled;
diff --git a/lib/config/presets/index.ts b/lib/config/presets/index.ts
index dcfa9bdb3bd328b598abc55f72a6577b1d40e624..880394614fecf3d64f7e7a99bc896d47ff345bad 100644
--- a/lib/config/presets/index.ts
+++ b/lib/config/presets/index.ts
@@ -195,10 +195,14 @@ export async function resolveConfigPresets(
     for (const preset of inputConfig.extends) {
       // istanbul ignore if
       if (existingPresets.includes(preset)) {
-        logger.debug(`Already seen preset ${preset} in ${existingPresets}`);
+        logger.debug(
+          `Already seen preset ${preset} in [${existingPresets.join(', ')}]`
+        );
       } else if (ignorePresets.includes(preset)) {
         // istanbul ignore next
-        logger.debug(`Ignoring preset ${preset} in ${existingPresets}`);
+        logger.debug(
+          `Ignoring preset ${preset} in [${existingPresets.join(', ')}]`
+        );
       } else {
         logger.trace(`Resolving preset "${preset}"`);
         let fetchedPreset: RenovateConfig;
diff --git a/lib/config/validation-helpers/managers.ts b/lib/config/validation-helpers/managers.ts
index 4933fb561753fdf7d0b0f9df3c0df611cb8290de..53835b7a01a9ed3b180bdae50d2e1cf01e7fb59a 100644
--- a/lib/config/validation-helpers/managers.ts
+++ b/lib/config/validation-helpers/managers.ts
@@ -21,9 +21,9 @@ export function check({
       )
     ) {
       managersErrMessage = `${currentPath}:
-        You have included an unsupported manager in a package rule. Your list: ${
+        You have included an unsupported manager in a package rule. Your list: ${String(
           resolvedRule.managers
-        }.
+        )}.
         Supported managers are: (${getManagerList().join(', ')}).`;
     }
   } else if (typeof resolvedRule.managers !== 'undefined') {
diff --git a/lib/config/validation.ts b/lib/config/validation.ts
index 1b7fb9e76b841be1dbcaac84ceecaf0d06c256fa..12429e340dedf4b72fd7325386bd7511db17ba7a 100644
--- a/lib/config/validation.ts
+++ b/lib/config/validation.ts
@@ -55,7 +55,10 @@ export async function validateConfig(
     return ignoredNodes.includes(key);
   }
 
-  function validateAliasObject(key: string, val: object): boolean {
+  function validateAliasObject(
+    key: string,
+    val: Record<string, unknown>
+  ): boolean {
     if (key === 'aliases') {
       for (const value of Object.values(val)) {
         if (!is.urlString(value)) {
@@ -285,7 +288,9 @@ export async function validateConfig(
                     } catch (e) {
                       errors.push({
                         depName: 'Configuration Error',
-                        message: `Invalid regExp for ${currentPath}: \`${matchString}\``,
+                        message: `Invalid regExp for ${currentPath}: \`${String(
+                          matchString
+                        )}\``,
                       });
                     }
                   }
@@ -357,7 +362,7 @@ export async function validateConfig(
             });
           }
         } else if (type === 'object' && currentPath !== 'compatibility') {
-          if (is.object(val)) {
+          if (is.plainObject(val)) {
             if (key === 'aliases') {
               if (!validateAliasObject(key, val)) {
                 errors.push({