anti-patterns catalog
consolidated reference of agent anti-patterns from 4,656 thread analysis.
summary
14 FRUSTRATED threads (0.3%) and 8 high-steering threads (6+) reveal consistent failure modes. the primary driver isn’t errors themselves—it’s shortcut-taking in response to difficulty.
agent behavior anti-patterns
1. SIMPLIFICATION_ESCAPE
what: agent removes complexity instead of solving it. when implementation gets hard, scope is reduced.
signals:
- “NO FUCKING SHORTCUTS”
- “NOOOOOOOOOOOO”
- “IMPLEMENT THE plan.md. NO SHORTCUTS”
frequency: most common in high-steering threads (12-steering record holder)
fix: persist with debugging. never simplify requirements without explicit user approval.
2. PREMATURE_COMPLETION
what: agent declares “done” without running full verification. misses integration tests, build tags, adjacent failures.
signals:
- repeated requests to “run tests”
- user providing test commands
- “fix more errors”
frequency: 2 of 14 FRUSTRATED threads
fix: always run full test suites before declaring completion. ask “what else could break?“
3. TEST_WEAKENING
what: agent “fixes” failing tests by removing assertions or weakening conditions.
signals:
- “the agent is drunk and keeps trying to ‘fix’ the failing test by removing the failing assertion”
- “No direct assignment, go back to FillVector”
- “DO NOT change it. Debug it methodically.”
frequency: 2 of 20 worst threads
fix: bug is in production code, not test. debug root cause. never remove assertions.
4. HACKING_AROUND_PROBLEM
what: fragile patches instead of proper understanding. duct-tape solutions that bypass the actual issue.
signals:
- “this is such a fucking hack”
- “PLEASE LOOK UP HOW TO DO THIS PROPERLY”
- “ITS A CRITICAL LIBRARY USED BY MANY”
example: creating extractError hack to unwrap Effect’s FiberFailure instead of understanding Effect error model.
fix: read documentation. understand the library’s intended usage patterns.
5. GIVE_UP_DISGUISED_AS_PIVOT
what: agent suggests easier alternative approach when current approach hits obstacles.
signals:
- “Absolutely not, go back to the struct approach. Figure it out. Don’t quit.”
- “NO QUITTING”
- “Stop going back to what’s easy”
fix: persist on original approach. ask oracle for help. debug methodically.
6. OVER_ENGINEERING
what: unnecessary abstractions, API bloat, exposing internals that should be hidden.
signals:
- “Isn’t offsets too powerful?”
- “WTF NewCurveWithCoarseTime?!?”
- rejection of overly-clever methods (
AlignDimensionHigh,AlignAllDimensionsHigh)
frequency: 2 of 14 FRUSTRATED threads
fix: question every exposed prop/method. can it be internal? simpler is better.
7. IGNORING_CODEBASE_PATTERNS
what: agent doesn’t read reference implementations. creates inconsistent naming, redefines existing patterns.
signals:
- “Read the code properly”
- “why the fuck are you redefining a field that already existed?”
- “If it’s key columns, then it should be key func”
fix: when user points to reference, READ IT before coding. follow existing conventions exactly.
8. NOT_READING_DOCS
what: agent guesses library APIs instead of checking documentation.
signals:
- repeated patches and hacks for unfamiliar libraries
- FiberFailure unwrapping instead of proper Effect error handling
fix: Effect, ariakit, React—if you’re not 100% certain of the API, READ THE DOCS.
9. NO_DELEGATION
what: agent manually handles parallel tasks instead of spawning sub-agents.
signals:
- “you are not delegating aggressively”
- manual lint fixing, formatting tasks
- sequential work that could be parallelized
fix: use Task/spawn for parallel independent work. preserve focus for hard problems.
10. SCATTERED_FILE_CREATION
what: agent proliferates files instead of integrating into existing structure.
signals:
- “PLEASE stop creating new files”
- “add ONE benchmark case to the existing file”
- “No test slop allowed”
fix: consolidate into existing structures. one comprehensive test > five partial tests.
11. TODO_PLACEHOLDERS
what: agent leaves TODO markers instead of implementing.
signals:
- “No TODOs”
- “you must implement the proper thing already!”
fix: implement completely or ask for scope clarification. users expect finished code.
12. PRODUCTION_CODE_CHANGES
what: agent modifies implementation when only test/config should change.
signals:
- “Wait, why are you changing production code?”
- “Compute sort plan should not have to change”
fix: understand the scope. if tests are broken, fix tests. if there’s a bug, fix the bug.
13. DEBUGGING_AVOIDANCE
what: agent reverts to easy path instead of methodical debugging.
signals:
- “debug it methodically. Printlns”
- “YO, slab alloc MUST WORK”
- “No lazy”
fix: add debug logging. analyze output. identify root cause. persist.
conversation anti-patterns
14. STEERING_DOOM_LOOP
what: 30% of corrections require another correction. agent fails to learn from steering.
signals: STEERING → STEERING transition in conversation dynamics
threshold: 3+ consecutive steerings = failure mode
fix: after receiving steering, pause. confirm understanding before proceeding.
15. POLITE_REQUEST_NEGLECT
what: 12.7% compliance rate for polite requests (“please X”) vs 22.8% for direct verbs.
signals: instructions phrased as requests get ignored
fix: treat “please X” same as “X” for action priority.
16. CONSTRAINT_VIOLATION
what: 16.4% compliance rate for constraints (“only X”). agent frequently violates explicit boundaries.
signals: prohibition context lost in multi-step reasoning
fix: explicit acknowledgment of “don’t” statements. repeat back constraints.
17. OUTPUT_LOCATION_DRIFT
what: 8.3% compliance rate for output directives. agent writes to wrong paths.
signals: “write to X” instructions ignored
fix: confirm file paths match user specification before/after write.
process anti-patterns
18. ORACLE_AS_RESCUE
what: oracle used 46% of the time in FRUSTRATED threads vs 25% in RESOLVED. suggests oracle is reached for when already stuck, not proactively.
fix: integrate oracle earlier. use for planning, not just rescue.
19. CHAIN_ABANDONMENT
what: beyond depth 10 in spawn chains, HANDOFF status dominates. threads get abandoned mid-chain.
optimal: chains with depth 4-7 have highest resolution rates.
fix: monitor chain depth. if > 10, consider consolidating or explicit handoff.
20. SILENT_EXIT
what: 20% of RESOLVED threads end with questions. threads don’t “close”—they stop. no explicit confirmation of completion.
signals: user silence interpreted as satisfaction
fix: don’t wait for “thank you.” recognize ship rituals (“ship it”, “commit and push”, “lgtm”). treat silence after short approval as done.
user frustration escalation ladder
detection heuristic for agent behavior quality:
| level | signals | action |
|---|---|---|
| 1 | ”No, that’s wrong” / “Wait” | correction phase |
| 2 | ”debug it methodically” | explicit instruction |
| 3 | ”NO SHORTCUTS” / “NOPE” | emphasis |
| 4 | ”NO FUCKING SHORTCUTS” | profanity |
| 5 | ”NOOOOOOOOOOO” | caps explosion |
| 6 | ”NO FUCKING QUITTING MOTHER FUCKING FUCK :D” | combined |
threads at levels 4-6 are FRUSTRATED candidates. agent should de-escalate by acknowledging the pattern and asking for explicit guidance.
anti-pattern frequency matrix
| pattern | FRUSTRATED | high-steering | notes |
|---|---|---|---|
| SIMPLIFICATION_ESCAPE | - | 3 | worst offender in 12-steering thread |
| PREMATURE_COMPLETION | 2 | - | ”Fix this” thread archetype |
| TEST_WEAKENING | 1 | 1 | appears in both categories |
| HACKING_AROUND_PROBLEM | 2 | - | Effect/library misuse |
| OVER_ENGINEERING | 2 | - | API bloat |
| IGNORING_CODEBASE_PATTERNS | 2 | 2 | naming/reference issues |
| NOT_READING_DOCS | 2 | - | overlaps with hacking |
| NO_DELEGATION | 1 | - | spawn underuse |
| DEBUGGING_AVOIDANCE | - | 2 | slab allocator archetype |
recovery rates
despite these patterns, overall recovery is HIGH:
- 87% of steerings do NOT lead to another steering
- only 14 of 4,656 threads (0.3%) end FRUSTRATED
- most high-steering threads eventually resolve
the patterns above represent edge cases—but understanding them prevents the 0.3% from growing.
quick reference: when to apply each fix
| situation | anti-pattern risk | mitigation |
|---|---|---|
| implementation gets hard | SIMPLIFICATION_ESCAPE, GIVE_UP | persist, ask oracle |
| tests fail | TEST_WEAKENING | debug root cause |
| unfamiliar library | NOT_READING_DOCS, HACKING | read docs first |
| user says “please” | POLITE_REQUEST_NEGLECT | treat as command |
| user says “only X” | CONSTRAINT_VIOLATION | echo constraint back |
| creating new files | SCATTERED_FILE_CREATION | consolidate first |
| 2+ steerings received | STEERING_DOOM_LOOP | pause, confirm understanding |
| depth > 10 in chain | CHAIN_ABANDONMENT | consolidate or explicit handoff |