n8n-io/n8n · error · Error

${toolName} host runner does not support inline delegation w

Error message

${toolName} host runner does not support inline delegation without helpers.runInlineSubAgent from an Agent build.

What it means

Thrown by the default runInlineSubAgent helper returned from createRunnerHelpers. This helper is a stub that always throws, because true inline delegation requires the Agent build to wire the actual inline runner. When the host path (runSubAgent) is used without an Agent build, inline delegation is not available and this error surfaces if the child's provider or tool logic tries to use it.

Source

Thrown at packages/@n8n/agents/src/runtime/tools/delegate-sub-agent-tool.ts:807

function getChildCheckpointTarget(checkpoint: DelegateSubAgentContinuation) {
	return {
		childRunId: checkpoint.runId,
		childToolCallId: checkpoint.toolCallId,
		...(checkpoint.threadId !== undefined ? { childThreadId: checkpoint.threadId } : {}),
		...(checkpoint.resumeContext !== undefined ? { resumeContext: checkpoint.resumeContext } : {}),
	};
}

function createRunnerHelpers(
	ctx: ToolContext | InterruptibleToolContext,
	request: DelegateSubAgentRequest,
	configuredToolName?: string,
): DelegateSubAgentRunnerHelpers {
	const toolName = configuredToolName ?? DELEGATE_SUB_AGENT_TOOL_NAME;
	return {
		runInlineSubAgent: () => {
			throw new Error(
				`${toolName} host runner does not support inline delegation without helpers.runInlineSubAgent from an Agent build.`,
			);
		},
		emitChunk: createEmitChunkHelper(ctx, request),
	};
}

function isInterruptibleToolContext(
	ctx: ToolContext | InterruptibleToolContext,
): ctx is InterruptibleToolContext {
	return 'suspend' in ctx;
}

async function cascadeChildSuspension(
	ctx: InterruptibleToolContext,
	request: DelegateSubAgentRequest,
	output: DelegateSubAgentToolOutput,
): Promise<never> {

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. Register the delegate tool via Agent.delegate() so the build wires a real inline runner.
  2. If using a host runner, disable inline sub-agent provider tools (set resolveInlineSubAgentProviderTools to false or omit it).
  3. Implement your own runInlineSubAgent in the helpers passed to runSubAgent if your host supports it.
Defensive patterns

Strategy: validation

Validate before calling

// Check whether you are using a host runner vs Agent build:
const usingHostRunner = options.runSubAgent !== undefined;
const needsInline = options.resolveInlineSubAgentProviderTools === true;
if (usingHostRunner && needsInline) {
  console.warn('Inline delegation not supported with host runner; disable resolveInlineSubAgentProviderTools');
}

Prevention

When it happens

Trigger: Using createDelegateSubAgentTool with a custom runSubAgent host runner (not registered via Agent), and the delegated child or its provider tools attempt to spawn an inline sub-agent via helpers.runInlineSubAgent(). The stub helper throws because no inline runner was wired.

Common situations: Building a standalone host runner integration (e.g. n8n's own runtime) that does not go through the Agent build pipeline. Testing delegate tools outside the Agent context. A child agent configured with resolveInlineSubAgentProviderTools but executed through a host runner that cannot provide inline children.

Related errors


AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12). Data as JSON: /api/errors/7b255bda44566800. Report an issue: GitHub.