windmill-labs/windmill · error

⚠️ Both 'workspaces' and '${legacyKey}' found in wmill.yaml

Error message

⚠️  Both 'workspaces' and '${legacyKey}' found in wmill.yaml. Using 'workspaces' and ignoring '${legacyKey}'.

What it means

Config precedence notice from readConfigFile: wmill.yaml contains both the modern 'workspaces' key and a legacy key (gitBranches/environments/git_branches). The 'workspaces' section wins and the legacy key is ignored (and later deleted from the in-memory config); the warning names which legacy key was shadowed.

Source

Thrown at cli/src/core/conf.ts:270

        legacyKey = "git_branches";
        legacyData = conf.git_branches;
      }

      if (legacyKey && legacyData) {
        conf.workspaces = convertGitBranchesToWorkspaces(legacyData);
        if (!legacyConfigWarned) {
          log.warn(
            `⚠️  '${legacyKey}' in wmill.yaml is deprecated. Use 'workspaces' instead.\n` +
            `   Run 'wmill config migrate' to update your configuration automatically.`
          );
          legacyConfigWarned = true;
        }
      }
    } else if (conf?.workspaces) {
      // If both workspaces and any legacy key exist, warn and use workspaces
      for (const legacyKey of ["gitBranches", "environments", "git_branches"] as const) {
        if ((conf as any)[legacyKey]) {
          log.warn(
            `⚠️  Both 'workspaces' and '${legacyKey}' found in wmill.yaml. Using 'workspaces' and ignoring '${legacyKey}'.`
          );
        }
      }
    }
    // Clean legacy keys from in-memory config
    delete conf?.gitBranches;
    delete (conf as any)?.environments;
    delete conf?.git_branches;

    if (conf?.defaultTs == undefined) {
      log.warn(
        "No defaultTs defined in your wmill.yaml. Using 'bun' as default."
      );
    }

    // Initialize global nonDottedPaths setting from config
    setNonDottedPaths(conf?.nonDottedPaths ?? false);

View on GitHub (pinned to e474e8803c)

Solutions

  1. Remove the legacy key from wmill.yaml to remove ambiguity
  2. Run 'wmill config migrate' to normalize the file to 'workspaces' only
  3. Verify the 'workspaces' section carries everything the legacy key did
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at cli/src/core/conf.ts:270 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/bcad12f80517d8c7. Report an issue: GitHub.