~ $ how to actually drive AI agents
Ceiling vs. Effort
Two dials decide what an AI agent can do. Neither one fixes a bad diagnosis.
Tier is the ceiling on what a model can do. Effort is how hard it thinks under that ceiling. Get the tier wrong and no amount of thinking saves you; get the effort wrong and you either overpay or stall. This is how to set both – with a real ticket, run two ways, that shows what it's worth.
$19 and right beats $32 and wrong.
Same ticket, two ways. Tier and effort harden execution – clean code, passing tests, green lint. They do nothing for the diagnosis underneath. Only independence – a second agent told to refute, not agree – catches a wrong root cause before it ships. A bigger solo pass buys confidence, not correctness.
Two dials, not one
Tier
The ceiling. What the model can do.
Haiku → Sonnet → Opus → Fable
Raw capability: reasoning, world knowledge, how much state it holds, how well it follows instructions when the task gets messy. It's fixed per model – you can't dial it up mid-task. A weaker model thinking harder never reaches a stronger one's ceiling. Pick tier for what the task demands, not for what feels safe.
Effort
The deliberation. How hard the model thinks before it answers.
low → medium → high → xhigh → max
Thinking tokens – how much the model works before it commits to an answer. It uses the capability the model already has; it can't add capability that isn't there. And it multiplies the token count, not the rate, so tier and effort compound on your bill. max overthinks – it burns tokens second-guessing an answer it already had at high. xhigh is the sweet spot for coding and agentic work; high is the default for everything else.
Pick tier and effort
| situation | tier | effort |
|---|---|---|
Mechanical, high-volume, fully specified rename, format, parse, fan-out reads | Haiku | – (no dial) |
Most coding, exploration, scoped features the workhorse – your default | Sonnet 5 | medium–high |
Hard coding, long-horizon agentic work multi-file refactors, autonomous loops | Sonnet 5 / Opus 4.8 | xhigh |
Subtle bug, architecture call, threat model expensive-if-wrong, path not obvious | Opus 4.8 | high–xhigh |
The genuinely hardest thing you have | Fable 5 | high+ |
Per 1M tokens
| model | input | output | relative |
|---|---|---|---|
| Haiku 4.5 | $1 | $5 | 1× |
| Sonnet 5 | $3 | $15 | 3× |
| Opus 4.8 | $5 | $25 | 5× |
| Fable 5 | $10 | $50 | 10× |
Effort multiplies the token count, not the rate – the two dials compound.
One shape, always
- 1/5
Drive
sonnet @ medium–highKeep the main loop in one place, one driver, at Sonnet @ medium–high. Don't switch drivers mid-task – every handoff costs the context it took to build. (Sonnet 5 is on intro pricing, $2 in / $10 out per 1M tokens, through 2026-08-31.)
- 2/5
Delegate down
haikuHand fan-out reads, searches, and mechanical edits to the cheapest tier that can do them – Haiku. Keep the driver's context clean: distil what comes back from sub-agents, and compact aggressively. Raw dumps pollute the loop that matters.
- 3/5
Escalate up
opus/fable @ high+Isolate the one genuinely hard sub-problem and give it to a top tier at high effort. One scalpel, not a blanket – escalating everything runs up the bill without improving the parts that were already fine.
- 4/5
Verify sideways
fresh agent · refuteSpawn a fresh, independent agent and tell it to refute the driver's conclusion, not review it. A majority-refute kills a bad diagnosis before it ships. This is the step that catches a wrong root cause – tier and effort never will.
- 5/5
Judge, don't average
n attempts · pick the winnerRun N attempts in parallel, score them, and take the winner. Averaging blends the right answer with the wrong ones and leaves you with neither.
Anti-patterns
Top tier, max effort, by reflex. The expensive move, and often worse than xhigh: max burns tokens second-guessing an answer the model already had at high. Reaching for the top by default just means you didn't decide which dial the task needed.
Averaging parallel outputs instead of judging them. Blend three attempts and you don't get a better answer – you drag the good one toward the wrong ones. Score them and take the winner.
Same-family "verification". Sonnet checking Sonnet checks nothing – same training, same blind spots, failures that pass together. Tier-diversity is not vendor-diversity: for a real check, use a different model.
Polite review prompts. "Review this" gets agreement – models default to confirming what's in front of them. Ask it to refute the finding instead. That one change turns a rubber stamp into a real check.
Pasting raw dumps into the driver. Every unfiltered search result, log, or diff you paste in pollutes the context the driver reasons over. Distil first – summarise what a sub-agent found before it goes back in.
The skill
Morpheus
The Ceiling vs. Effort framework as a Claude Code skill. It picks tier and effort for the task in front of it and runs the delegate / escalate / verify loop. Unlike a static prompt, it's self-improving: it reads its own LESSONS.md before it starts and appends to it after, so each run sharpens the next.
SKILL.md · LESSONS.md · README.md
Free. No account, no sign-up – just the skill.