When running a workflow which starts with a chat input via the n8n web gui, the workflow does not progress.
The chat window has a pop-up appear saying “Waiting for you to submit the chat”. The N8N web GUI chat window shows the spinner for a second or two then says ‘Error: Failed to receive response’. A square button also appears at the bottom center of the workflow window with the hint of ‘Stop waiting for webhook call‘.
There are no errors in the docker logs for both n8n and n8n-runners. If ‘feels‘ like the n8n web gui is not sending the chat message to the workflow node in a way it is expecting.
I have removed the n8n and n8n-runners containers and restarted with no change. I have recreated the chat trigger, with no change. I have also tried adding a chat message node at the end of the workflow and setting the chat trigger node to response mode, but again no change.
I can provide the docker compose file if required.
I did a docker pull 2 days ago and have been using the workflows for the last two days without issue. Only today has the issue occured.
Any help would be appreciated.
What is the error message (if any)?
“Waiting for you to submit the chat” –> ‘Error: Failed to receive response’
The message comes up on the chat node instantly and the ‘stop webhook waiting‘ button also appears.
After a second or two the message in the chat response window appears.
I have not tried any other methods as this is how I start these chat oriented workflows. I do have a couple of for loading files and processing DB data which I start with a “When execute workflow is pressed“ trigger and they start without an issue.
Have just tried kicking off the workflow via a n8n form and it works fine. It is just the chat trigger and n8n gui communicating with each other that seems to be not working.
Ok, have done some testing after spending a week trying to get the respond to webhook working with JSON and failing…
Removing all containers and images then redownloading made no difference. Removing all persistent data and loading the workflow from a downloaded backup made no difference.
Regressing back to 2.10.3 (from 2.11.1 (IIRC), made no difference.
Regressing to 1.123.21 and changing to n8n_runners: Internal resolved the problem. The chat trigger is now working.
So it seems either the the move from 1.xx to 2.xx has broken something with this node or moving from internal to external runners is the cause.
Does anyone know what the highest version that can be run with internal runners is ?. I moved to external runners as it seems it is forced with more recent versions.
I will take the issues I have been fighting with (re: respond to webhook with JSON) in a separate thread.
Great detective work tracking this down to the internal vs external runners setting!
To answer your question directly: internal runners were officially deprecated in favor of external runners starting with n8n v1.x releases, and by the 2.x line, external runners became the default. However, you can still force internal runners by setting the environment variable N8N_RUNNERS_MODE=internal in your docker-compose — this is supported up to at least 2.10.x as far as I know, though it may show a deprecation warning.
The actual root cause of the chat trigger failure with external runners is typically a WebSocket/proxy configuration issue. When using external runners, the chat trigger relies on WebSocket communication between the runner process and the n8n main instance. If you’re running n8n behind a reverse proxy (nginx, Traefik, etc.), you need to make sure WebSocket upgrade headers are properly forwarded. The ‘Error: Failed to receive response’ message is a classic symptom of a WebSocket connection that’s established but then silently dropped.
Here are the things worth checking:
If using nginx: make sure you have proxy_http_version 1.1, proxy_set_header Upgrade $http_upgrade, and proxy_set_header Connection ‘upgrade’ in your config
Check your N8N_RUNNERS_TASK_TIMEOUT environment variable — if tasks are timing out before the response comes back, increase this value (default is 60 seconds)
Verify N8N_WEBHOOK_URL is set correctly and accessible from both inside and outside your Docker network
If you have N8N_RUNNERS_MAX_CONCURRENCY set very low, it could cause queuing issues
If you want to stay on external runners (which is the recommended path going forward), fixing the WebSocket proxy config is usually the right solution. Happy to help debug if you can share your docker-compose or nginx config!
Thanks for the reply. Yep I am running it in a home lab and behind a NPM instance as it is on a remote server in my rack.
Oh how I love proxy server configs .
Ok, I have deleted and recreated the n8n npm proxy host record (trying to update it was causing ‘internal error‘ messages which is not uncommon in my experience).
I have also checked and made small changes to .env (domain and subdomain) and the docker compose.
Again my original settings have been working fine with 1.x so something has definitely changed in 2.x causing them not to work with the chat trigger. Interestingly the form trigger and webhook triggers both worked on 2.x, just not the chat trigger.
I can now kick off the workflow with the chat trigger with 2.10.4. but it errors rather than returning the result in the chat window (which is preferred as it has some formatting I require.
Current error after 1 or 2 mins running.
<html>\\r\\n<head><title>504 Gateway Time-out</title></head>\\r\\n<body>\\r\\n<center><h1>504 Gateway Time-out</h1></center>\\r\\n<hr><center>openresty</center>\\r\\n</body>\\r\\n</html>\\r\\n<!-- a padding to disable MSIE and Chrome friendly error page -->\\r\\n<!-- a padding to disable MSIE and Chrome friendly error page -->\\r\\n<!-- a padding to disable MSIE and Chrome friendly error page -->\\r\\n<!-- a padding to disable MSIE and Chrome friendly error page -->\\r\\n<!-- a padding to disable MSIE and Chrome friendly error page -->\\r\\n<!-- a padding to disable MSIE and Chrome friendly error page -->\\r\\n"
I have tried increasing the N8N_WEBHOOK_TTL to 3000 (just for testing) and no change.
The workload runs for around 7 minutes (ai agent in there).
Did some googling and am not using any tunnel options (AFAIK).
Thanks for the advice and offer of help, much appreciated.
Removing all networks from the docker-compose.yml has no effect on the issue.
The workflow can run and complete normally but it needs to complete within a timeout period (I have no idea where this can be adjusted - N8N_WEBHOOK_TTL does not seem to affect it).
I have a branch on the same workflow to reset the sessionId in the ai agent persistant memory and this works as expected.
The issue only occurs when the workflow runs past a timeout period (i.e. using an ai agent that takes a while to fully respond).
Hi @Rimblock Understood, glad it helped. I would recommend try using Webhook and Respond To Webhook and does that shows the same issue. Although i am personally facing that issue also so if this webhook worked and upgrading your instance gives the same error it is better to report this as a BUG in here:
From testing, the webhook / respond webhook seems to be working but it has been a total nightmare trying to format the output from my Ai Agent in to a json format with text formatting that the respond webhook will accept without erroring.
TBH I like the chat trigger as the response cam back and could be copy / pasted straight in to a Word document keeping the format (titles / bullet points etc) without extra manual intervention.
If there is an easy option to enable the same with the webhook etc nodes then would love to hear .