alibaba/spring-ai-alibaba · error

Ignoring unexpected tool feedback: name=

Error message

Ignoring unexpected tool feedback: name={}, id={}

What it means

HumanInTheLoopHook.validateFeedback logs a warning for ToolFeedback entries that match no pending approval-required tool call — extra/stale human feedback (for tools whose calls changed) is ignored and does not block validation of the remaining feedback.

Solutions

  1. Clear stale interruption metadata when the agent's tool calls change between runs
  2. Match feedback to current tool calls by id, not only name
  3. Safely ignore — the hook only warns and continues
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at spring-ai-alibaba-agent-framework/src/main/java/com/alibaba/cloud/ai/graph/agent/hook/hip/HumanInTheLoopHook.java:258 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of alibaba/spring-ai-alibaba@f82da0b50f (2026-09-09). Data as JSON: /api/errors/dce3efcd02aa11bc. Report an issue: GitHub.

Appendix: source

Thrown at spring-ai-alibaba-agent-framework/src/main/java/com/alibaba/cloud/ai/graph/agent/hook/hip/HumanInTheLoopHook.java:258

                log.warn("Missing feedback for tool {} (id={}); waiting for human input.",
                        call.name(), call.id());
                return false;
            }

            // Ensure the feedback result is provided
            if (matchedFeedback.getResult() == null) {
                log.warn("Feedback result for tool {} (id={}) is null; waiting for human input.",
                        call.name(), call.id());
                return false;
            }
        }

        // 3. Optional: log unexpected or extra feedback entries that do not match any pending approval tool
        for (InterruptionMetadata.ToolFeedback tf : toolFeedbacks) {
            boolean matched = toolCallsNeedingApproval.stream()
                    .anyMatch(call -> call.name().equals(tf.getName()) && call.id().equals(tf.getId()));
            if (!matched) {
                log.warn("Ignoring unexpected tool feedback: name={}, id={}", tf.getName(), tf.getId());
            }
        }







        return true;
    }

	@Override
	public String getName() {
		return HITL_NODE_NAME;
	}

	@Override

View on GitHub (pinned to f82da0b50f)