windmill-labs/windmill · error
Invalid runnable '${runnableId}': ${debugInfo}. Must have ei
Error message
Invalid runnable '${runnableId}': ${debugInfo}. Must have either inlineScript (for inline type) or type="path" with runType and path fields What it means
Shape validation in the dev server's runnable executor: the runnable object must be either an inline script (has inlineScript) or a path-based reference (type 'path' or legacy 'runnableByPath' plus runType 'script'|'hubscript'|'flow' and a path). It is neither — the debugInfo in the message dumps the actual type/runType/path/hasInlineScript values so the malformed field is visible. The faulting input is a single runnable entry in the app's runnables (often hand-edited YAML/JSON or an app exported from an incompatible version).
Source
Thrown at cli/src/commands/app/dev.ts:1873
runnable.path
) {
// Path-based runnables have type: "path" (or legacy "runnableByPath") and runType: "script"|"hubscript"|"flow"
const prefix = runnable.runType;
requestBody.path = prefix !== "hubscript"
? `${prefix}/${runnable.path}`
: `script/${runnable.path}`;
} else {
// Neither inline script nor valid path-based runnable
const debugInfo =
`type=${(runnable as any).type}, runType=${(runnable as any).runType}, ` +
`path=${(runnable as any).path}, hasInlineScript=${!!(runnable as any)
.inlineScript}`;
log.error(
colors.red(
`[executeRunnable] Invalid runnable configuration for '${runnableId}': ${debugInfo}`,
),
);
throw new Error(
`Invalid runnable '${runnableId}': ${debugInfo}. ` +
`Must have either inlineScript (for inline type) or type="path" with runType and path fields`,
);
}
const uuid = await wmill.executeComponent({
workspace,
path: appPath,
requestBody,
});
return uuid;
}
const ITERATIONS_BEFORE_SLOW_REFRESH = 10;
const ITERATIONS_BEFORE_SUPER_SLOW_REFRESH = 100;
const QUEUE_LOG_INTERVAL_MS = 5000;
View on GitHub (pinned to e474e8803c)
Solutions
- Read the dumped debugInfo: whichever of type/runType/path/inlineScript is wrong points at the broken runnable entry
- Fix the runnable definition: give it a valid inlineScript, or set type: "path" with runType (script|hubscript|flow) and path
- If the app was exported from another Windmill version, re-create the runnable in the editor so it serializes in the current format
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at cli/src/commands/app/dev.ts:1873 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/418580e198ff5fba.
Report an issue: GitHub.