Description
n8n-nodes-veefore
Run protected actions from n8n workflows and AI agents through
Veefore: policy, risk, human approval and a
credential broker, decided at the Veefore gateway. The workflow never holds the
provider secret, and a refused action never happens.
Full guide:
Install
- n8n UI: Settings → Community nodes → Install →
n8n-nodes-veefore - Self-hosted:
npm install n8n-nodes-veeforein~/.n8n/nodes, or build this - Key ID (
key_…): names the agent’s key. - Connection Secret (
vfsecret…): the key’s private half, shown once in - Gateway URL: prefilled with
https://gateway.veefore.com. - Run Tool: pick a tool (listed live from Veefore) and fill its fields,
- Check Only: the decision without running anything.
- List Tools and Get Approval.
- Actions: empty means all of the app’s actions. Pick some to offer only
- Fields (an app Veefore performs): the fields its actions require, each
- Purpose: shown to approvers. By default the model says why with each
- n8n performs the app: the node shows an n8n Tools input. Connect
package and point N8NCUSTOMEXTENSIONS at a directory containing it
(n8n then names the node CUSTOM.veefore)
Restart n8n afterwards.
Set up in Veefore first
In the Veefore console open Integrations → n8n: choose or create the agent
n8n acts as, tick the tools it may use, and create the connection secret. You
get two values.
Credential: Veefore API
the console. It only signs a two-minute identity assertion; Veefore never
receives it, and it grants nothing beyond the agent’s own tools and policy.
Saving the credential tests it against the gateway.
Operations
built from the tool’s parameter schema; or send JSON. Three outputs:
Allowed, Refused and Needs Approval. Whether a person must
approve is decided by your Veefore policy. By default the node waits for that
decision, for as long as the approval is open, then runs the approved action
or routes to Refused; or choose to continue on Needs Approval without
waiting.
Veefore Tools (for an AI Agent)
Connect Veefore Tools to an AI Agent’s Tool input and pick one of the
agent’s apps (WhatsApp, Gmail, Stripe, …): its actions are offered to the
model as tools, the model picks the one each request needs, and Veefore decides
every call. Add one node per app, as with n8n’s own tool nodes. Who performs
the app, its credential and its account values are set once in Veefore.
those, or let the model decide (✨) with a hint on how to choose.
Defined automatically by the model (✨, with an editable hint) until you
set a value, which is then fixed for every action that has the field and
never shown to the model. Every other field is filled by the model; add it
under “Add field to send” to set it or steer the model. Account setup such
as a WhatsApp phone number ID is set once in Veefore (Fixed values):
applied to every call, never offered to the model.
call (✨); or write it.
n8n’s own tools for its actions (Gmail, Slack, HTTP Request, …) there
instead of to the agent, and set their fields in those tools. An app Veefore
performs shows the input for its actions only n8n can perform. Each runs only
after Veefore allows that exact call. Tools wired in for anything else are
not offered.
The model sees each action by a name led by its app
(whatsappbusinesscloudsendmessage).
Allowed: it runs once. Refused: nothing runs, and the model is told why. Needs
approval: the node waits up to Wait for a Decision (2 minutes by default).
Still undecided, the agent answers, and the action still happens, once, when a
person approves it: Veefore carries out its own actions, and the node runs the
n8n tool for the ones n8n performs (while n8n keeps running; after a restart,
the user asks again and the identical call goes ahead without a second
approval). No answer from Veefore means nothing runs.
After n8n runs a tool Veefore allowed, the node reports the result, so a
failed send shows as Failed in Veefore’s Actions. Before an approved
request runs, Veefore checks the n8n tool is still in the workflow.
Breaking in 3.0.0: Veefore Tool (one action per node) and **Veefore
Guard** were removed (first shipped in 2.3.0). Replace either with Veefore
Tools and add the same action.
New in 3.4.0: a new Veefore Tools node (version 3) holds one app, and the
model picks among its actions. Nodes added earlier keep working: several
actions per node (before 3.3.0) or one action per node (3.3.x).
New in 3.5.0: several items in one request (“delete every draft”) are one
call and one approval. An action Veefore performs takes veefore_batch, one
entry per item with what it is (a draft’s subject); approvers see one card,
get one notice and decide all of them at once, and each item stays bound to
its own values and is used once. The node waits once, then carries out what
was approved and hands the rest to Veefore. Calls of the same action in one
run join the card while it waits. An action that needs an ID tells the model
to look it up with the app’s list or search actions instead of asking the
user for it, and Gmail’s lists now return each draft’s or message’s subject
when Veefore performs them. Applies to every node version.
Important
Installing this node does not protect a workflow that also contains a direct
Gmail, HTTP Request or Code node. Register the instance in Veefore so it can
verify the workflows and report those paths.
Build
npm install --ignore-scripts
npm run build # n8n-node build
npm run lint # n8n-node lint, including the n8n Cloud checks
No runtime dependencies; only n8n-workflow (peer) and node:crypto.
Compatible with n8n 1.x and 2.x; verified on 2.43.7.
Publishing and n8n Cloud verification
n8n Cloud installs only verified community nodes. Verification requires a
package published to npm from GitHub Actions with a provenance statement,
and npm generates provenance only from a public repository.
1. Create a public GitHub repository (for example n8n-nodes-veefore) and copy
this directory into its root, including .github/workflows/publish.yml.
2. On npmjs.com, publish once by hand only if the name must be reserved;
otherwise let the workflow do the first publish. Then open the package →
Settings → Publish access → Trusted Publishers → Add → GitHub Actions:
your organization, the repository name, workflow publish.yml.
3. In the repository: npm run release. It lints, builds, bumps the
version, tags and pushes; the tag runs the workflow, which publishes with
provenance.
4. Check the published package: npx @n8n/scan-community-package n8n-nodes-veefore.
5. Submit it in the n8n Creator Portal. n8n reviews
it against its technical and UX guidelines; on approval it appears in the
nodes panel of n8n Cloud.