microsoft / microsoft/amplifier
bug(superpowers): self-referential skill-check loop causes infinite cycle with GPT-5.4
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:
- Loads
using-superpowersskill → updates a todo to "in_progress" - Loads
using-superpowersskill again → marks the todo "completed" - Loads
using-superpowersskill again → clears the todo list - 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:
superpowers:context/instructions.md—<STANDING-ORDER>says "BEFORE EVERY RESPONSE" check for skills/modessuperpowers:context/using-superpowers-amplifier.md—<EXTREMELY-IMPORTANT>says "even a 1% chance means you ABSOLUTELY MUST invoke the skill"- The
using-superpowersskill 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-superpowersskill
Suggested Fix
Options (not mutually exclusive):
- 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"
- Remove the self-referential reinforcement from the
using-superpowersskill content — the skill shouldn't re-trigger its own loading - Reduce the absolutist language — "ABSOLUTELY MUST" / "not negotiable" / "not optional" repeated across 3 files may cause over-compliance in literal models
- 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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