Purge

Use purge tasks to remove old executions and logs, helping reduce storage usage.

The recommended approach is to combine io.kestra.plugin.core.execution.PurgeExecutions with io.kestra.plugin.core.log.PurgeLogs.

  • PurgeExecutions: deletes execution records
  • PurgeLogs: removes both Execution and Trigger logs in bulk

Together, these replace the legacy io.kestra.plugin.core.storage.Purge task with a faster and more reliable process (~10x faster).

id: purge
namespace: company.myteam
description: |
This flow will remove all executions and logs older than 1 month.
We recommend running it daily to prevent storage issues.
tasks:
- id: purge_executions
type: io.kestra.plugin.core.execution.PurgeExecutions
endDate: "{{ now() | dateAdd(-1, 'MONTHS') }}"
purgeLog: false
- id: purge_logs
type: io.kestra.plugin.core.log.PurgeLogs
endDate: "{{ now() | dateAdd(-1, 'MONTHS') }}"
triggers:
- id: daily
type: io.kestra.plugin.core.trigger.Schedule
cron: "@daily"

Purge tasks vs. UI deletion

Purge tasks perform hard deletion, permanently removing records and reclaiming storage. In contrast, deleting items in the UI is a soft deletion—the data is hidden but retained (e.g., revision history and past executions can reappear if a flow with the same ID is recreated).

This distinction matters for compliance and troubleshooting: purge flows are best for cleaning up space, while UI deletions preserve history for auditability.

Renamed Purge Tasks in 0.18.0

We’ve improved the mechanism of the Purge tasks to make them more performant and reliable — some tasks have been renamed to reflect their enhanced functionality.

Here are the main Purge plugin changes in Kestra 0.18.0:

  • io.kestra.plugin.core.storage.Purge has been renamed to io.kestra.plugin.core.execution.PurgeExecutions to reflect that it only purges data related to executions (e.g. not including trigger logs — to purge those you should use the PurgeLogs task) — we’ve added an alias so that using the old task type will still work but it will emit a warning. We recommend using the new task type.
  • io.kestra.plugin.core.storage.PurgeExecution has been renamed to io.kestra.plugin.core.storage.PurgeCurrentExecutionFiles to reflect that it purges all data from the current execution, including inputs and outputs. We’ve also added an alias for backward compatibility, but we recommend updating your flows to use the new task type.