windmill-labs/windmill · warning
Argument not found!
Error message
Argument not found!
What it means
In AddPropertyV2.svelte, once the nested path is resolved, the top-level check confirms the argument exists in `modifiedProperties` before deleting it and cleaning up required/order arrays. Missing argument throws this error, caught and surfaced as a toast.
Source
Thrown at frontend/src/lib/components/schema/AddPropertyV2.svelte:143
if (Object.keys(modifiedProperties).includes(property)) {
modifiedObject = modifiedProperties[property]
modifiedProperties = modifiedObject.properties as object
} else {
throw Error('Nested argument not found!')
}
})
if (Object.keys(modifiedProperties).includes(argName)) {
delete modifiedProperties[argName]
if (modifiedObject.required) {
modifiedObject.required = schema.required.filter((arg) => arg !== argName)
}
if (modifiedObject.order) {
modifiedObject.order = modifiedObject.order.filter((arg) => arg !== argName)
}
} else {
throw Error('Argument not found!')
}
syncOrders(modifiedObject)
schema = $state.snapshot(modifiedObject)
} catch (err) {
sendUserToast(`Could not delete argument: ${err}`, true)
}
}
const trigger_render = $derived(trigger)
</script>
<AddPropertyFormV2
{noPopover}
on:add={(e) => {
try {
handleAddOrEditArgument({
...DEFAULT_PROPERTY,
selectedType: 'string',View on GitHub (pinned to e474e8803c)
Solutions
- Refresh the editor and retry the deletion
- Check exact argument spelling against the schema JSON
- Delete via direct JSON edit if UI state is inconsistent
- Debounce/disable the delete button to prevent duplicate dispatches
Example fix
// before
if (Object.keys(modifiedProperties).includes(argName)) { /* delete */ } else { throw Error('Argument not found!'); }
// after: idempotent delete
if (Object.keys(modifiedProperties).includes(argName)) { /* delete + syncOrders */ } Defensive patterns
Strategy: validation
Validate before calling
if (!modifiedObject?.properties || !(argName in modifiedObject.properties)) {
console.warn(`Argument "${argName}" not present — nothing to delete`);
return;
} Type guard
function canDelete(obj: any, argName: string): obj is { properties: Record<string, unknown>; required?: string[]; order?: string[] } {
return !!obj?.properties && Object.prototype.hasOwnProperty.call(obj.properties, argName);
} Try / catch
try { await handleDeleteArgument(argName); } catch (e) {
if (/Argument not found/.test(String(e))) showInfo('Already removed');
else throw e;
} Prevention
- Make deletes idempotent with an existence check
- Debounce delete dispatches
- Sync schema from server before destructive edits in collaborative settings
When it happens
Trigger: Target argument is absent from the resolved properties object at delete time — duplicate delete dispatch, renamed argument, or outdated schema snapshot.
Common situations: Rapid delete clicks, rename-then-delete with the old name, or schema synced from server after another user removed the argument.
Related errors
- Argument not found!
- Nested argument not found!
- Nested argument not found!
- You can only delete forked workspaces where the workspace id
- Column ${column.field} is not nullable and has no default va
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/87687a3e16c0460c.
Report an issue: GitHub.