windmill-labs/windmill · warning

Warning: ${message}

Error message

Warning: ${message}

What it means

The Windmill CLI's `preCheckPermissionedAs` guard (called from `push`) detects items in the push whose `permissioned_as`/email owner would change to the current user, when the user is not an admin or member of `wm_deployers`. When the `--accept-overriding-permissioned-as-with-self` flag is set, the CLI logs the full list of affected items as a yellow `Warning: <message>` and continues the push. Without the flag it either prompts interactively or hard-fails with exit code 1.

Source

Thrown at cli/src/core/permissioned_as.ts:192

  }

  if (wouldChangeItems.length === 0) return;

  const itemList = wouldChangeItems
    .map((item) => `  - ${item.path} (current owner: ${item.currentOwner})`)
    .join("\n");

  const message =
    `You are not an admin or member of 'wm_deployers'. The following ${wouldChangeItems.length} item(s) ` +
    `will have their permissioned_as/email changed to your user (${userEmail}):\n${itemList}`;

  if (acceptOverride) {
    log.warn(colors.yellow(`Warning: ${message}`));
    return;
  }

  if (isInteractive) {
    log.warn(colors.yellow(message));
    const proceed = await Confirm.prompt({
      message:
        "Do you want to proceed? (use --accept-overriding-permissioned-as-with-self to skip this prompt)",
      default: false,
    });
    if (!proceed) {
      log.info("Push cancelled.");
      process.exit(0);
    }
  } else {
    log.error(
      colors.red(
        `${message}\n\nUse --accept-overriding-permissioned-as-with-self to proceed anyway.`
      )
    );
    process.exit(1);
  }
}

View on GitHub (pinned to e474e8803c)

Solutions

  1. If ownership transfer is intended, keep the flag and review the listed paths to confirm each is expected.
  2. If not intended, remove the flag and edit the local files to set `permissioned_as` (or the schedule/app owner email) back to the original owner before pushing.
  3. Push only the specific paths you own (e.g. targeted push of those files) instead of a full sync.
  4. Ask an admin to add you to the `wm_deployers` group if you legitimately need to manage these items.

Example fix

# before (blanks owner in YAML → becomes you on push)
# no permissioned_as line in script.meta.yaml

# after
permissioned_as: /orig-owner@example.com
Defensive patterns

Strategy: validation

Validate before calling

// inspect what a push would re-own before running it
const userEmail = "me@example.com";
for (const f of scriptMetaFiles) {
  const owner = f.match(/^permissioned_as:\s*"?([^\s"#]+)"?/m)?.[1];
  if (!owner || owner === userEmail) console.warn(`${f} would be permissioned_as you after push`);
}

Prevention

When it happens

Trigger: `wmill push` executed by a non-admin, non-`wm_deployers` user where one or more synced scripts/flows/schedules/apps would have their owner email rewritten to the pushing user, AND the `--accept-overriding-permissioned-as-with-self` flag is passed. The message enumerates each path and its current owner.

Common situations: A team member pulls a colleague's script (owned by the colleague or a departed employee) and pushes modifications; ownership silently transfers to them, breaking other users' access. The flag is often added in CI to keep pipelines moving.

Related errors


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