windmill-labs/windmill · warning
${def.badge} triggers manage cloud subscriptions at creation
Error message
${def.badge} triggers manage cloud subscriptions at creation — fill in the imported resource, then re-create this trigger manually What it means
createWorkspaceTriggerDisabled blocks trigger kinds marked `provisionsOnCreate` in TRIGGER_KINDS (e.g. cloud-subscription triggers like SQS/GCP/Azure). Such triggers manage cloud subscriptions at creation time, so they cannot be auto-created from an imported project; the user must fill in the imported resource and create the trigger manually. `def.badge` names the specific trigger family in the message.
Source
Thrown at frontend/src/lib/components/triggers/workspaceTriggersList.ts:414
export async function createWorkspaceTriggerDisabled(
workspace: string,
trigger: {
kind: string
path: string
script_path: string
is_flow: boolean
summary?: string | null
config?: Record<string, any> | null
},
opts: { hasEeLicense: boolean }
): Promise<unknown> {
const def = TRIGGER_KINDS[trigger.kind as WorkspaceTriggerKind]
if (!def) throw new Error(`trigger kind '${trigger.kind}' not supported yet`)
if (def.eeOnly && !opts.hasEeLicense) {
throw new Error(`trigger kind '${trigger.kind}' requires Enterprise`)
}
if (def.provisionsOnCreate) {
throw new Error(
`${def.badge} triggers manage cloud subscriptions at creation — fill in the imported resource, then re-create this trigger manually`
)
}
// Remote input: only the allowlisted portable slice may reach the create call.
const config = portableTriggerConfig(trigger.kind, trigger.config)
if (trigger.kind === 'schedule') {
// Spread the portable config first so behavioral settings survive the
// import (cron_version, retry, failure/recovery/success handlers,
// no_flow_overlap, …) — restoring only cron+timezone would silently
// change the schedule's semantics once re-enabled.
return ScheduleService.createSchedule({
workspace,
requestBody: {
...config,
path: trigger.path,
schedule: (config.schedule as string) ?? '0 0 * * * *',
timezone: (config.timezone as string) ?? 'UTC',
script_path: trigger.script_path,View on GitHub (pinned to e474e8803c)
Solutions
- Complete the imported resource configuration (settings/path) in the UI, then create the trigger manually as the message instructs.
- Skip provisioning triggers during install and surface a completion checklist to the user.
- If the trigger should not provision, verify the kind's TRIGGER_KINDS definition is correct (provisionsOnCreate flag).
- Provide the required cloud credentials/resources first, then re-add the trigger by hand.
Example fix
// before
await createWorkspaceTriggerDisabled(trigger, opts) // throws for provisionsOnCreate
// after
const def = TRIGGER_KINDS[trigger.kind as WorkspaceTriggerKind]
if (def?.provisionsOnCreate) {
manualSteps.push(`create ${trigger.kind} trigger manually after configuring the resource`)
continue
}
await createWorkspaceTriggerDisabled(trigger, opts) Defensive patterns
Strategy: validation
Validate before calling
function triggerProvisionsOnCreate(kind: string): boolean {
return TRIGGER_KINDS[kind as WorkspaceTriggerKind]?.provisionsOnCreate === true
}
// before install:
const manual = triggers.filter(triggerProvisionsOnCreate) Type guard
function requiresManualProvisioning(k: WorkspaceTriggerKind): boolean {
return TRIGGER_KINDS[k]?.provisionsOnCreate === true
} Try / catch
try {
await createWorkspaceTriggerDisabled(trigger, opts)
} catch (e) {
if (String(e).includes('manage cloud subscriptions at creation')) {
manualSteps.push(`${trigger.kind}: configure the imported resource, then create the trigger manually`)
return null
}
throw e
} Prevention
- Split provisioning triggers out of project installs into a manual checklist
- Configure the underlying cloud resource before attempting trigger creation
- Document provisioning triggers in template docs so installers expect manual steps
- Check provisionsOnCreate before batch-installing triggers
When it happens
Trigger: installProject encounters a trigger whose TRIGGER_KINDS def has provisionsOnCreate: true (a trigger that would provision a cloud subscription if created).
Common situations: Installing a project template that includes cloud-backed triggers (SQS, GCP, Azure subscription triggers) where the cloud resource/subscription cannot be safely provisioned from the import.
Related errors
- trigger kind '${trigger.kind}' not supported yet
- trigger kind '${trigger.kind}' requires Enterprise
- error (from getWorkspaceMutationTargetError)
- Failed to create ${triggerConfig.label} "${requestBody.path}
- Unknown CaptureTriggerKind: ${kind}
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/98630279fad60290.
Report an issue: GitHub.