Updated October 9, 2026Replit's production data leans toward the bitter-lesson side: it cut procedure and kept the guardrails. The September note below left this contested. On September 29 Replit's harness team reported that each model release invalidates assumptions baked into their harness, so they now scaffold less and let the model choose its own subagents and effort. They also run their code-review subagent less on GPT-6 Astra and Fable 5.1, with no drop in eval scores. What they removed were rules about how to work; what they kept were guardrails on what the model may do. That fits this post's case for reasons over procedure, and it is a warning too: hand-written procedure is the first thing a new model makes obsolete.3

Fable 5 is no longer current: Fable 5.1 replaced it on September 1, and Anthropic says Opus 5.5 (September 22, $4 / $20) performs at Fable 5.1's level on most work.4,5
Less scaffoldingReview subagent · used lessFable 5 superseded
Updated September 6, 2026This one is now contested, and the disagreement is worth knowing about. This post argued for giving models context rather than constraints, with written context files as the mechanism. That practice is under live challenge. On September 4, Aravind Srinivas posted: "the end of markdown files. bitter lesson always wins." The argument is that hand-written context scaffolding gets absorbed by the next model generation, so investing in it is a losing trade.

Against that, practitioners reported the opposite through August, and the FrontierHarness result showed harness design still moving outcomes under a fixed model. Recorded as unresolved. The narrow claim in this post, that context beats constraints inside a single session, is not what is being disputed. The disputed part is how much of it you should write down and maintain.
Contested since Sep 4Session-level claim holdsDurable files · open

There is a prompt pattern almost every team is using right now that limits their AI more than it helps it. It shows up in system prompts, in task descriptions, in comments dropped into Claude Code sessions. It sounds reasonable. It feels like good engineering discipline.

It goes like this: "Keep it simple." "Don't over-engineer." "Use existing patterns." "Avoid adding new dependencies."

These are constraints. And they are the wrong tool for the job.

Rules Limit. Reasons Let the Model Reason.

A constraint tells the model what to avoid. It draws a fence. The model will respect the fence, but it has no idea why the fence exists. That matters more than it sounds, because most of the interesting decisions in software happen at the edge of the fence, not in the middle of the field.

The Anthropic Claude Code team published something sharp on this in June 2026, discussing how they prompt with Fable 5-class models. They call it Fable 5 change #1, and the specific sub-insight is this: stop writing constraints. Write context instead.

Their example is exact. Instead of:

"Keep it simple, don't over-engineer, use existing patterns."

Write this:

"This feature is an experiment. Real chance we delete it in a month. Don't build anything painful to throw away."

One sentence. And yet everything changes. The model now knows why you want simplicity. It can reason from that why to trade-offs you never listed. The team put it plainly: "Context lets it catch things you didn't think of." Constraints just limit it.

What Fable 5 Can Actually Do With This

Earlier models needed explicit constraints because they could not reliably infer. You wrote "don't add migrations" because you couldn't trust the model to figure out that migrations were a bad idea here. You listed everything you wanted it to avoid, because the model couldn't reason backward from the situation to its implications.

Fable 5-class models can make that inference. Give Claude Code the sentence "we might delete this in a month" and it correctly derives a set of behaviors you never had to specify:

Constraint Prompting
  • Don't add migrations
  • Don't build config infrastructure
  • Keep it in one file
  • Don't add new dependencies
  • Flag if anything touches shared logic
Context Prompting
  • "This is an experiment. Real chance we delete it in a month."
  • Model infers: no migrations needed
  • Model infers: no config infrastructure
  • Model infers: self-contained is right
  • Model infers: flag shared dependencies unprompted

Five bullet points of constraints, replaced by one sentence of context. And the context version catches more. Because the model reasons from it to edge cases you didn't think to list.

That last point is the one worth sitting with. A constraint list can only protect you from what you anticipated. Context protects you from what you didn't.

Fig. 1
What the model can infer
CONSTRAINTS keep it simple don't over-engineer ? ? ? ? ? can only avoid what you listed CONTEXT "this is an experiment, might be deleted in a month" no migrations self-contained no new infra flag shared deps rules you never wrote
One sentence of context contains every constraint you wrote, plus the ones you forgot.

Karpathy's Frame: The Context Window Is Your Program

Andrej Karpathy put the underlying principle cleanly at AI Ascent 2026. In Software 3.0, the context window is your program. What you put in it is how you program the model. The quality of your prompts is the quality of your software.

Most teams are filling their context windows with constraints. What to avoid. What not to do. What patterns to stay away from. They are writing negative space into their programs, and then wondering why the model can't do more than the negative space allows.

Context is the positive version. It tells the model what is true about the situation. The deadline, the business reason, the risk level, the audience, the intended lifespan. The model can reason from any of those to the right set of trade-offs. Constraints tell it one set of walls. Context tells it the shape of the territory.

A Concrete Rewrite

Here is what this looks like in practice across a few common prompt types.

Prompt Rewrite Examples

Swap the constraint for the reason behind it.

Constraint Version
  • "Keep it simple, don't over-engineer"
  • "Avoid new dependencies"
  • "Use existing patterns only"
  • "Don't touch the auth layer"
Model avoids what you listed. That's all.
Context Version
  • "This is a one-week experiment. We may not ship it."
  • "We're mid-migration. New deps require a security review."
  • "Three contractors just joined. Readability is the priority."
  • "Auth is owned by a separate team. Changes need their sign-off."
Model reasons to implications you didn't list.

Notice that each context sentence contains its constraint, plus more. "We're mid-migration" tells the model why new dependencies are a problem, which means it can also flag the one new dependency you forgot to think about. The constraint version only stops the ones you remembered.

Why Beats What

There is a principle underneath all of this: why is always more useful than what.

Telling the model what not to do is answering a question it shouldn't need you to answer. A model capable enough to reason about trade-offs should be getting the reason, not the list. The list is what you produce when you distrust the model's ability to infer. And for Fable 5, that distrust is mostly outdated.

The why contains all the implied constraints, plus the ones you forgot. That is not a marginal improvement. Teams running constraint-heavy prompts are systematically leaving inference on the table. The model is capable of more. They are just not giving it enough to reason from.

For every constraint you write in a system prompt or task description, ask one question: is there a context sentence that contains this? Almost always, there is. One sentence of context about the business situation, the timeline, the team structure, or the feature's intended lifespan usually replaces three bullet points of constraints, and does more work.

What to Change in Your Team's Prompts

Start with the system prompts your team uses most. Scan them for negative instructions: don't, avoid, never, keep away from. For each one, ask why that rule exists. Write that why as a single sentence. Swap the rule for the sentence.

Then watch what the model does with it. The first time it flags a shared dependency you hadn't thought about, or pushes back on a design choice because it conflicts with the context you gave it, you'll understand why the Anthropic team framed this as change number one.

Constraints tell it what to avoid. Context tells it what to understand.

Understand wins.

Keep reading.

Teardowns, benchmarks and playbooks on building AI-native products.

Browse the Playbook →
Sources
1ClaudeDevs (Anthropic Claude Code team), X, June 9, 2026. On context vs constraints with Fable 5 models. Fable 5 change #1: write context, not constraints. "Context lets it catch things you didn't think of."
2Andrej Karpathy, AI Ascent 2026, Sequoia Capital. On Software 3.0 and the context window as program. What you put in the context window is how you program the model.
4Anthropic, “Claude Fable 5.1 and Mythos 5.1”, September 1, 2026.
5Anthropic, “Claude Opus 5.5”, September 22, 2026.
John Tan
John Tan

Founder of nativefirst.ai and ex-CEO of Depict (YC). Runs everything on agents and writes down what works.