diff --git a/lib/workers/global/config/parse/codespaces.ts b/lib/workers/global/config/parse/codespaces.ts
new file mode 100644
index 0000000000000000000000000000000000000000..795a5afccd3dc86839a5d5edfd95f2f2ec4a3f0c
--- /dev/null
+++ b/lib/workers/global/config/parse/codespaces.ts
@@ -0,0 +1,24 @@
+import readline from 'readline';
+import type { AllConfig } from '../../../../config/types';
+
+// istanbul ignore next
+export async function setConfig(config: AllConfig): Promise<AllConfig> {
+  if (process.env.CODESPACES !== 'true') {
+    return config;
+  }
+
+  if (!config.token && process.env.GITHUB_TOKEN) {
+    config.token = process.env.GITHUB_TOKEN;
+  }
+
+  if (!config.repositories?.length) {
+    const rl = readline.promises.createInterface({
+      input: process.stdin,
+      output: process.stdout,
+    });
+    const repo = await rl.question('\n\nRepository name: ');
+    config.repositories = [repo];
+  }
+
+  return config;
+}
diff --git a/lib/workers/global/config/parse/index.ts b/lib/workers/global/config/parse/index.ts
index 0823d06c6ff5d9e68445a7ea20f6fdf734afac19..58352098df82f1114374889efdd46e39fc18b701 100644
--- a/lib/workers/global/config/parse/index.ts
+++ b/lib/workers/global/config/parse/index.ts
@@ -6,6 +6,7 @@ import { detectAllGlobalConfig } from '../../../../modules/manager';
 import { ensureDir, getParentDir, readSystemFile } from '../../../../util/fs';
 import { ensureTrailingSlash } from '../../../../util/url';
 import * as cliParser from './cli';
+import * as codespaces from './codespaces';
 import * as envParser from './env';
 import * as fileParser from './file';
 import { hostRulesFromEnv } from './host-rules-from-env';
@@ -25,6 +26,8 @@ export async function parseConfigs(
   let config: AllConfig = mergeChildConfig(fileConfig, envConfig);
   config = mergeChildConfig(config, cliConfig);
 
+  config = await codespaces.setConfig(config);
+
   const combinedConfig = config;
 
   config = mergeChildConfig(defaultConfig, config);