n8n-io/n8n · error · Error
Failed to authenticate with n8n — no session cookie received
Error message
Failed to authenticate with n8n — no session cookie received
What it means
N8nClient.login POSTs to /rest/login with email/password and then inspects the response for an `n8n-auth` cookie. If no session cookie was set, login did not actually authenticate (wrong creds, instance misconfigured, or cookie not returned) and the client cannot make authenticated calls.
Source
Thrown at packages/@n8n/instance-ai/evaluations/clients/n8n-client.ts:225
// -- Auth ----------------------------------------------------------------
/**
* Authenticate with the n8n instance via POST /rest/login.
* Captures the `n8n-auth` cookie for subsequent requests.
*/
async login(email?: string, password?: string): Promise<void> {
// Defaults match the E2E test owner created by the E2E_TESTS=true bootstrap
const loginEmail = email ?? process.env.N8N_EVAL_EMAIL ?? 'nathan@n8n.io';
const loginPassword = password ?? process.env.N8N_EVAL_PASSWORD ?? 'PlaywrightTest123';
await this.fetch('/rest/login', {
method: 'POST',
body: { emailOrLdapLoginId: loginEmail, password: loginPassword },
});
if (!this.sessionCookie) {
throw new Error('Failed to authenticate with n8n — no session cookie received');
}
}
// -- Instance-AI endpoints -----------------------------------------------
/**
* Ensure a conversation thread exists before sending chat messages.
* POST /rest/instance-ai/threads body: { threadId, projectId, source }
*/
async ensureThread(threadId: string, projectId?: string): Promise<void> {
const resolvedProjectId = projectId ?? (await this.getPersonalProjectId());
await this.fetch('/rest/instance-ai/threads', {
method: 'POST',
body: {
threadId,
projectId: resolvedProjectId,
source: 'evals',
origin: 'internal',View on GitHub (pinned to 5ac6606e81)
Solutions
- Verify the credentials (default nathan@n8n.io / PlaywrightTest123 only works on an E2E-bootstrapped instance).
- Confirm the target instance permits password login and is reachable at --base-url.
- If behind a proxy, ensure Set-Cookie headers are forwarded.
Defensive patterns
Strategy: retry
Validate before calling
if (!process.env.N8N_EVAL_EMAIL || !process.env.N8N_EVAL_PASSWORD)
throw new Error('Set N8N_EVAL_EMAIL/N8N_EVAL_PASSWORD or pass credentials'); Try / catch
try { await client.login(); }
catch (e) {
if (e instanceof Error && e.message.includes('no session cookie')) { /* verify creds + base-url, retry once */ }
else throw e;
} Prevention
- Confirm the target instance allows password login before scripting against it.
- Use the E2E bootstrap so the default owner exists.
- Check Set-Cookie forwarding on any proxy.
When it happens
Trigger: Wrong N8N_EVAL_EMAIL/N8N_EVAL_PASSWORD; the n8n instance is not the E2E-bootstraped one (no nathan@n8n.io owner); SSO/LDAP enabled so password login is disabled; cookie domain mismatch.
Common situations: Pointing --base-url at an instance that uses SAML/LDAP only; running before the E2E bootstrap created the test owner; proxy stripping Set-Cookie headers.
Understand the failure class
- Authentication and authorization failures — expired tokens, bad credentials, and missing scopes.
Related errors
- SSE connection failed (${res.status}): ${text}
- MCP api-key rotate endpoint returned no apiKey
- MCP api-key rotate endpoint returned a redacted key — cannot
- Invitation accepted but no session cookie received
- Could not determine personal project ID
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/bb51cfdfc67928f3.
Report an issue: GitHub.