coder/code-server · error · Error

isEnabledCoderGettingStarted was not provided to the browser

Error message

isEnabledCoderGettingStarted was not provided to the browser

What it means

Thrown by the isEnabledCoderGettingStarted getter added to BrowserWorkbenchEnvironmentImpl by the getting-started.diff patch when this.options.isEnabledCoderGettingStarted is undefined. The getter gates code-server's custom 'Getting Started' experience, so any component that reads it without the option being injected will throw at runtime.

Source

Thrown at patches/getting-started.diff:172

@@ -44,6 +44,11 @@ export interface IBrowserWorkbenchEnviro
 	readonly isEnabledFileUploads?: boolean;
 
 	/**
+	 * Enable Coder's custom getting started text.
+	 */
+	readonly isEnabledCoderGettingStarted?: boolean;
+
+	/**
 	 * Gets whether a resolver extension is expected for the environment.
 	 */
 	readonly expectsResolverExtension: boolean;
@@ -135,6 +140,13 @@ export class BrowserWorkbenchEnvironment
 		return this.options.isEnabledFileUploads;
 	}
 
+	get isEnabledCoderGettingStarted(): boolean {
+		if (typeof this.options.isEnabledCoderGettingStarted === "undefined") {
+			throw new Error('isEnabledCoderGettingStarted was not provided to the browser');
+		}
+		return this.options.isEnabledCoderGettingStarted;
+	}
+
 	@memoize
 	get argvResource(): URI { return joinPath(this.userRoamingDataHome, 'argv.json'); }
 
Index: code-server/lib/vscode/src/vs/server/node/serverEnvironmentService.ts
===================================================================
--- code-server.orig/lib/vscode/src/vs/server/node/serverEnvironmentService.ts
+++ code-server/lib/vscode/src/vs/server/node/serverEnvironmentService.ts
@@ -21,6 +21,7 @@ export const serverOptions: OptionDescri
 	'auth': { type: 'string' },
 	'disable-file-downloads': { type: 'boolean' },
 	'disable-file-uploads': { type: 'boolean' },
+	'disable-getting-started-override': { type: 'boolean' },
 
 	/* ----- server setup ----- */

View on GitHub (pinned to 51f90a376b)

Solutions

  1. Inject isEnabledCoderGettingStarted into the options bag code-server sends to the browser.
  2. Apply the full getting-started.diff including the serverEnvironmentService.ts option registration.
  3. Rebuild the workbench and clear the browser cache.
  4. If the feature is intentionally disabled, set the flag explicitly to false rather than leaving it undefined.

Example fix

// server-side option assembly
options.isEnabledCoderGettingStarted = false  // explicitly disable, do not leave undefined
Defensive patterns

Strategy: validation

Validate before calling

options.isEnabledCoderGettingStarted = options.isEnabledCoderGettingStarted ?? false

Type guard

function optionsHasGettingStarted(o: Record<string, unknown>): boolean {
  return typeof o.isEnabledCoderGettingStarted === 'boolean'
}

Try / catch

try {
  return environmentService.isEnabledCoderGettingStarted
} catch (e) {
  if (/isEnabledCoderGettingStarted was not provided/.test(e.message)) return false
}

Prevention

When it happens

Trigger: The workbench construction options lack isEnabledCoderGettingStarted while workbench code evaluates environmentService.isEnabledCoderGettingStarted; the getter patch was applied but the serverEnvironmentService.ts hunk that registers the option was not.

Common situations: Partial application of getting-started.diff; VS Code upgrade where the option injection site moved; a fork that references the flag without injecting it; stale browser cache serving old workbench JS that calls the getter.

Related errors


AI-assisted analysis of coder/code-server@51f90a376b (2026-08-12). Data as JSON: /api/errors/8e03126b187b24c9. Report an issue: GitHub.