windmill-labs/windmill · warning

Skipping unrecognized workspace dependencies file: ${k}

Error message

Skipping unrecognized workspace dependencies file: ${k}

What it means

A warning emitted while comparing remote dependency files during sync diff. A remote path under `dependencies/` exists that the CLI cannot map to a known dependency file type/language via workspaceDependenciesPathToLanguageAndFilename, so it is skipped instead of being added as a change.

Source

Thrown at cli/src/commands/sync/sync.ts:2784

        throw error;
      }
    }
  }

  const codebaseChanges: Record<string, string> = {};

  for (let [k, v] of Object.entries(m1)) {
    const isScriptMetadata =
      k.endsWith(".script.yaml") || k.endsWith(".script.json");
    const skipMetadata = skips.skipScriptsMetadata && isScriptMetadata;

    if (m2[k] === undefined) {
      if (skipMetadata) {
        continue;
      }
      if (k.startsWith("dependencies/")) {
        if (!workspaceDependenciesPathToLanguageAndFilename(k)) {
          log.warn(`Skipping unrecognized workspace dependencies file: ${k}`);
          continue;
        }
        log.info(`Adding workspace dependencies file: ${k}`);
      }
      changes.push({ name: "added", path: k, content: v });
    } else {
      if (m2[k] == v) {
        continue;
      } else if (k.endsWith(".json") && !isWorkspaceDependencies(k)) {
        let parsedV, parsedM2;
        try {
          parsedV = JSON.parse(v);
        } catch (error) {
          log.error(
            `Failed to parse new JSON content for comparison at path: ${k}`,
          );
          throw error;
        }

View on GitHub (pinned to e474e8803c)

Solutions

  1. Upgrade the CLI (`npm i -g windmill-cli` / latest version) so it recognizes the dependency file format produced by your server version.
  2. Move the unrecognized file out of the `dependencies/` folder if it isn't a real dependency lockfile.
  3. Verify the path with `wmill ws file list` or the UI to confirm what the file is; delete it if stale.
  4. If it's a legitimate supported lockfile, check its filename matches the expected convention (language + requirements/lock filename).

Example fix

// before: stray file remote dependencies/notes.txt -> skipped warning
// after: delete it or move it out of dependencies/ via UI, or upgrade CLI to match server version
Defensive patterns

Strategy: validation

Validate before calling

const KNOWN = /^(dependencies\/)(python|nodejs|go|deno|bash|ruby|php|nu)\//; // match supported layout
if (k.startsWith("dependencies/") && !workspaceDependenciesPathToLanguageAndFilename(k)) {
  console.warn(`Cleaning or upgrading for: ${k}`);
}

Type guard

function isRecognizedDepsPath(p: string): boolean {
  return workspaceDependenciesPathToLanguageAndFilename(p) !== undefined;
}

Try / catch

try {
  await wmill.sync.pull(...);
} catch (e) {
  console.warn("Some dependency files were skipped; upgrade the CLI or move stray files out of dependencies/", e);
}

Prevention

When it happens

Trigger: The remote workspace contains a file under `dependencies/` whose filename/layout doesn't match any supported dependency lockfile format (e.g. a manually placed file, or a lockfile format from a newer/older Windmill version).

Common situations: Someone uploaded a custom file into the dependencies folder via the UI; a Windmill version mismatch where the server produces a dependency file the CLI version doesn't recognize; typo'd path placed under dependencies/.

Related errors


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