# Fighting the Weights
Fighting the weights is when "the model doesn't do what you ask because you're working against what it was trained to do" (Drew Breunig, 2026). The instruction is clear and in the context. The model still drifts back to its trained habit.
Breunig's framing: output = context × weights. Context engineering only controls one of the two factors. When the two pull in different directions, the weights often win.
## Where it shows up
- **Harness habits.** Models are now heavily trained on specific harnesses and tools. Put them in a different harness, with tools named or shaped differently, and they stumble. Smaller models often botch Playwright MCP calls on the first try
- **Behaviors the training data didn't favor.** Claude Code's system prompt repeats the instruction to call tools in parallel seven, four, two and three times in different places, because the training data leaned towards serial calls
- **Old facts.** A Gemini 2.5 agent playing Pokémon Red spent hours looking for iced tea, which only exists in the FireRed remake. The remake was in the weights; the context couldn't override it. Whether you call that poisoning or fighting the weights is debated, but the root cause is the training, so clearing the context won't stop it from coming back
## The symptom to look for
Repetition and ALL CAPS in a prompt. If you've written the same rule three times, or "NEVER" in capitals, you're probably fighting the weights. Shouting can work, but it has a cost: those instructions take attention from everything else, and they create [[Context Clash]] when they contradict other parts of the context.
## What to do instead
1. **Go with the grain.** Use the harness, tool names and formats the model was trained on. Read the model's technical report to learn what it was trained for
2. **Move the rule into code.** If the model must do something every time, a deterministic check (a hook, a linter, a validation step) beats a fifth repetition in the prompt. This is Breunig's closing point: the job is to decide when to be deterministic and when to be probabilistic
3. **Change the interface.** A tool parameter with an enum often works better than a paragraph explaining the allowed values (one of Anthropic's Claude 5 lessons)
4. **Switch model.** Sometimes the cheapest fix is a model whose training matches the task
The good news: each model generation shifts the defaults. Anthropic removed over 80% of Claude Code's system prompt for [[Claude 5]] because many old repetitions weren't needed anymore. Your shouted rules have a shelf life too.
## References
- Drew Breunig, "The State of Context Engineering" (2026-10-24): https://www.dbreunig.com/2026/10/24/the-state-of-context-engineering.html
- Hacker News discussion: https://news.ycombinator.com/item?id=50235780
## Related
- [[Context Engineering]]
- [[Prompt Engineering]]
- [[Harness Engineering]]
- [[Context Clash]]
- [[Context Inertia]]
- [[Context Poisoning]]
- [[Claude 5]]
- [[Claude Code Hooks]]