Known Limitations
What's not ready yet — transparency about current platform limitations
Written By Philippe
Last updated 4 days ago
Known Limitations
Transparency matters. Here is what works, what does not, and what to expect.
Node-Specific Limitations
These nodes are supported but have specific constraints:
Code & Function Nodes
- JavaScript only — Python is not supported. Switch the Code node language to JavaScript
- Synchronous JavaScript only — no async/await, no Promises, no fetch()
- No network access — cannot make HTTP calls from code
- No server-side modules — standard library not available
- Secure code sandbox CPU limit (5 seconds to 5 minutes) — Code and Function node JavaScript must finish CPU-bound work within the sandbox CPU budget. The budget starts at a 5-second floor and scales up with the agent's price per run, to a maximum of 5 minutes. This limit applies only to synchronous JavaScript inside the secure code sandbox. Network waits in HTTP Request, LLM, and database nodes use the agent execution limits below instead
$getWorkflowStaticDatais in-memory only — works within a single Code node but not persisted between executions and not shared across nodes. Cross-execution persistence is intentionally unsupported: n8n stores static data as global mutable state in the agent DB record, which is an antipattern that breaks under load balancing, causes race conditions with concurrent executions, and does not scale. Use$('NodeName')to pass data between nodes. For cross-execution state, use an external store (database, key-value service, API)
Wait Node
- Maximum wait: 5 minutes — the same limit as a full agent run. Publishing an agent with a longer wait is rejected. A "specific time" wait whose target is further away stops the run with a clear error
- Webhook and form resume not supported — agents using
resume: webhookorresume: formare rejected when publishing; useTime IntervalorSpecific Timeinstead - A wait holds the run open for its duration. For longer pauses, split work across separate runs with a Schedule Trigger
Webhook Node
- Multiple webhook triggers supported — each gets its own URL
- Supported methods: GET, POST, PUT, PATCH, DELETE, HEAD
- Auth options: Basic Auth, Header Auth
HTTP Request Node
- Bearer and Basic Auth via Secure Vault — Digest and custom auth not supported. OAuth2 is supported via Secure Vault for major services (Google, Microsoft, and others). Custom OAuth scopes and the Test Connection button are not available. Use dedicated integration nodes for OAuth services
- Generic credential Header Auth and Query Auth not supported — when using a Generic Credential Type, the Header Auth and Query Auth options are blocked. Use a Predefined Credential Type instead (e.g., Google Gemini, Slack)
- In-memory binary support — base64-encoded, ~50MB limit per file. No streaming by ID
- 10-second default timeout per request
- Pagination expressions support
$response.body.*,$response.headers.*,$pageCount, and arithmetic (e.g.,$pageCount + 1). No ternary operators or method calls
GraphQL Node
- Header Auth and Query Auth not supported — use Bearer Auth or Basic Auth instead
Merge Node
- combineBySql mode NOT supported — use other merge modes (append, combineByFields, combineByPosition, combineAll)
Item Lists Node
- Sort by Code NOT functional — use simple sort or the dedicated Sort node with a field-based sort instead
- Other operations work: concatenate, limit, summarize, split out items
Sort Node
- Sort by Code not supported — use Sort by Field (simple) or Random instead. Code-based sort requires a Node.js task runner that is not available on the platform
Convert to File Node
- Spreadsheet and document formats not supported — the following output formats require libraries not available on the platform:
- CSV, HTML, XLSX, XLS, ODS, RTF, ICS (iCal)
- Use Move Base64 to File, Convert to JSON, or Convert to Text File as alternatives
Extract from File Node
- Binary document formats not supported — the following extraction formats are not available:
- PDF, XLSX, XLS, ODS, ICS (iCal), HTML table, RTF
- Supported formats: JSON, Text, XML, CSV (plain text), Base64
Remove Duplicates Node
- In-execution dedup only — the following operations require persistent database storage and are not supported:
- Remove Items Seen in Previous Executions
- Remove Items Up To Stored Incremental Key
- Remove Items Up To Stored Date
- Clear Deduplication History
- Use the in-execution dedup mode (removes duplicates within the current run)
Firebase Cloud Firestore Node
- Service Account auth not supported — use OAuth2 via Secure Vault instead
Discord Node
- V2 only — V1 not supported
- Webhook connection type not supported — use Bot Token or OAuth2. A Discord webhook URL is itself the secret, so Secure Vault cannot protect it (see Webhook-URL credentials)
- In-memory binary — file attachments supported via base64 (~50MB limit)
Google Chat Node
- Incoming webhooks not supported — the webhook URL carries its own credentials in the address. Use the Message resource with OAuth2 or Service Account auth (see Webhook-URL credentials)
Telegram Node
- In-memory binary support — direct file/binary uploads via base64 (~50MB limit)
- Can send images/videos via URL or binary
Send and Wait (Multiple Nodes)
The "Send and Wait" operation requires pausing an execution mid-run until a human responds. This pause/resume infrastructure is not available on the platform. Affected nodes:
- Slack, Discord, Telegram, Gmail, WhatsApp, Google Chat, Microsoft Teams, Microsoft Outlook
Use "Send Message" (or equivalent send-only operation) instead.
YouTube Node
- Video upload not supported — resumable video upload requires streams, which are not available. Use Get, Get All, Update, or Rate operations instead
Chat Trigger Node
- Hosted chat mode not supported — use Embedded Chat mode (
mode=webhook) and embed your own chat client - Basic Auth and n8n User Auth not supported — set authentication to
noneand place auth in front of the agent URL - "Make Available in n8n Chat Hub" not supported — this option has no effect on the platform
OpenAI Node
- Text and chat completions only
- Not supported: image generation (DALL-E), audio (TTS), assistants API, file operations
Output Parser Structured
- $ref in JSON schemas not supported — may produce incorrect types
- Use inline schema definitions instead of references
Memory Buffer Window
- 1-week activity TTL — conversation memory auto-expires after 1 week of inactivity
- Memory is scoped per agent instance and session
Agent Node
- V2 and V3 supported — V1 (SQL Agent, Conversational, ReAct, Plan and Execute) requires database access and is not available
Summarization Chain
- JSON input only — binary input mode (
nodeInputBinary) is not supported. Use JSON input or connect a Document Loader
MCP Client Tool / MCP Client Node
- SSE transport not supported — switch to HTTP Streamable transport instead
Default Data Loader
- JSON data type only — binary document loading (PDF, DOCX, etc.) is not supported. Use JSON data type to load text from previous nodes
Credential Limitations
Not Available
These credential features from n8n are not available on indie.money:
- SSL certificate bypass — The platform enforces SSL validation for all connections. Services with self-signed certificates (some self-hosted instances) cannot skip SSL checks. Affected services: ERPNext, Gotify, Grafana, Grist, Mattermost, WordPress, Zammad
- Custom OAuth scopes — OAuth permissions are configured at the platform level with all common scopes included by default. You cannot customize scopes per connection. LinkedIn includes organization posting scopes automatically. Microsoft Teams includes channel message reading. Discord, Linear, and Webflow use API Key authentication which has full access
- Connection testing — The "Test Connection" button from n8n is not yet available. If your credentials are invalid, you will see an error when the agent first tries to use them
Webhook-URL credentials
Some integrations authenticate with a webhook URL — a single address that doubles as the password, because anyone holding it can post as you. Discord webhooks and Google Chat incoming webhooks both work this way.
Secure Vault protects a credential by keeping the secret and attaching it to each outgoing request, so the secret never travels inside your workflow. That requires the secret and the destination address to be separate values. A webhook URL is both at once, so supporting it would mean storing the secret in the workflow in readable form — where anyone who can view the agent could copy it and post to your channel.
Agents using one of these connection types are rejected when you publish, with a message naming the node. Use a connection type that keeps the secret separate from the address:
Service-Specific Credential Limitations
Production-Only OAuth Services
These OAuth services connect to their production environment only. Sandbox/test environments are not configurable through OAuth:
- QuickBooks (Production only)
- Salesforce (Production only)
Self-Hosted Services
Most services with self-hosted options show an environment selector (Cloud / Self-Hosted) that reveals a URL field for your instance. If you do not see this option for a service you self-host, contact support.
Platform Limits
- 30-second CPU-time limit per agent execution — active processing time only, not wall-clock. Time spent waiting on network responses (HTTP Request, LLM calls, database queries) does not count toward this limit
- 5-minute wall-clock timeout — total elapsed time from execution start to end, including all network I/O wait. An agent can spend up to 5 minutes total but no more than 30 seconds of that running CPU-bound code
- 50 MB file size limit — files downloaded or uploaded by nodes must be under 50 MB each. See File Handling & Size Limits for details
- 2 MB execution result JSON limit — per-execution result JSON stored to platform storage is capped at 2 MB (enforced at the platform storage level)
Nodes Not Yet Available
- Database nodes (Postgres, MySQL, Redis, MongoDB) — on the roadmap
- Email nodes (Send Email, IMAP) — requires secure proxy infrastructure
- Some vector stores and embeddings (Supabase, Pinecone, Qdrant, OpenAI, Ollama) are supported. Others are not available.
- Document loaders (binary mode) — JSON mode is available, but binary document loading (PDF, DOCX, EPUB) requires file system access
Expression Engine
- Most standard n8n expressions work fine
- No const/let — use var instead
- No template literals — use string concatenation
- Arrow functions are transformed to ES5 automatically
What We Are Working On
Check the roadmap to see what is planned and vote on what you need most. High-demand features get built first.
Found Something Else?
Use the messaging widget in the bottom corner to report issues. Include what you tried, what happened, and what you expected.