I built NoCrash to catch the n8n runs that stay green but did nothing (missed runs, empty success)

Quick disclosure first: I am the founder of NoCrash (n8n reliability), so this is my own tool. I am sharing it here because it is built around an n8n problem that kept biting me, and I think the approach is worth talking through even if you never touch the product.

The problem is that a green execution is not proof the work actually happened. A workflow can finish successfully and still have done nothing useful. The schedule quietly stops firing while the workflow stays Active and the log just shows nothing. A token expires and the run comes back as an empty success. A node trips Continue-on-Fail, the run still closes green, and the thing you cared about never ran. You usually find out when the client does, which is the worst time to find out.

So I built something that watches the outcome from outside the run instead of trusting the green checkmark. The two catches that matter most: first, missed runs. It learns each workflow’s own cadence from its history and tells you when an expected run did not happen, with a grace band so a slightly late run is not a false alarm. The dashboard still says Active, the log is empty, and you still get told. Second, the Continue-on-Fail case. It reads the error signal n8n itself records, so even when the overall execution comes back green, if a node trapped an error it surfaces that with the node name in plain English. It does not guess from empty output, because plenty of nodes return nothing on purpose.

On the trust side, since people always ask: it connects with a read-only API token (workflow:list and execution:list only), stores metadata rather than your payloads, and never touches workflow definitions, credentials or env vars.

If you want to see the idea without signing up, there is a free grader that scores a workflow JSON for these failure modes: n8n Workflow Grader — is your workflow safe to run? | NoCrash . Happy to answer anything about how it works under the hood.

How is everyone else catching the silent ones today, or are you mostly finding out after the fact?

2 Likes

Welcome @dima_automation!

The “Continue-on-Fail giving a green run” case is one of the trickiest to catch because n8n’s built-in error workflow only fires on actual execution failures, not on empty outputs or silently failed nodes. Watching from outside the run is the right call for this.

One thing that would pair well with this: for the missed-run detection, does NoCrash also account for workflows that were manually deactivated mid-period? That edge case often trips up schedule monitors - a workflow goes dark intentionally but the alert fires anyway.

2 Likes

Thanks for the welcome, and you said the Continue-on-Fail case better than I did. On the deactivated case, good catch, that false alarm is exactly why the missed-run check only runs on scheduled watches that are not paused. If you take one down on purpose, pausing the watch drops it out of missed-run so it stays quiet. And the miss only fires for a scheduled flow that is still meant to be running but the expected run did not happen, against a cadence learned from that flow’s own history with a grace band, so a slightly late run is not flagged. Event and webhook flows are left out of missed-run entirely and watched on outcome instead. There is a fuller write-up of what it catches in the docs if you want to dig: Developer docs — NoCrash . Curious what other edge cases you have run into, you clearly look at this from the operator side.

1 Like