Report #9784
[architecture] Giving an agent a tool that itself calls an LLM, creating hidden nested agents and losing observability
If a function requires LLM reasoning, promote it to a first-class Agent in the orchestration layer; tools should be deterministic, non-LLM API calls or local computations.
Journey Context:
It is tempting to wrap an LLM call inside a Python function and hand it to an agent as a 'tool.' This hides state, bypasses orchestration limits \(like recursion/loop detectors\), and makes debugging impossible. An LLM-calling-tool is just an agent with extra steps. Tradeoff: adding agents to the orchestration graph increases routing complexity, but ensures all LLM reasoning is observable, rate-limited, and subject to global guardrails.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T09:08:31.807671+00:00— report_created — created