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
- Clear stale interruption metadata when the agent's tool calls change between runs
- Match feedback to current tool calls by id, not only name
- 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;
}
@OverrideView on GitHub (pinned to f82da0b50f)