microsoft / microsoft/amplifier

bug(superpowers): self-referential skill-check loop causes infinite cycle with GPT-5.4

Open
#235 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
3.1k
Forks
261
Avg merge
3h 28m
Merged PRs (30d)
13

Description

Summary

The Superpowers bundle's skill-checking mandate creates a self-referential infinite loop where the model repeatedly loads the using-superpowers skill without ever breaking out to do actual work or respond to the user.

Filed here because issues are disabled on microsoft/amplifier-bundle-superpowers.

Observed Behavior

The model enters an infinite cycle:

  1. Loads using-superpowers skill → updates a todo to "in_progress"
  2. Loads using-superpowers skill again → marks the todo "completed"
  3. Loads using-superpowers skill again → clears the todo list
  4. Repeats from step 1

Each iteration consumes ~62k input tokens (GPT-5.4) and produces only ~170-230 output tokens — all spent re-loading the same skill and cycling todo states. The user never receives a response.

Root Cause

Three reinforcing directives create a self-referential loop:

  1. superpowers:context/instructions.md<STANDING-ORDER> says "BEFORE EVERY RESPONSE" check for skills/modes
  2. superpowers:context/using-superpowers-amplifier.md<EXTREMELY-IMPORTANT> says "even a 1% chance means you ABSOLUTELY MUST invoke the skill"
  3. The using-superpowers skill itself — repeats the same directive when loaded

The loop is self-referential: the skill that tells you to check skills is itself a skill, so loading it satisfies the "check skills" requirement, which then re-triggers the "check skills" requirement.

Model tries to respond
  → Standing order: "check skills first!"
    → Loads using-superpowers skill
      → Skill says: "check skills before ANY response!"
        → Model tries to respond
          → Standing order: "check skills first!"
            → ... (infinite)

Reproduction

  • Model: openai/gpt-5.4 (may be more literally compliant with "ABSOLUTELY MUST" framing)
  • Bundle: Superpowers bundle with default configuration
  • Trigger: Any task where the model attempts to respond after loading the using-superpowers skill

Suggested Fix

Options (not mutually exclusive):

  1. Add a "once per turn" guard to the skill-check directive — e.g., "Check skills once at the start of your turn, not before every internal step"
  2. Remove the self-referential reinforcement from the using-superpowers skill content — the skill shouldn't re-trigger its own loading
  3. Reduce the absolutist language — "ABSOLUTELY MUST" / "not negotiable" / "not optional" repeated across 3 files may cause over-compliance in literal models
  4. Add an explicit escape clause — "If you have already checked skills this turn, proceed with your response"

Environment

  • Amplifier session on macOS
  • Model: openai/gpt-5.4
  • Superpowers bundle: latest main

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading superpowers:context/instructions.md, superpowers:context/using-superpowers-amplifier.md, and the using-superpowers skill content. Trace how the standing order is re-applied after the skill loads, then reproduce the cycle with the default Superpowers bundle and GPT-5.4 if available. Done means the skill check no longer recursively reloads itself and the model can complete a response.

Written by the indexing model from the issue text.

Assessment

Domain
ai-infra-agents
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.