{"record":{"id":"5ff6e427cd301f58","repo":"windmill-labs/windmill","slug":"warning-you-are-not-an-admin-or-member-of-wm-dep","errorCode":null,"errorMessage":"Warning: 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}","messagePattern":"Warning: You are not an admin or member of 'wm_deployers'\\. The following (.+?) item\\(s\\) will have their permissioned_as/email changed to your user \\((.+?)\\):\n(.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"cli/src/core/permissioned_as.ts","lineNumber":187,"sourceCode":"    }\n\n    if (currentOwner && currentOwner !== userEmail) {\n      wouldChangeItems.push({ path: change.path, currentOwner });\n    }\n  }\n\n  if (wouldChangeItems.length === 0) return;\n\n  const itemList = wouldChangeItems\n    .map((item) => `  - ${item.path} (current owner: ${item.currentOwner})`)\n    .join(\"\\n\");\n\n  const message =\n    `You are not an admin or member of 'wm_deployers'. The following ${wouldChangeItems.length} item(s) ` +\n    `will have their permissioned_as/email changed to your user (${userEmail}):\\n${itemList}`;\n\n  if (acceptOverride) {\n    log.warn(colors.yellow(`Warning: ${message}`));\n    return;\n  }\n\n  if (isInteractive) {\n    log.warn(colors.yellow(message));\n    const proceed = await Confirm.prompt({\n      message:\n        \"Do you want to proceed? (use --accept-overriding-permissioned-as-with-self to skip this prompt)\",\n      default: false,\n    });\n    if (!proceed) {\n      log.info(\"Push cancelled.\");\n      process.exit(0);\n    }\n  } else {\n    log.error(\n      colors.red(\n        `${message}\\n\\nUse --accept-overriding-permissioned-as-with-self to proceed anyway.`","sourceCodeStart":169,"sourceCodeEnd":205,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/cli/src/core/permissioned_as.ts#L169-L205","documentation":"During `wmill push`, if items on the server are owned (permissioned_as) by another user/email and the current user is neither an admin nor a member of the 'wm_deployers' group, the CLI must reassign ownership to the pushing user. This warning (or interactive confirm) tells you which items will have their permissioned_as/email changed to your user, because non-admins cannot preserve another owner's identity.","triggerScenarios":"Running `wmill push` while logged in as a non-admin, non-wm_deployers user, on a workspace where some pushed items are permissioned_as another user or have a different email; items would be silently re-owned, so the CLI warns/prompts.","commonSituations":"Deploying with a personal service account instead of a shared deployer account; pushing a teammate's exported scripts; CI bot account lacking wm_deployers membership; after workspace permission restructuring.","solutions":["Add your deploy account to the 'wm_deployers' group (as admin) so it can preserve original ownership.","Run push with `wmill push --allow-...`/accept override if you accept the re-ownership (non-interactive flag).","Run as an admin account or use an admin token for the push.","Review the listed items; if the ownership change is intended, confirm interactively."],"exampleFix":"// before (non-admin push re-owners items)\nwmill push  # Warning: 12 item(s) will have their permissioned_as/email changed\n// after: admin adds deploy account to deployers group, then\nwmill push  # no warning, ownership preserved","handlingStrategy":"validation","validationCode":"// before pushing, check membership\nconst groups = await fetch(`${baseUrl}/api/w/<ws>/groups`, { headers: { Authorization: `Bearer ${token}` } }).then(r => r.json());\nconst isDeployer = groups.some(g => g.name === 'wm_deployers');\nif (!isDeployer) console.warn('Non-deployer push will re-own foreign items');","typeGuard":"null","tryCatchPattern":"// interactive: answer the Confirm prompt explicitly\nconst proceed = await Confirm.prompt('Re-own listed items?');\nif (!proceed) throw new Error('push aborted by user');","preventionTips":["Use a dedicated deploy account that belongs to 'wm_deployers' for pushes.","Admins should add CI/service users to wm_deployers at workspace setup time.","Review `wmill push` output for the item list before confirming.","Avoid pushing with personal admin tokens that later get rotated."],"tags":["cli","push","permissions","ownership"],"backgroundTag":"insufficient-permissions","analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}