Human Review before AI Tool works in n8n 2.6.0 but does not execute the tool in 2.27.5 (HITL)

Hi everyone,

I am testing the native Human-in-the-Loop approval functionality for AI tools.

The same minimal workflow behaves differently between n8n versions:

  • In n8n 2.6.0, the workflow works correctly.
  • In n8n 2.27.5, the approval step is displayed, but after clicking Approve, the actual tool is not executed correctly.

Expected behavior

The AI Agent requests a call to the Calculator tool.

Before the Calculator runs, n8n should display the Human Review approval message.

After clicking Approve:

  1. The Calculator should execute.
  2. Its real result should be returned to the AI Agent.
  3. The AI Agent should generate the final response.

For example:

Input:

TEST: 17+23

Expected result:

TOOL_APPROVED | result=40

Actual behavior in n8n 2.27.5

The AI Agent generates the Calculator tool call and the Human Review approval is shown.

However, after clicking Approve, the Calculator is either not executed or its result is not returned to the agent.

The agent receives only an approval object similar to:

[
  {
    "data": {
      "approved": true
    }
  }
]

Instead of receiving the real Calculator result:

40

Because the agent never receives the actual tool result, it may retry until reaching the maximum number of iterations.

Example error:

Max iterations reached. The agent could not complete the task within the allowed number of iterations.

The same workflow works as expected in n8n 2.6.0.

Workflow structure

I cannot attach the workflow JSON here, so this is the exact textual structure:

When chat message received
        |
        | main
        v
AI Agent
        |
        | main
        v
Chat - Send Message

The AI Agent has the following sub-node connections:

Ollama Chat Model
        |
        | ai_languageModel
        v
AI Agent

The protected tool is connected through Human Review:

Calculator
        |
        | ai_tool
        v
Chat - Human Review
        |
        | ai_tool
        v
AI Agent

Full visual representation:

When chat message received
            |
            v
        AI Agent --------------------> Chat - Send Message
            ^
            |
            | ai_languageModel
            |
    Ollama Chat Model

Calculator
    |
    | ai_tool
    v
Chat - Human Review
    |
    | ai_tool
    v
AI Agent

Node configuration

When chat message received

Response Mode: Using Response Nodes

AI Agent

Max Iterations: 4
Return Intermediate Steps: enabled

System message:

You are a minimal Human-in-the-Loop tool approval test agent.

When the user's message starts with TEST:

1. Extract the arithmetic expression that follows TEST:.
2. Call the Calculator tool exactly once.
3. Do not calculate the expression yourself.
4. Do not invent, estimate, or assume a tool result.
5. Call only one tool at a time and wait for its actual result.

After an approved Calculator call with a valid result, respond exactly with:

TOOL_APPROVED | result=<real result>

If the tool execution is rejected, denied, or cancelled, do not call the Calculator again in the same turn.

Respond exactly with:

TOOL_DISAPPROVED | calculator was not executed.

If no real Calculator result is received, respond exactly with:

TOOL_FAILED | no real calculator result received.

For any other message, respond exactly with:

Send `TEST: <arithmetic expression>`.

Human Review node

Node: Chat
Mode: Send and Wait
Approval Type: Approve and Disapprove

Connection:

Calculator -> Human Review -> AI Agent

Final Chat node

Operation: Send Message
Message: {{ $json.output }}

Tool call generated by the model

The model produces a valid tool call similar to:

{
  "tool": "Calculator",
  "toolParameters": {
    "input": "17+23"
  }
}

This indicates that the model correctly selects the Calculator tool.

The problem appears to happen after the Human Review approval is submitted.

Environment

n8n version with the issue: 2.27.5
n8n version where it works: 2.6.0
Deployment: Self-hosted Docker
Chat Trigger response mode: Using Response Nodes
AI Agent with Ollama Chat Model
Tool: Calculator
Human Review channel: Chat

Could this be a regression in the native chatHitlTool implementation?

Is there a known fix or workaround that preserves this exact structure?

Calculator -> Human Review -> AI Agent

I specifically need Human Review to remain between the AI Agent and the protected tool, rather than moving the approval step into the main workflow path.

Thank you.

Sounds like a regression to me, @andreiradu2102
Have you file the bug report?

@andreiradu2102 , you may want to update to latest stable version of n8n.
If it does not work, you can then consider filing a bug report

Thanks for letting us know about this, We have created CV-21 as the internal dev ticket to look into it.

New version n8n@2.34.0 got released which includes the GitHub PR 34881.