Hello,
I would like to propose an improvement to the Guardrails node, based on a very concrete use case in an existing workflow.
Current issue
Today, when the Guardrails node detects a violation (e.g. secretKeys, PII, etc.), it does not return the original input as-is.
As a result:
-
The output is fragmented (
checks,detectedSecrets, flags, etc.) -
The initial input (text, JSON, enriched content) is no longer directly usable
-
Integrating Guardrails into an already-in-production workflow becomes painful, sometimes even blocking
In real-world workflows, Guardrails is usually an intermediate validation node, not a terminal one.
Not being able to easily retrieve the input prevents:
-
Clean conditional routing (pass / fail)
-
Reuse of the validated content
-
Compatibility with existing chains (LLM → Guardrails → post-processing)
Expected behavior
Ideally, the Guardrails node should offer at least one of the following options:
-
Return the original input as-is
e.g.output.originalInput -
Optional “pass-through” mode
-
No violation → output = input + metadata
-
Violation → output = input + violations
-
-
Simple toggle
Include original input in output
This would make it possible to:
-
Insert Guardrails without breaking existing workflows
-
Avoid workaround nodes (unnecessary Set / Merge nodes)
-
Keep Guardrails as a true control/validation node, not a dead end
Why this matters
In complex workflows (especially involving LLMs, CMS, RAG, or automated publishing), Guardrails needs to be:
-
Non-destructive
-
Transparent
-
Easily chainable
Today, its behavior forces users to manually rebuild what already existed in the input.