Feature request: Instance-wide minimum schedule interval for Schedule

What problem are you trying to solve?

I’m trying to operate a multi-tenant, self-hosted n8n instance where workflow builders own their own schedules. Today, any user can create a Schedule Trigger or Cron node that fires every second (or every few seconds) — there’s no built-in guardrail an admin can set to enforce a sensible minimum interval.

This impacts self-hosted and enterprise operators because a single misconfigured schedule (e.g., “every 1 second” instead of “every 1 minute”) can:

  • Saturate the executions queue and starve other workflows
  • Hammer downstream APIs and trigger rate-limits / bans for the whole org
  • Inflate execution storage and database growth
  • Run up cloud/compute costs unexpectedly

Right now operators have no declarative way to say “no schedule on this instance may fire more often than every N seconds.”

Proposed solution

Add a new environment variable, N8N_MIN_SCHEDULE_INTERVAL_SECONDS, that enforces a minimum interval (in seconds) for every schedule-driven trigger on the instance.

Ideally it would work like this:

  • New env var N8N_MIN_SCHEDULE_INTERVAL_SECONDS, default 300 (5 minutes). Set to 0 to disable.

  • Enforcement happens at the cron-registration choke-point (ScheduledTaskManager.registerCron) so it covers all schedule-driven triggers uniformly — Schedule Trigger, Cron node, every rule shape (seconds / minutes / weeks-with-multiple-days / raw cron expression).

  • The minimum is computed by taking two consecutive next-fire times from the canonical cron expression, so any rule shape collapses to the same check.

  • If a workflow’s schedule would fire more frequently than the configured minimum, activation fails with a clear UserError:

    Schedule interval too short: minimum allowed is 300s, requested ~5s

  • The check runs both at workflow activation and when workflows are loaded from the DB at startup, so legacy workflows are validated too.

Example use case

  1. A platform team runs a shared self-hosted n8n for ~50 internal builders.
  2. They set N8N_MIN_SCHEDULE_INTERVAL_SECONDS=60 in their deployment.
  3. A builder accidentally configures a Schedule Trigger for “every 1 second” while testing.
  4. On save / activation, n8n rejects the trigger with a clear error explaining the instance-wide minimum, preventing accidental abuse before it hits production.
  5. The platform team can raise/lower the limit globally without touching individual workflows.

Current workaround

Today we have to:

  • Manually audit Schedule Triggers and Cron nodes across all workflows.
  • Add custom middleware / wrappers around the executor to short-circuit too-frequent triggers (brittle and version-dependent).
  • Educate users repeatedly and rely on social enforcement.

None of these scale, and none of them catch a misconfiguration before it starts firing in production.

Why this should be added

This would help every self-hosted operator who shares an instance across multiple users or teams — exactly the audience growing fastest as n8n moves into enterprise deployments. It:

  • Is off-by-default-safe (defaults to a sensible 5 minutes, set 0 to disable entirely).
  • Adds no friction for community/single-user setups — they keep the same defaults or set 0.
  • Centralizes the check in one place so it works for every existing and future schedule-driven trigger.
  • Surfaces a clear, actionable error instead of silent overload.

Additional context