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
- Register the delegate tool via Agent.delegate() so the build wires a real inline runner.
- If using a host runner, disable inline sub-agent provider tools (set resolveInlineSubAgentProviderTools to false or omit it).
- 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
- Register delegate tools via Agent.delegate() to get full inline delegation support.
- When using a host runner, set resolveInlineSubAgentProviderTools to false or omit it.
- If your host supports inline children, implement runInlineSubAgent in the helpers object.
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
- Invalid delegate sub-agent tool name "${name}": must start w
- ${toolName} requires resumeSubAgent and cancelSubAgent to be
- ${toolName} was registered without a runSubAgent callback, a
- Model ID is required
- Delegated child input is missing or invalid
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/7b255bda44566800.
Report an issue: GitHub.