diff --git a/lib/config/cli.ts b/lib/config/cli.ts
index ed499ba809b79bccc451a2bda2384fceb6aab5a4..e7e64a036a4169688d68744322a242bb039c6269 100644
--- a/lib/config/cli.ts
+++ b/lib/config/cli.ts
@@ -1,5 +1,6 @@
 import { Command } from 'commander';
 import { version } from '../../package.json';
+import { GlobalConfig } from './common';
 import { RenovateOptions, getOptions } from './definitions';
 
 export function getCliName(option: Partial<RenovateOptions>): string {
@@ -14,7 +15,7 @@ export interface RenovateCliConfig extends Record<string, any> {
   repositories?: string[];
 }
 
-export function getConfig(input: string[]): RenovateCliConfig {
+export function getConfig(input: string[]): GlobalConfig {
   // massage migrated configuration keys
   const argv = input
     .map((a) =>
diff --git a/lib/config/common.ts b/lib/config/common.ts
index c6f03095ddf5c967a6d1393f78dc06e90081c777..b23a0f3342d04398f1fd29f114504be741bc9269 100644
--- a/lib/config/common.ts
+++ b/lib/config/common.ts
@@ -63,6 +63,19 @@ export interface RenovateSharedConfig {
   unicodeEmoji?: boolean;
 }
 
+// Config options used only within the global worker
+export interface GlobalAdminConfig {
+  autodiscover?: boolean;
+  autodiscoverFilter?: string;
+  logFile?: string;
+  logFileLevel?: LogLevel;
+  logLevel?: LogLevel;
+  redisUrl?: string;
+  repositories?: RenovateRepository[];
+  trustLevel?: 'low' | 'high';
+}
+
+// Config options used within the repository worker, but non-user configurable
 export interface RepoAdminConfig {
   allowPostUpgradeCommandTemplating?: boolean;
   allowedPostUpgradeCommands?: string[];
@@ -71,9 +84,6 @@ export interface RepoAdminConfig {
 }
 
 export interface RenovateAdminConfig {
-  autodiscover?: boolean;
-  autodiscoverFilter?: string;
-
   baseDir?: string;
   cacheDir?: string;
   configWarningReuseIssue?: boolean;
@@ -85,9 +95,7 @@ export interface RenovateAdminConfig {
   endpoint?: string;
 
   localDir?: string;
-  logFile?: string;
-  logFileLevel?: LogLevel;
-  logLevel?: LogLevel;
+
   logContext?: string;
 
   onboarding?: boolean;
@@ -101,10 +109,7 @@ export interface RenovateAdminConfig {
   postUpdateOptions?: string[];
   privateKey?: string | Buffer;
   privateKeyPath?: string;
-  repositories?: RenovateRepository[];
   requireConfig?: boolean;
-  trustLevel?: 'low' | 'high';
-  redisUrl?: string;
   gitPrivateKey?: string;
 }
 
@@ -184,6 +189,8 @@ export interface RenovateConfig
   fetchReleaseNotes?: boolean;
 }
 
+export interface GlobalConfig extends RenovateConfig, GlobalAdminConfig {}
+
 export interface AssigneesAndReviewersConfig {
   assigneesFromCodeOwners?: boolean;
   assignees?: string[];
diff --git a/lib/config/defaults.ts b/lib/config/defaults.ts
index aa10fefbef09abb4bbbd5e4c9178c3462a8b344b..5b84b28767fd126550f9b7768b78961b364405be 100644
--- a/lib/config/defaults.ts
+++ b/lib/config/defaults.ts
@@ -1,4 +1,4 @@
-import { RenovateConfig } from './common';
+import { GlobalConfig } from './common';
 import { RenovateOptions, getOptions } from './definitions';
 
 const defaultValues = {
@@ -14,9 +14,9 @@ export function getDefault(option: RenovateOptions): any {
     : option.default;
 }
 
-export function getConfig(): RenovateConfig {
+export function getConfig(): GlobalConfig {
   const options = getOptions();
-  const config: RenovateConfig = {};
+  const config: GlobalConfig = {};
   options.forEach((option) => {
     if (!option.parent) {
       config[option.name] = getDefault(option);
diff --git a/lib/config/env.ts b/lib/config/env.ts
index 1c0073ca4ba87a80b42d1b90a67108c67031ee7d..ddaec11ef7f2873fc627db4d3baf8d0747770d7c 100644
--- a/lib/config/env.ts
+++ b/lib/config/env.ts
@@ -3,7 +3,7 @@ import is from '@sindresorhus/is';
 import { PLATFORM_TYPE_GITHUB } from '../constants/platforms';
 import * as datasourceDocker from '../datasource/docker';
 import { logger } from '../logger';
-import { RenovateConfig } from './common';
+import { GlobalConfig } from './common';
 import { RenovateOptions, getOptions } from './definitions';
 
 export function getEnvName(option: Partial<RenovateOptions>): string {
@@ -17,10 +17,10 @@ export function getEnvName(option: Partial<RenovateOptions>): string {
   return `RENOVATE_${nameWithUnderscores.toUpperCase()}`;
 }
 
-export function getConfig(env: NodeJS.ProcessEnv): RenovateConfig {
+export function getConfig(env: NodeJS.ProcessEnv): GlobalConfig {
   const options = getOptions();
 
-  const config: RenovateConfig = { hostRules: [] };
+  const config: GlobalConfig = { hostRules: [] };
 
   const coersions = {
     boolean: (val: string): boolean => val === 'true',
diff --git a/lib/config/file.ts b/lib/config/file.ts
index 4e245a9882a4b2a85d02200136326ac47f6ca0b5..32d55d247c67adaf4d021b6c414b904efed1b5e6 100644
--- a/lib/config/file.ts
+++ b/lib/config/file.ts
@@ -1,15 +1,15 @@
 import upath from 'upath';
 import { logger } from '../logger';
-import { RenovateConfig } from './common';
+import { GlobalConfig } from './common';
 import { migrateConfig } from './migration';
 
-export function getConfig(env: NodeJS.ProcessEnv): RenovateConfig {
+export function getConfig(env: NodeJS.ProcessEnv): GlobalConfig {
   let configFile = env.RENOVATE_CONFIG_FILE || 'config';
   if (!upath.isAbsolute(configFile)) {
     configFile = `${process.cwd()}/${configFile}`;
     logger.debug('Checking for config file in ' + configFile);
   }
-  let config: RenovateConfig = {};
+  let config: GlobalConfig = {};
   try {
     // eslint-disable-next-line global-require,import/no-dynamic-require
     config = require(configFile);
diff --git a/lib/config/index.ts b/lib/config/index.ts
index 8c8eae307a8082af6c4668a2a7ced53b3df74fe3..f94f23c5bba62de65c69c63b3e742d7879b5b0f8 100644
--- a/lib/config/index.ts
+++ b/lib/config/index.ts
@@ -3,7 +3,7 @@ import { get, getLanguageList, getManagerList } from '../manager';
 import { readFile } from '../util/fs';
 import { ensureTrailingSlash } from '../util/url';
 import * as cliParser from './cli';
-import { RenovateConfig, RenovateConfigStage } from './common';
+import { GlobalConfig, RenovateConfig, RenovateConfigStage } from './common';
 import * as defaultsParser from './defaults';
 import * as definitions from './definitions';
 import * as envParser from './env';
@@ -44,7 +44,7 @@ export function getManagerConfig(
 export async function parseConfigs(
   env: NodeJS.ProcessEnv,
   argv: string[]
-): Promise<RenovateConfig> {
+): Promise<GlobalConfig> {
   logger.debug('Parsing configs');
 
   // Get configs
@@ -138,9 +138,9 @@ export async function parseConfigs(
 }
 
 export function filterConfig(
-  inputConfig: RenovateConfig,
+  inputConfig: GlobalConfig,
   targetStage: RenovateConfigStage
-): RenovateConfig {
+): GlobalConfig {
   logger.trace({ config: inputConfig }, `filterConfig('${targetStage}')`);
   const outputConfig: RenovateConfig = { ...inputConfig };
   const stages = ['global', 'repository', 'package', 'branch', 'pr'];
diff --git a/lib/config/presets/index.ts b/lib/config/presets/index.ts
index fb07aa8d9eb89b76b0fa5946843262e72d8971ac..92d4c04550443d5daf6be4b0ad8cc64b45965118 100644
--- a/lib/config/presets/index.ts
+++ b/lib/config/presets/index.ts
@@ -6,7 +6,7 @@ import {
 import { logger } from '../../logger';
 import { ExternalHostError } from '../../types/errors/external-host-error';
 import { regEx } from '../../util/regex';
-import { RenovateConfig } from '../common';
+import { GlobalConfig, RenovateConfig } from '../common';
 import * as massage from '../massage';
 import * as migration from '../migration';
 import { mergeChildConfig } from '../utils';
@@ -185,11 +185,11 @@ export async function getPreset(
 }
 
 export async function resolveConfigPresets(
-  inputConfig: RenovateConfig,
+  inputConfig: GlobalConfig,
   baseConfig?: RenovateConfig,
   ignorePresets?: string[],
   existingPresets: string[] = []
-): Promise<RenovateConfig> {
+): Promise<GlobalConfig> {
   if (!ignorePresets || ignorePresets.length === 0) {
     ignorePresets = inputConfig.ignorePresets || []; // eslint-disable-line
   }
@@ -197,7 +197,7 @@ export async function resolveConfigPresets(
     { config: inputConfig, existingPresets },
     'resolveConfigPresets'
   );
-  let config: RenovateConfig = {};
+  let config: GlobalConfig = {};
   // First, merge all the preset configs from left to right
   if (inputConfig.extends?.length) {
     for (const preset of inputConfig.extends) {
diff --git a/lib/util/cache/package/index.ts b/lib/util/cache/package/index.ts
index 4735f5e977467cb0b081722d629757bbb27a5035..1300325c3ee5b7c1272400c7b5d05c5a7c774463 100644
--- a/lib/util/cache/package/index.ts
+++ b/lib/util/cache/package/index.ts
@@ -1,4 +1,4 @@
-import { RenovateConfig } from '../../../config/common';
+import { GlobalConfig } from '../../../config/common';
 import * as memCache from '../memory';
 import { PackageCache } from './common';
 import * as fileCache from './file';
@@ -35,7 +35,7 @@ export function set(
   return cacheProxy.set(namespace, key, value, minutes);
 }
 
-export function init(config: RenovateConfig): void {
+export function init(config: GlobalConfig): void {
   if (config.redisUrl) {
     redisCache.init(config.redisUrl);
     cacheProxy = {
@@ -51,7 +51,7 @@ export function init(config: RenovateConfig): void {
   }
 }
 
-export function cleanup(config: RenovateConfig): void {
+export function cleanup(config: GlobalConfig): void {
   if (config.redisUrl) {
     redisCache.end();
   }
diff --git a/lib/workers/global/autodiscover.ts b/lib/workers/global/autodiscover.ts
index 019a3a85c57ad57a6ab7ec2f3f25c30e6af96589..396f32b9e2c19b730eb9b9af5f089f4728c6c73d 100644
--- a/lib/workers/global/autodiscover.ts
+++ b/lib/workers/global/autodiscover.ts
@@ -1,6 +1,6 @@
 import is from '@sindresorhus/is';
 import minimatch from 'minimatch';
-import { RenovateConfig } from '../../config';
+import { GlobalConfig } from '../../config';
 import { logger } from '../../logger';
 import { platform } from '../../platform';
 
@@ -10,8 +10,8 @@ function repoName(value: string | { repository: string }): string {
 }
 
 export async function autodiscoverRepositories(
-  config: RenovateConfig
-): Promise<RenovateConfig> {
+  config: GlobalConfig
+): Promise<GlobalConfig> {
   if (!config.autodiscover) {
     if (!config.repositories?.length) {
       logger.warn(
diff --git a/lib/workers/global/index.ts b/lib/workers/global/index.ts
index 2bbea30c1e2de760ddf0f608e1c66f9a5d448c2e..e9075469fd1368e35979d666ae695edd16aa325a 100644
--- a/lib/workers/global/index.ts
+++ b/lib/workers/global/index.ts
@@ -3,6 +3,7 @@ import { ERROR } from 'bunyan';
 import fs from 'fs-extra';
 import upath from 'upath';
 import * as configParser from '../../config';
+import { GlobalConfig } from '../../config';
 import { setAdminConfig } from '../../config/admin';
 import { getAdminOptionNames } from '../../config/definitions';
 import { getProblems, logger, setMeta } from '../../logger';
@@ -46,7 +47,7 @@ function haveReachedLimits(): boolean {
 }
 
 export async function start(): Promise<number> {
-  let config: RenovateConfig;
+  let config: GlobalConfig;
   try {
     // read global config from file, env and cli args
     config = await getGlobalConfig();