At a glance
- Does
- Deletes one file outright
- Emits
- deletedPath, success
- Works with
- Any file outside the protected locations and ~/Documents
Set it up
Leave File Path blank and the node takes filePath off the incoming payload. Fill it in to template a path of your own.

Dry Run resolves the path, runs every safety check and returns the same payload without deleting anything. Wire the flow up with it on, watch what it resolves, then turn it off.
Beyond the paths every file node refuses, Delete File also refuses anything under ~/Documents. Permanent deletion there is too easy a mistake to leave open by default — use Move to Trash in that folder, or a Run Script step if you genuinely mean it.
Configure
| Field | Default | What it does |
|---|---|---|
| File Path | — | The file to delete. Blank falls back to filePath on the payload. |
| Dry Run (skip actual delete) | Off | Resolve and validate, then return without deleting. |
| Allow Folders | Off | Let the source be a folder instead of a single file. |
Output
Every key is available downstream as {{key}}.
| Key | Type | Value |
|---|---|---|
deletedPath | String | The path that was deleted, or would have been in a Dry Run |
success | Boolean | Whether the delete succeeded |
dryRun | Boolean | Present and true only when Dry Run skipped the deletion |
Example: delete the archive once it is uploaded
Zip builds the archive, API Request uploads it, a Condition checks the status is 200, and only then does Delete File remove the local copy.

Paste this into the Flow Builder to get the same flow:
Zip ~/Documents/reports, upload the archive, and delete the local zip only if the upload returned 200.
Good to know
Allow Folders widens the blast radius. These nodes act on one file: a folder as the path is refused until you turn Allow Folders on, and then the whole tree goes with it. Your home folder and its top-level folders — Desktop, Downloads, Documents, Pictures, Movies, Music — are never a source, toggle or not; a file inside one is ordinary. A package like .app counts as a file either way.
This is the one node with no way back. It is destructive by identity: the canvas badge, the palette tint and the inspector banner are always on, and any flow containing it asks for confirmation every time it is armed. Put a Condition in front of it so something has to be true before it runs.