n8n-io/n8n · error · Error
No computer-use daemon is paired with this n8n instance. Ei
Error message
No computer-use daemon is paired with this n8n instance.
Either re-run without `--no-auto-start-daemon`, or start one manually:
npx @n8n/computer-use ${baseUrl} \
--dir <path-to-a-dedicated-sandbox-dir> \
--auto-confirm \
--permission-filesystem-read allow \
--permission-filesystem-write allow \
--permission-shell allow \
--permission-browser allow
(The daemon prints a pairing token on startup that you paste into the n8n UI once.) What it means
Thrown by `ensureDaemon()` in computer-use/daemon.ts when the gateway status query reports no paired daemon AND `opts.autoStart` is false. The `--no-auto-start-daemon` flag sets autoStart=false, telling the runner NOT to spawn a daemon itself; if none is already paired, the run cannot proceed. The message is built by `noDaemonHint(baseUrl)` and includes the exact `npx @n8n/computer-use ...` invocation with the right permissions and the pairing-token flow.
Source
Thrown at packages/@n8n/instance-ai/evaluations/computer-use/daemon.ts:78
export async function ensureDaemon(opts: EnsureDaemonOptions): Promise<DaemonInfo> {
const { client, logger } = opts;
let status = await client.getGatewayStatus();
if (status.connected && status.directory) {
logger.verbose(`[daemon] already paired, dir=${status.directory}`);
// Auto-connect (N8N_EVAL_AUTO_BROWSER_CONNECT=1) is set on the daemon's
// own process env at spawn-time, so it only takes effect when the eval
// runner started the daemon. A pre-existing daemon won't have it.
logger.warn(
'Reusing existing computer-use daemon. If it was not started by this eval runner, ' +
'browser auto-connect may be inactive — you may need to click Connect in the ' +
'extension manually when the browser session resets between scenarios.',
);
return toInfo(status);
}
if (!opts.autoStart) {
throw new Error(noDaemonHint(opts.baseUrl));
}
const usePublished = opts.usePublishedDaemon ?? false;
if (!usePublished && !existsSync(LOCAL_COMPUTER_USE_CLI)) {
throw new Error(
`Local computer-use build not found at ${LOCAL_COMPUTER_USE_CLI}.\n` +
'Build it first:\n' +
' pnpm --filter @n8n/computer-use --filter @n8n/mcp-browser build\n' +
'\n' +
'Or pass --use-published-daemon to spawn the released package via npx instead.',
);
}
const sandboxDir = opts.daemonSandboxDir ?? join(opts.evalOutputDir, 'daemon-sandbox');
await mkdir(sandboxDir, { recursive: true });
const logPath = join(opts.evalOutputDir, 'daemon.log');
const { token } = await client.createGatewayLink();View on GitHub (pinned to 5ac6606e81)
Solutions
- Either drop `--no-auto-start-daemon` so the runner auto-spawns and pairs a daemon, OR
- Start a daemon manually using the exact command from the error message: `npx @n8n/computer-use <baseUrl> --dir <sandbox> --auto-confirm --permission-filesystem-read allow --permission-filesystem-write allow --permission-shell allow --permission-browser allow`, then paste the pairing token into the n8n UI once.
- Confirm the daemon was started against the SAME `--base-url` the eval is targeting; a daemon paired with a different instance won't show as connected.
Example fix
// before $ node cli.ts --no-auto-start-daemon --base-url http://localhost:5678 // after (option A — let the runner spawn it) $ node cli.ts --base-url http://localhost:5678 // after (option B — start it yourself) $ npx @n8n/computer-use http://localhost:5678 --dir /tmp/cu-sandbox --auto-confirm --permission-filesystem-read allow --permission-filesystem-write allow --permission-shell allow --permission-browser allow # paste the pairing token into n8n, then: $ node cli.ts --no-auto-start-daemon --base-url http://localhost:5678
Defensive patterns
Strategy: validation
Validate before calling
// Pre-flight: if autoStart is off, confirm a daemon is paired before running.
const status = await client.getGatewayStatus();
if (!opts.autoStart && !(status.connected && status.directory)) {
throw new Error(noDaemonHint(opts.baseUrl)); // surface the same hint early
} Prevention
- When iterating with `--no-auto-start-daemon`, keep a daemon running in a separate terminal pointed at the same `--base-url` so re-runs reuse it.
- After switching `--base-url`, re-confirm the daemon is paired for that instance before relying on `--no-auto-start-daemon`.
- In CI, either let the runner auto-start, or start the daemon and pair it explicitly as a setup step.
When it happens
Trigger: Run the eval with `--no-auto-start-daemon` on a fresh n8n instance where no daemon has ever paired. Run after deleting/rotating the n8n database so the previously stored pairing is gone. Run against a remote n8n instance (`--base-url https://...`) where the daemon you have running locally is paired with a different instance.
Common situations: Developers use `--no-auto-start-daemon` to avoid the 90s pairing timeout during iteration, then forget to start the daemon manually. Running against a CI-provisioned n8n where the daemon side hasn't been started. Switching `--base-url` between local and a teammate's instance invalidates the pairing.
Related errors
- Local computer-use build not found at ${LOCAL_COMPUTER_USE_C
- Daemon spawned (pid ${pid}) but did not pair within ${String
- Unknown flag: ${arg.split('=', 1)[0]}
- Unexpected positional argument
- Missing value for ${flag}
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/9224655216956dcd.
Report an issue: GitHub.