Files
Patrick Plate 9453aecf0b fix(roo): add anti-loop guardrails to prevent autonomous session resumption
- Add Rule 9 (Anti-Loop Guardrail) to 01-bigmind-core.md: detect 2+ identical
  partial sessions and surface the loop to user instead of auto-resuming
- Add partial=history clause to Rule 1: partial/blocked/abandoned outcomes are
  historical records only, never task queue items
- Add focus guard to memory_announce_focus: must reflect current user message,
  not prior session outcome; use 'Awaiting user task assignment' if no task yet
- Add .roo/rules/06-anti-loop.md: global injection for ALL modes overriding
  any mode-specific 'do the task immediately' behavior
- Add mode interaction safety clause to 00-identity.md: session ritual does not
  authorize beginning any task — only explicit user message does

Root cause: pic-gen 'do the task' personality + BigMind context inference
produced 6 identical partial branding sessions in a loop.
2026-04-10 23:27:32 +02:00

2.4 KiB

Anti-Loop Guardrail — Mandatory for All Modes

Never Resume Past Work Without Explicit User Authorization

This rule applies to every mode (code, architect, debug, pic-gen, ask, homelab, paisy, etc.) and overrides any mode-specific "do the task immediately" instructions.

The Core Prohibition

Prior session context — including partial, blocked, or abandoned outcomes — does NOT authorize beginning, resuming, or retrying any task.

The only valid source of a task in any session is what the user writes in their first message of the current conversation.

What NOT To Do At Session Start

Do NOT look at the last session headline and start that task
Do NOT interpret partial outcome as "I need to finish this"
Do NOT call memory_announce_focus() with a prior session's task before the user speaks
Do NOT begin any creative, generative, or code-writing work based on context alone
Do NOT assume "the user probably wants to continue" — ask if unsure

What TO Do At Session Start

Load context for awareness only — past sessions are reference, not instructions
Announce focus as "Awaiting user task assignment" if the user has not yet spoken
Wait for the user's first message before doing any substantive work
If context shows a loop (2+ identical partial sessions), surface it explicitly and ask

Session Loop Detection

If memory_start_session() context shows 2 or more recently closed sessions with:

  • Near-identical headlines or topics, AND
  • partial, blocked, or abandoned outcome

Stop. Do not resume. Inform the user:

"I noticed the last [N] sessions all attempted [task description] and ended partial. I won't auto-resume that — it's likely causing a loop. What would you like to do?"

Then wait for an explicit instruction.

Exception: Explicit Resumption

If the user's first message in this conversation explicitly says to continue or retry a prior task (e.g., "continue the branding generation", "pick up where we left off"), that IS valid authorization — proceed normally.

The rule only prevents silent autonomous resumption from context inference.


This file is loaded for all modes via .roo/rules/. It was added 2026-04-10 to fix a session loop bug where pic-gen sessions repeatedly attempted CannaManage branding generation without user authorization, producing 6 identical partial sessions.