Planner thrashing. The agent re-plans repeatedly without converging on the investigation, usually when the planner prompt is under-constrained or the available tools overlap in unclear ways. Symptom: many LLM calls, few tool calls. Fix: cap re-plan iterations and write tool descriptions that clearly disambiguate.
Tool call loops. The agent calls the same tool with slight variations of the same arguments. Usually caused by missing error semantics: the tool returns empty results silently, and the planner interprets that as "try again with different phrasing." Fix: return structured errors with actionable messages.
Unobservable decisions. Without trace coverage on planner inputs and outputs, "why did the agent do that?" becomes unanswerable. In production this is disqualifying. Emit spans that cover every LLM call, every tool call, and every plan revision, and tag them with the OpenTelemetry GenAI conventions so that any backend can render them.
Context overflow. Long agent runs accumulate conversation state, tool results, and plan history. Past a threshold, performance degrades: later tool calls are worse than earlier ones. The fix is architectural (context compression, summary memory, sub-agent scoping), not a prompt tweak.