Un-pinning Ultracode: a CLAUDE.md update
Last week I published my global CLAUDE.md, annotated. One section of it is already gone. The old operating rules said: keep the interactive effort slider pinned to Ultracode at all times, and pass max everywhere in programmatic calls, since those interfaces don't offer Ultracode. Both rules turned out to be wrong, and my usage bill is what told me.
What the data said
The Fable 5 weekly cap ran out while my overall Weekly allowance still had plenty of room. When I looked at /usage, 94% of recent consumption came from subagent-heavy sessions and 87% from sessions with 150k+ context. That is exactly the fingerprint of always-on Ultracode: every trivial question spinning up a multi-agent workflow, every workflow stage inheriting the biggest model at the highest effort. The official guidance says the same thing outright — for everyday work (single-file edits, simple questions, interactive tasks), Ultracode adds latency and cost without adding quality — and Ultracode resets each session by design, which should have been the hint that it was never meant to be pinned.
The new rules
Here is the replacement section, verbatim from the updated file:
Actual operating rules: - Keep the interactive `/model` (or `/effort`) slider at **xhigh** by default. **Do not leave Ultracode on as a standing default** — the official guidance explicitly says that for everyday work (single-file edits, simple questions, interactive tasks) Ultracode only adds latency and cost without adding quality, and it is designed to reset every session, so it was never meant to be pinned. In practice, per `/usage`, 94% of recent usage came from subagent-heavy sessions and 87% from 150k+ context sessions, and the Fable 5 weekly cap ran out while the overall Weekly allowance still had room — exactly the pattern always-on Ultracode produces (verified 2026-07-08). - Turn Ultracode on case-by-case, only for work that can't be coordinated in a single conversation: full-codebase audits, large migrations, research that cross-checks multiple sources, hard plans that need review from several angles. - In programmatic interfaces (mainly Workflow's `agent()`; the Agent tool has only a model knob, no effort), set the effort parameter **per stage difficulty**. The baseline is `xhigh` (Ultracode's real effort is xhigh, so that's the reference line, and Workflow itself already provides the orchestration). Mechanical stages (dedup, formatting, cheap finders) go down to `low`/`medium`, and `max` is reserved for the genuinely hardest stages (adversarial verification, hard judgment and synthesis). Blanket `max` is banned — especially when the session's default model is Fable 5, an `agent()` call with no model set inherits Fable, so "Fable @ max" running mechanical stages is the worst way to burn the weekly cap and cost. So programmatic calls specify **both model and effort** explicitly and never rely on inheritance.
Three changes packed in there. The slider default drops from Ultracode to xhigh, and Ultracode becomes a case-by-case tool for work one conversation genuinely can't coordinate. The blanket max rule flips into a per-stage scale: xhigh as the baseline, low/medium for mechanical stages, max only for adversarial verification and hard synthesis. And model inheritance is banned in programmatic calls, because "no model set" quietly means "Fable," and Fable at max effort doing dedup work is how a weekly cap dies.
How it's enforced
Rules in a markdown file are advisory; the model can and does drift from them mid-session. So the model-selection part is enforced with hooks: any Agent tool call is intercepted, and unless it targets deep-reasoner (pinned to Opus) or fast-worker (pinned to Sonnet), it gets blocked if it doesn't name a model explicitly. Workflow's agent() calls stay on the honor system of the written rules, since that's where per-stage judgment lives. The whole arrangement looks like this:
When the cap hits anyway
Even with the new rules, the Fable cap can still run out mid-task. When it does, the current turn just stops — no automatic downgrade, no handoff. The fix is manual and takes two inputs: type /model opus, then continue. The session picks up where it stopped, running on Opus. Worth writing down because in the moment it looks like the session died, and the instinct is to start a new one — which throws away all the context the cap interrupted.
The updated file is live at taejunoh.com/claude.md, and the annotated walkthrough now carries a note pointing here. The meta-lesson: a CLAUDE.md is not a config you write once. Mine changed within a week of being published, because the usage data disagreed with a rule I was confident about.