Skip to content
Back to skills

N8n Safe Change

ASecurity

Safety procedure for reading, testing, and changing n8n workflows through the n8n-mcp-guard MCP server. Use whenever a task involves inspecting, cloning, testing, updating, activating, deactivating, publishing, or deleting an n8n workflow, or when an n8n workflow ID or any n8n_* tool comes up.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 19, 2026
ai-agentsnodetestinggit

Works with

  • mcp

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add FarazHayder/n8n-mcp-guard --skill n8n-safe-change --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of N8n Safe Change?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for N8n Safe Change
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/farazhayder-n8n-safe-change/badge)](https://www.skillsdirectory.com/skills/farazhayder-n8n-safe-change)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: n8n-safe-change
description: Safety procedure for reading, testing, and changing n8n workflows through the n8n-mcp-guard MCP server. Use whenever a task involves inspecting, cloning, testing, updating, activating, deactivating, publishing, or deleting an n8n workflow, or when an n8n workflow ID or any n8n_* tool comes up.
---

# Safe n8n workflow changes

Treat every n8n workflow as production infrastructure. Reading and diagnosis
are always allowed. Mutation is gated.

## Building something new

Creating a workflow is not a production change. `n8n_create_workflow` always
creates it inactive, so nothing runs and there is no previous version to lose.
Build it, read it back, and iterate freely. Do not activate it without asking
the user first. Do not impose backup, clone or delivery ceremony on a workflow
that has never run.

## Changing a workflow that already exists

Run these in order. Each is a real tool; do not hand-roll an equivalent.

```text
1. n8n_get_workflow            read it, understand it
2. n8n_plan_workflow_update    backs up + returns a diff and a plan_id
3.   -> show the diff to the user and get agreement
4. n8n_create_test_clone       rehearse: triggers and outbound nodes disabled
5. n8n_delete_test_clone       always, pass or fail
6. n8n_apply_workflow_update   commit the plan_id
```

Steps 2 and 6 are a two-phase commit. The plan records the exact live state
your change was designed against; the apply refuses if anything moved. Do not
try to bypass this by writing a definition directly.

## What the server enforces for you

You do not need to re-implement these, and you must not work around them:

- **Backup before write.** `n8n_plan_workflow_update` writes a
  checksum-verified backup, and `n8n_apply_workflow_update` refuses to run
  unless a valid backup for that exact version still exists.
- **No silent clobbering.** Apply aborts if the version ID moved, or if the
  content changed while the version ID did not.
- **Readback proof.** After saving, the graph is re-read and compared. A
  mismatch is an error, not a success.
- **Clone deletion safety.** `n8n_delete_test_clone` refuses any workflow whose
  name does not mark it as a temporary test clone.

If a tool refuses, that is the safety system working. Report the refusal and
the evidence; do not route around it.

## What you must still do yourself

The server cannot verify these. They are your responsibility.

### Isolated delivery testing, when delivery is what changed

Only when the change affects an email, message or webhook that reaches someone:
the clone must send exactly one real message, with synthetic data, to a
dedicated internal test inbox or test chat. Prefix the subject or body with
`TEST — DO NOT ACTION`. A change that touches no outbound node needs no test
send.

Pass the one node under test to `allow_node_names` so it stays enabled, and
override the destination. Never send to a real customer, a production
recipient, or a production group. If no isolated test destination exists, or
the destination or payload is uncertain, send nothing — stop and ask.

### Verifying receipt

Confirm the execution succeeded, only the expected outbound node ran, exactly
one message was accepted, and the content is correct. An n8n `success` status
alone is not proof of receipt when delivery evidence is available.

### Cleanup

Always delete the clone, pass or fail. Use `n8n_list_test_clones` to confirm
nothing was left behind. Leave no test workflows, triggers, schedules,
webhooks, or executions running.

## Backups are sensitive

Backups may contain production configuration or inline secrets. Never commit,
upload, paste, or share them. If a repository keeps them locally, that
directory must stay git-ignored.

## Fail closed

If any gate fails — backup, isolation, delivery, cleanup, version match, or
readback — or if any uncertainty remains, do not modify production. Stop and
present the evidence and the decision to the user.

Authorization is always scoped to the one workflow and the one behavior
requested. It never extends to unrelated production changes, customer-facing
test messages, bulk sends, or skipping a gate.

## Topology-specific tools

`n8n_test_supplier_email_action_routing` and
`n8n_configure_supplier_email_action_routing` are reference implementations for
one specific workflow shape. They fail closed elsewhere. Prefer the generic
tools above unless you are working on exactly that topology.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…