diff --git a/lib/config/options/index.ts b/lib/config/options/index.ts
index a87d3d8a916df7919dd4b6503d3194e500fc12bd..8310f685b9648187d0aa5be9f4fdbacc7df06293 100644
--- a/lib/config/options/index.ts
+++ b/lib/config/options/index.ts
@@ -52,6 +52,7 @@ const options: RenovateOptions[] = [
     subType: 'string',
     globalOnly: true,
     patternMatch: true,
+    mergeable: true,
   },
   {
     name: 'detectGlobalManagerConfig',
diff --git a/lib/config/presets/internal/global.ts b/lib/config/presets/internal/global.ts
new file mode 100644
index 0000000000000000000000000000000000000000..aaf331d81e69c5013bd789dd95386170bfefbd7b
--- /dev/null
+++ b/lib/config/presets/internal/global.ts
@@ -0,0 +1,11 @@
+import type { Preset } from '../types';
+
+/* eslint sort-keys: ["error", "asc", {caseSensitive: false, natural: true}] */
+
+export const presets: Record<string, Preset> = {
+  safeEnv: {
+    allowedEnv: ['GO*'],
+    description:
+      'Hopefully safe environment variables to allow users to configure.',
+  },
+};
diff --git a/lib/config/presets/internal/index.spec.ts b/lib/config/presets/internal/index.spec.ts
index 1b978f01d0d2b4f36970069310563620ac7f3ca1..76f4d3572550e8aa723d9866899f0894f213f6b8 100644
--- a/lib/config/presets/internal/index.spec.ts
+++ b/lib/config/presets/internal/index.spec.ts
@@ -30,7 +30,8 @@ describe('config/presets/internal/index', () => {
             const config = await resolveConfigPresets(
               massageConfig(presetConfig),
             );
-            const res = await validateConfig('repo', config, true);
+            const configType = groupName === 'global' ? 'global' : 'repo';
+            const res = await validateConfig(configType, config, true);
             expect(res.errors).toHaveLength(0);
             expect(res.warnings).toHaveLength(0);
           } catch (err) {
diff --git a/lib/config/presets/internal/index.ts b/lib/config/presets/internal/index.ts
index e61f0d5a0a017b3f6cf82d3a45e51b3623696d66..d9ec8c4bdff8ba54619780a61146a91eb10b70e0 100644
--- a/lib/config/presets/internal/index.ts
+++ b/lib/config/presets/internal/index.ts
@@ -3,6 +3,7 @@ import * as configPreset from './config';
 import * as customManagersPreset from './custom-managers';
 import * as defaultPreset from './default';
 import * as dockerPreset from './docker';
+import * as globalPreset from './global';
 import * as groupPreset from './group';
 import * as helpersPreset from './helpers';
 import * as mergeConfidence from './merge-confidence';
@@ -22,6 +23,7 @@ export const groups: Record<string, Record<string, Preset>> = {
   customManagers: customManagersPreset.presets,
   default: defaultPreset.presets,
   docker: dockerPreset.presets,
+  global: globalPreset.presets,
   group: groupPreset.presets,
   helpers: helpersPreset.presets,
   mergeConfidence: mergeConfidence.presets,
diff --git a/lib/config/presets/parse.ts b/lib/config/presets/parse.ts
index 09ac031b26ce9ed183ee23f5e93b4c1d7f00a5a5..d81a7d9ac65f978971fc99743b87d07564ba11f4 100644
--- a/lib/config/presets/parse.ts
+++ b/lib/config/presets/parse.ts
@@ -57,6 +57,7 @@ export function parsePreset(input: string): ParsedPreset {
     'customManagers',
     'default',
     'docker',
+    'global',
     'group',
     'helpers',
     'mergeConfidence',