/loop skill has no cancel mechanism — loops run until session ends
The /loop skill starts a recurring prompt on an interval but provides no way to cancel it from within the session. Once started, it fires indefinitely until the session is terminated.
Expected behavior: A /loop cancel or /loop stop command that terminates the active loop, or the loop should automatically stop when the agent responds with a terminal acknowledgment.
Actual behavior: The loop runs forever. There is no cancel command. TaskStop doesn't work because the loop doesn't run as a trackable background task. The process isn't visible as a shell process that can be killed.
Impact: In long-running sessions, a loop set for an early task continues firing hundreds of times after the task is complete. Each firing generates a response, wasting tokens and polluting the conversation. The agent cannot stop it — only the user can by ending the session.
Workaround: Don't use /loop. Use sleep N && echo "message" with run_in_background: true for one-shot timers instead. The agent must consciously set each subsequent timer, making the stop condition naturally enforceable.
5 Comments
Yeah, I'm also experiencing this as well. It's a huge problem. Would appreciate some support on this.
This is control-loss at the persistent-loop boundary.
If
/loophas no cancel mechanism and runs until the session ends, then the system is creating ongoing execution without providing a first-class operator control to stop it inside the same workflow surface.Why it matters:
I would want clarity on:
/loopcurrently lacks a control primitive entirely or whether the stop path exists but is not exposed consistentlyLong-running automation needs symmetric control. If
/loopcan start from the chat surface but only stop by killing the session, the operator boundary is not strong enough.Closing for now — inactive for too long. Please open a new issue if this is still relevant.
still not implemented, I have to type
/loop cancel, after a LLM round-trip, the LLM cancel it.Is there still not a proper solution or best practice for this?