n8n-io/n8n · error · Error
host runner does not support inline delegation without…
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.
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
- requires resumeSubAgent and cancelSubAgent to be configured…
- was registered without a runSubAgent callback, and no host…
- A case declares distinct scenario seed data tables…
- Additional Model Request Fields must be a JSON object
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/7b255bda44566800.
Report an issue: GitHub.
Appendix: 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)