windmill-labs/windmill · error
A variable was created at ${path} while this setup was runni
Error message
A variable was created at ${path} while this setup was running. Choose another path and try again. What it means
writeSecret claims a variable path and, if the claim holds, updates the existing variable. Before updating it re-verifies via stillOurs that the variable found at the path is the one this setup claimed; if someone else created/took the path in the meantime, it throws pathTakenLate('variable', path) — this exact message.
Source
Thrown at frontend/src/lib/components/workspaceSettings/addDataTableModel.ts:485
return 'kept'
}
}
/**
* The read answers both questions at once: whether anything is there, and who last wrote it.
* Replacing this run's own work is required for Try again; replacing anyone else's loses a
* generated Supabase password, which Supabase never shows twice.
*/
async function writeSecret(
deps: RunDeps,
claims: Claims,
path: string,
value: string,
description: string
): Promise<Claims> {
const held = await secretMark(deps, path)
if (held) {
if (!stillOurs(claims, 'secret', path, held)) throw new Error(pathTakenLate('variable', path))
await VariableService.updateVariable({
workspace: deps.workspace,
path,
requestBody: { value, is_secret: true }
})
} else {
await VariableService.createVariable({
workspace: deps.workspace,
requestBody: { path, value, is_secret: true, description, is_oauth: false }
})
}
return claim(claims, 'secret', path, (await secretMark(deps, path)) ?? deps.username)
}
/**
* A revision, not an author: the same person editing the variable in another tab leaves
* `edited_by` unchanged, and that write is no more ours to discard than a stranger's.
* `undefined` when nothing is there.View on GitHub (pinned to e474e8803c)
Solutions
- Pick a different variable path for the secret and rerun the setup
- Remove or rename the conflicting variable (or ask its owner to) and rerun the setup
- Serialize workspace setup: only one admin runs the wizard at a time
Defensive patterns
Strategy: retry
Validate before calling
const existing = await VariableService.getVariable({ workspace, path }).catch(() => null)
if (existing && !isOurClaim(existing)) console.warn(`Variable '${path}' already exists — choose another path`) Try / catch
try {
await runSetup(...)
} catch (e) {
if (String(e.message).includes('A variable was created at')) {
// prompt for a new variable path and retry the setup
}
} Prevention
- Coordinate variable paths across admins before running the setup
- Use namespaced paths (e.g. f/my_setup/...) unlikely to collide
- Don't leave a half-finished setup wizard open while someone else configures the workspace
When it happens
Trigger: Another admin creates a variable at the same path while the add-data-table setup is running, between the setup's initial secretMark claim and the VariableService.updateVariable call.
Common situations: Two admins running the data-table setup concurrently; an automation or teammate creating the same variable path (e.g. u/root of the database) mid-setup.
Related errors
- An empty string is not a valid value for secret variable "${
- Cannot make variable "${args.path}" secret without a value:
- Cannot turn secret variable "${args.path}" into a non-secret
- Draft variable "${draftValue.path}" is secret but stages no
- A data table called ${name} was created while this setup was
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/1674d3a6be04482f.
Report an issue: GitHub.