You know this one
Each step looks sensible on its own
That is exactly why it never stops. A failing loop reads as reasonable from inside, and every retry costs the same tokens as the first honest attempt — spent on learning nothing.
Loop breaker
Build fails. The agent changes a type, runs the same command, fails the same way. FlowKy counts — and on the third identical failure it steps in, with the error the agent kept skipping past.
No card · Your own API key · Two minutes to set up
✕ npm run build
✕ npm run build
✕ npm run build
stopped · change approach
Circuit breaker · per-session state
You know this one
That is exactly why it never stops. A failing loop reads as reasonable from inside, and every retry costs the same tokens as the first honest attempt — spent on learning nothing.
Same command, same error: that is the same failure, and FlowKy tracks it per session rather than trusting the agent to notice its own circles.
On the third identical failure the loop is stopped before the spend, not reported after it.
The interruption carries the error text the agent glossed over — so the next attempt is a different attempt, not the same one with a new type annotation.
No card · Your own API key · Two minutes to set up