n8n-io/n8n · error · Error
DAYTONA_API_KEY is required for sandbox provider "daytona".
Error message
DAYTONA_API_KEY is required for sandbox provider "daytona". Set the Daytona API key.
What it means
Thrown by resolveSandboxConfig when provider is 'daytona' and DAYTONA_API_URL is present but DAYTONA_API_KEY is missing. The API key authenticates sandbox provisioning calls; without it the harness cannot create workspaces.
Source
Thrown at packages/@n8n/instance-ai/evaluations/harness/sandbox-config.ts:43
const providerRaw = env.N8N_INSTANCE_AI_SANDBOX_PROVIDER ?? 'n8n-sandbox';
if (!VALID_PROVIDERS.includes(providerRaw as SandboxProvider)) {
throw new Error(
`Invalid sandbox provider "${providerRaw}". Set N8N_INSTANCE_AI_SANDBOX_PROVIDER to one of: ${VALID_PROVIDERS.join(', ')}.`,
);
}
const provider = providerRaw as SandboxProvider;
const timeout = parseTimeout(env.N8N_INSTANCE_AI_SANDBOX_TIMEOUT) ?? DEFAULT_TIMEOUT_MS;
if (provider === 'daytona') {
const daytonaApiUrl = env.DAYTONA_API_URL;
const daytonaApiKey = env.DAYTONA_API_KEY;
if (!daytonaApiUrl) {
throw new Error(
'DAYTONA_API_URL is required for sandbox provider "daytona". Set it to e.g. https://app.daytona.io/api.',
);
}
if (!daytonaApiKey) {
throw new Error(
'DAYTONA_API_KEY is required for sandbox provider "daytona". Set the Daytona API key.',
);
}
const image = env.N8N_INSTANCE_AI_SANDBOX_IMAGE;
const namePrefix = env.N8N_INSTANCE_AI_SANDBOX_NAME_PREFIX;
const createTimeoutSeconds =
parsePositiveInt(
env.N8N_INSTANCE_AI_SANDBOX_CREATE_TIMEOUT_SECONDS,
'N8N_INSTANCE_AI_SANDBOX_CREATE_TIMEOUT_SECONDS',
) ?? DEFAULT_DAYTONA_CREATE_TIMEOUT_SECONDS;
return {
enabled: true,
provider: 'daytona',
daytonaApiUrl,
daytonaApiKey,
timeout,
createTimeoutSeconds,
...(image ? { image } : {}),View on GitHub (pinned to 5ac6606e81)
Solutions
- Set DAYTONA_API_KEY to a valid Daytona API key for the account associated with DAYTONA_API_URL.
- Verify the variable is present in the eval process env (print `process.env.DAYTONA_API_KEY ? 'set' : 'missing'`).
- If you did not intend daytona, switch the provider back to 'n8n-sandbox'.
Example fix
# before export DAYTONA_API_URL=https://app.daytona.io/api # DAYTONA_API_KEY unset # after — inject via secret manager, never hardcode export DAYTONA_API_URL=https://app.daytona.io/api export DAYTONA_API_KEY=$DAYTONA_API_KEY # from vault/secret manager
Defensive patterns
Strategy: validation
Validate before calling
function daytonaKeyPresent(env: NodeJS.ProcessEnv): boolean {
return env.N8N_INSTANCE_AI_SANDBOX_PROVIDER !== 'daytona' || !!env.DAYTONA_API_KEY;
}
if (!daytonaKeyPresent(process.env)) {
throw new Error('DAYTONA_API_KEY missing; inject via secret manager');
} Type guard
null
Try / catch
try {
resolveSandboxConfig(process.env);
} catch (e) {
if (e instanceof Error && /DAYTONA_API_KEY is required/.test(e.message)) {
// surface to secret manager / CI injection, do NOT log a value
}
throw e;
} Prevention
- Never hardcode the key; inject via vault/secret manager.
- Pair DAYTONA_API_URL and DAYTONA_API_KEY in the same injection step.
- Fail fast at startup with a config self-check.
When it happens
Trigger: Daytona provider selected, URL set, but the key was not injected (e.g. secret manager omitted it); the key var name was typo'd.
Common situations: CI secrets not wired for this run; local .env missing the key; rotating keys and forgetting to update the env.
Related errors
- DAYTONA_API_URL is required for sandbox provider "daytona".
- Invalid sandbox provider "${providerRaw}". Set N8N_INSTANCE_
- N8N_SANDBOX_SERVICE_URL is required for sandbox provider "n8
- Daytona sandbox "${this.id}" is not running
- Workspace has no sandbox
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/dfc04f15f2504f79.
Report an issue: GitHub.