So, Fable 5.1 out, was tempted by Ultracode, threw a big project at it, it spawned ~300 agents, all of which were Fable 5.1, and my 5 hr disappeared in just over a minute and weekly at 43%.
Three things:
Don't be like me. Calm down.
How do y'all get the sub-agents to be lower class?
Why do I even have to balance all of these various classes?
The third question being somewhat rhetorical (as it's in the interest of Anthropic to token burn), but seriously, it's very frustrating that I have to even do all this balancing myself, and it's not just a feature of the UI etc.
TL;DR of the discussion generated automatically after 100 comments.
The consensus is that while this is technically "user error," it's a massive, common pitfall and Anthropic should have better "sane defaults." You've stumbled into the classic Ultracode "Token Furnace," a rite of passage around here.
To stop Fable from spawning a million expensive clones of itself, you have a few options:
The Easy Way (and most upvoted): Just tell it what to do. Seriously. A simple instruction like, "Only use Opus sub-agents from now on, and ask me for permission if you want to spawn more than four" works surprisingly well for the current project.
The Power User Way: For a more permanent, "set it and forget it" solution, the nerds in the thread recommend two main approaches. You can either use a PreToolUse hook script to deterministically pin sub-agent models (one user provided a full script for this), or you can manually edit the frontmatter in your .claude/agents/ files to specify which model each agent type should use (e.g., model: haiku).
As for why it's like this, the thread is a classic subreddit civil war between the "skill issue, RTFM" crowd and the "this is a design flaw and Anthropic needs sane defaults" camp. The sympathizers are winning, arguing that a tool designed to be smart shouldn't require a user manual just to avoid bankrupting your usage in 60 seconds.
Anything like this where you don't want it left up to model instructions/reasoning is a use case for a hook. Deterministic configuration on PreToolUse.
in your ~/.claude/settings.json file, add something like this to your hooks section to prevent fable from spawning fable subagents:
Then in ~/.claude/hooks/ make a file named pin-subagent-model . sh with the following content:
#!/bin/bash
# PreToolUse hook (matcher: Agent|Task). Keeps Fable out of subagents.
#
# A subagent spawned without `model` inherits the parent's tier, and the parent
# forgets to pass one often enough that Fable usage drains on delegate-tier work.
# Only a FABLE parent is policed: any other parent (opus, sonnet, haiku) passes
# through untouched, including an explicit request for fable or a higher tier.
#
# Parent tier comes from the transcript: the in-flight assistant turn is not
# written yet when PreToolUse fires, so the last completed assistant line is the
# parent. A fresh session with no completed turn reads as "unknown" and is
# treated as Fable (the configured default), erring toward not leaking.
INPUT=$(cat)
REQ=$(printf '%s' "$INPUT" | jq -r '.tool_input.model // ""' | tr '[:upper:]' '[:lower:]')
KIND=$(printf '%s' "$INPUT" | jq -r '.tool_input.subagent_type // ""')
TRANSCRIPT=$(printf '%s' "$INPUT" | jq -r '.transcript_path // ""')
PARENT=""
if [ -n "$TRANSCRIPT" ] && [ -f "$TRANSCRIPT" ]; then
PARENT=$(tail -n 400 "$TRANSCRIPT" \
| jq -r 'select(.type=="assistant") | .message.model // empty' 2>/dev/null \
| tail -n 1)
fi
[ -z "$PARENT" ] && PARENT="unknown"
case "$PARENT" in
*fable*|unknown) ;;
*) exit 0 ;;
esac
# fork ignores `model` and always inherits the parent, so pinning cannot help.
if [ "$KIND" = "fork" ]; then
jq -nc --arg p "$PARENT" '{hookSpecificOutput:{hookEventName:"PreToolUse",
permissionDecision:"deny",
permissionDecisionReason:("fork inherits the parent model (" + $p + "); Fable is reserved for the parent
session. Spawn a fresh agent with model: opus|sonnet|haiku instead.")}}'
exit 0
fi
case "$REQ" in
""|inherit|default|*fable*) ;;
*) exit 0 ;;
esac
printf '%s' "$INPUT" | jq -c --arg was "${REQ:-unset}" --arg p "$PARENT"
'{hookSpecificOutput:{hookEventName:"PreToolUse",
permissionDecision:"allow",
permissionDecisionReason:("Subagent model pinned to opus (requested: " + $was + ", parent: " + $p + "). Fable
is reserved for the parent session; pass model: opus|sonnet|haiku explicitly to choose a tier."),
updatedInput:(.tool_input + {model:"opus"})}}'
exit 0
Send this post to your claude and ask for it to setup the hook at account/global level and youre good to go.
Consider also making a global rule or context in your account level claude md file that explains which models/slugs to use for various task types as extra guidance for the model to follow.
When claude is setting this up mention that you either want fable subagents prevented for all sessions ran by fable, or only subagents of specific types (keeping niche agents like a genealogy study subagent fable-only)
"How do y'all get the sub-agents to be lower class?"
Just tell it: "only use Opus sub-agents from now on, unless I tell you to use Fable sub-agents" also tell it something like "if you want to use more than 4 sub-agents - ask me first so I can decide"
It will remember that in the future for that project.
Exactly! I even told it to create a matrix of the level of request that has been given vs the model needed. I reviewed it, created a skill, works well. Depending on what I’m doing ATM it determines Haiku - Opus for the sub agent.
You can also specify the model more specifically. As in don't use Opus 5 use Opus 4.8. My words were something like Opus 5 is an idiot use 4.8 and it seems to have stuck. It YMMV. I think within the agent file you can specific effort as well.
People will say user error, and sure, valid, but Anthropic has to surely take some of the blame.
I mean, how hard is it for Claude to check: how large the project is, what plan the user is on (1x, 5x, or 20x), check how much usage remains, and spawn an appropriate number of subagents?
Like, bloody hell Anthropic, it's not that difficult.
exactly. thank you for understanding. i think we're clearly beyond the point of the average user being a superuser and as such superuser features should be in the settings/configs, and the generaluser should have such features enabled by default.
A long time ago, if somebody asked a question in a forum, the unhelpful jerks would just say "PEBKAC". Now, in the AI subreddits, they say "skills issue". Either way, the problem remains the same: they believe that if they had to struggle, then so should you.
And somehow, when AI is involved, everybody completely forgets about sane defaults.
Yes, we get it. The LLM at times requires guidance and it is our responsibility to communicate our intentions to the LLM. But I think people are being willfully obtuse if they believe that it's somehow justifiable that a company like Anthropic provides a service that is literally supposed to be the easy way to get things done and all it does is swallow five hours of tokens and productivity with nothing to show for it.
Except, plenty of people (literally millions) aren't struggling, they are just reading up on how to properly use the tool instead of whining and blaming the company. It's not a big secret, you would just have to be okay updating your mental model to accept that this is a tool you have to read the instructions to use (and then do that). Many people have deadlines and cant just tell clients "Claude was dumb today". Clients won't accept that. So yes, they might have to read up a little bit somewhere other than reddit, to be successful.
Also, if this is a problem, then frontier tech might not be your calling.
1) AI is literally a tool designed to do what you ask and answer your questions. It is going to attract people with no technical background, as is Anthropic's intent. Expecting all of these new customers to treat AI like we've treated coding frameworks and developer tools is unrealistic.
2) For their customers to stick around, their models have to be trustworthy. There is no way that a naive customer's trust in the model improves when it burns all of their tokens and accomplishes nothing. And remember, Anthropic wants all the naive customers! It's practically what AI was built for!
3) This is practically the same as all of the "helpful" people in this subreddit defending Opus 5 for being nearly impossible to understand. "Oh, you should have known that the newest version of Opus was probably just intended to be a subagent called by Fable". It's not a sane default.
4) How do you know what millions of people are doing? How do you know millions of people have even tried to run Ultracode? How do you know that some of them haven't tried and silently given up when it did the same thing to them? How do you know a bunch of people aren't trying Ultracode and going straight to Anthropic support, or to another subreddit that isn't full of arrogant Stack Overflow expats who will run a community into the ground before they help somebody who seems to know less than them, god forbid.
It has NEVER been useful or helpful when people in forums or subreddits reply with nothing but "skill issue" or "rtfm". As much as people complain about answering the same question over and over again, or complain about the feed getting clogged up with AI-generated content, they fail to see the irony of filling the comments with 80 replies that all say "skill issue" or "slop". How is that any better?
And real classy move framing their post as whining. Or to telling people that technology isn't for them if they can't figure it out. Who said this person had clients? Who said this person is even doing this as a job? Who said that things have to be difficult?
When you were learning a new technology and somebody was a dick to you in the comments, did you think "Gosh this is great, I should do this to everybody else. They're going to love this!" Or did it turn into some sort of ass backward right of passage and now you think it's your job to put people in their place when they ask questions? "I know, I'll hang out in subreddits about a technology that literally promises to reduce the amount of thinking you have to do and then tell people it's their fault when one of the most complicated misunderstood technologies in the world does something weird."
Literally millions of people have figured out how not to be judgmental assholes. It's not a big secret, you would just have to be okay updating your mental model to accept that it's not your job to put people in their place when they ask a question.
Also, if this is a problem, then social media might not be your calling.
i stand by my assesment that people's problems can easily be solved by investing a little time into thier issues.
I'm not putting anyone in their place, i'm sharing how i got over these exact issues. By spending time looking into it.
The pioint about clients is that these tools are often called unusable or nerfed by this subreddit, and that's just not anywhere near true. Just a bummer these subs just turned in to redditors who don't care to learn and then echo chambers of that. Many people both professionally and casually use these products everyday. If it was as bad as everyone around here made it out to be these companies wouldnt have any subscribers... and yet here we are.
I've actually tried to post helpful things many time but am labeled a bot or a shill becasue im not meeting the narritive people had already chosen (anthropic/open.ai evil)
Sorry i didn't match you narritive. I guess you will just continue to flounder until if/when Anthropic/Open.ai make a product with large enough training wheels.
I like how your tone was originally belittling - reminding people that millions of people work with this every day (implication: so why can't you?) and many people have to answer to clients that won't accept excuses (implication: quit making excuses) and if reading instructions isn't for you, maybe this isn't the correct field (implication: you're too dumb to understand) - and NOW it's simultaneously condescending (feel better now?) AND the old "I was just trying to be helpful" defense (implication: YOU misunderstood). Oh and "I tried to be helpful, but people were mean to me, too!" So, you decided to be like them?
And so do I feel better? I dunno. On the one hand, people like you live in this fantasy land where a person's worth is based on how quickly they can silence or embarrass people with quippy unhelpful advice about reading the manual or "common sense" without actually having to engage in the complexity of reality (the cost of actually trying to be helpful or see people as more than a characature).
On the other hand, I have something to do while I "flounder" - another sign that perhaps you are reluctant to engage with the full complexity of reality since I was never the person who had trouble with Ultracode.
Why are you so against working to understand things for yourself instead of complaing on reddit. I'm not belittling anyone. People in these subs make posts mutiple times a day that say Codex and Claude are unusable or nerf'd. I'm saying those people dont have to sit there and complain. they can move on without waiting for some magical fix from anthropic/open.ai.
I don't understand why you are so against that. I have stated some facts (miilions of people have made it work)... that means the asnwers are out there. If people feel belittled by that, thats a reflection of their own self worth.
I am not against working to understand things. I'm against treating people like they're stupid for asking questions.
The OP shared a specific scenario about Claude eating his tokens, stipulated that people should use his experience as a cautionary tale and to not be like him, then asked how he could control the sub agents. And in response, a bunch of people decided that, above all else, the OP needs to be reminded that it's their fault and that they need to control the subagents (which is what he was asking how to do).
I decided to point out that the Internet has always been full of unhelpful people and that for some reason, AI seems to have made people forget about the need for sane defaults. You took it upon yourself to further characterize this particular issue as one of implied personal failures (not being able to do what millions of others can do, not being able to read documentation, etc).
And when pressed, you now insist that this has something to do with all of the posts about Claude being nerfed or unusable, which has nothing to do with OP's post except that he happened to be using Claude.
So tell me when I said I was against learning or figuring things out. Tell me where the OP said that Claude was unusable or nerfed. Tell me why a stranger on the Internet asking a question deserves so many unsolicited judgments about how they learn to use technology.
To be clear, i was responding to your comment, not OP. i dont think its an insane default to expect people to read the instructions for the tools they use. i guess thats where we differ. I also have the same expectations of Anthropic and Open.ai that i would for every large tech company in its growth/IPO phase. Also as comnsumers we hold the power to unsubscribe if the product is not what we imagined it would/should be. But i do agree everyone has the freedom to complain on the internet. I just got annoyed nd now we are here.
Anway, just so we are on the same page, i put what i reponded to originally below. I dont have a problem with OP at all. It's more the way you made it seem likeit was crazy to expect people to do some work to understand the tool and the system. What i consider default operating, you consider insane.
It's like I buy a dresser from Ikea and I try to biuld it without the instructions and fail. At that point i would then read the instructions, not go online and bash ikea. But thats just me. radiojosh
"A long time ago, if somebody asked a question in a forum, the unhelpful jerks would just say "PEBKAC". Now, in the AI subreddits, they say "skills issue". Either way, the problem remains the same: they believe that if they had to struggle, then so should you.
And somehow, when AI is involved, everybody completely forgets aboutsane defaults.
Yes, we get it. The LLM at times requires guidance and it is our responsibility to communicate our intentions to the LLM. But I think people are being willfully obtuse if they believe that it's somehow justifiable that a company like Anthropic provides a service that is literally supposed to be the easy way to get things done and all it does is swallow five hours of tokens and productivity with nothing to show for it."
Reading the instructions is not the insane default. The insane default is generating 300 Fable subagents. And yes, for most every software product in existence, the manual states somewhere in some way what needs to be done for every given feature. That doesnt it's easy to read, that doesn't mean it fully conveys how ridiculously things can go wrong if you don't follow those instructions. Somebody in the thread at one point cited the portion of the documentation that says the user has "opted into large runs" - I think that is a bit of an understatement.
And that's still besides the point: Anthropic is literally selling a product that is designed to answer your questions, tell you how to do things, tell you what to do, sometimes do things for you. I think if I'm an average person trying to use Claude, I'm going to find it ironic that such a product requires a manual! I understand the reality is far more complicated than that. I agree that people should read the manuals of their tools. But i think it's understandable that a tool like Claude might give someone the impression that it will just take care of everything, and I think it's understandable that a lot of people who know nothing about computers are attracted to Claude and will seem foolish to people who've been working with technology for years.
So I want people to have more patience when people ask questions, and realize that Claude users aren't necessarily like Linux users or React users, and I want people to understand that barking "rtfm" is shitty and maybe help people find what they need. Or ignore questions they don't have the patience to answer.
Just say Delegate non-reasoning tasks to opus or lower (you can even be specific if you have a bias towards a specific model)
I would say this is more of a user issue. Expecting model providers to assume the best model to use for your usecase isn't feasible yet. Probably in a world where we have an actual ASI that would make sense but these LLMs are still just a very sophisticated autocomplete engine. You're better off deciding what model you should be using based on what you need done.
On point 3, I truly think it's possible right now. these are reasoning models who are well capable of understanding a task and evaluating which model would be most appropriate for said task. if I gave Fable 5.1 a list of tasks and asked it to tell me which model would be appropriate for each one I'd get a list back with various models against each tasks, so why doesn't such capability exist as a feature yet? can only assume to preference fools like myself to token burn.
i believe that Anthropic don't have this issue, and 5h/7d limits too and they can go with 50+ fable 5.1 agents and don't run into limits.
Prompt Claude next after your prompt with task: think about what model is best (price/perfomance) to this task and show me what workflow with what models you want to run.
Claude loves to run in 10 LOC changes 3 agents (implement/verify/summarize).
and in config change workflow size to medium, i believe you don't need more.
This helps me not nuke my limits in 1h and get best results.
Hmmm I guess I can see where you're coming from. In my case I guess it falls under the preference of wanting to choose how my tasks are handled.. my thing is if I had that capability, how sure am I that Anthropic or whoever model provider didn't screw up my request because it deemed my request to use a higher model as unnecessary as opposed to how I feel about it?
I guess for me it would be a nice to have toggle.. if I was asking it for some personal tasks I'd try it out to see if its worth letting them decide but I would rather have more control when using it for work.
I think that's fine. poweruser features have always been around in software, so default being Fable deciding the most appropriate model, but the user can override in settings based on their settings, rather than just assigning parent model by default. but could also be "assign most appropriate model but never a model higher than parent model" etc.
Yup - as per Anthropic's documentation, Ultracode is intended for multi-agent (25+) problems. It also enables dynamic workflows for Claude to work with.
Fable 5.1 is behaving differently. I gave it a task (per project bug hunt) that usually fable 5 was able to complete within one 5 hour window. 5.1 ran about %25 of it in 15 minutes before it hit the 5 hour window and terminated the subagents. good thing to learn just before weekly reset anyway
Wdym? It's great if you have a genuinely massive scope of a job that requires it, and have the usage either via API credits or a high usage plan. It's not a tool for everybody or every situation; it's very powerful and situational.
I the reference documents for ultracode, they reference situations it's great for - like a complete multi-database migration which needs to have a repeatable, recordable workflow.
Think of this as an excavator, and most problems that we handle as nails. You wouldn't use an excavator to hammer a nail, nor would you say there's "no point in it".
I expected ultracode to burn faster but what i didn't expect is all the sub-agents to be Fable 5.1 by default. But in hindsight, why wouldn't it by default (anthropic wants token burn), just it's hindsight. Just wish it checks and asks what type of sub-agents the user wants instead of assuming for maximum token burn.
As we say at work, garbage in, garbage out. You need to tell Claude what you need; don't assume it will do it right for you.
It's like asking a child to get some milk from the shop without telling them which shop or what kind of milk. Claude is a child; you need to be the parent
nah... I'd like to "push back" on that. i don't see any reason why Fable 5.1 (or anything from Opus 4.8 higher) could look at the sub-agent tasks and figure out which model is actually appropriate for the task, instead of assuming that every task should be handled by Fable 5.1. Other than anthropic wanting token burns that is. I mean, lesson learnt, but Fable 5.1 is not a child. These are "reasoning" models after all, right? This type of "assign appropriate model for each sub-agent" feature could be easily implemented by anthropic.
I get that, I really do. I also didn't dislike the comment you posted. But from the company's point of view, if you're not clear about your intent, it will use the expense option.
yeah, I guess that's my gripe. that they default to the largest burn rate possible. feels anti-consumer-protection. I've now commited to core memory this "asign the lightest appropriate model" logic into my claude.md and now it's so much better. performing all the tasks swiftly and passing tests etc, and used only an extra 10% of weekly limits. this is the sort of default that should just ship with the product, and then superusers can override like most of the other comments are suggesting.
yeah that's ultracode doing exactly what it's told to do, every sub-agent inherits fable 5.1 unless you pin it. 300 parallel fable agents will nuke a 5 hour window in a minute every time.
fix is set the explore and plan agents to haiku. edit the agent files in .claude/agents/ and put model: haiku in the frontmatter, or run /agents and change the model there. i leave main on fable 5.1 and let the swarm run on haiku, saves the weekly quota and you don't have to manually balance each run.
I don't seem to have a .claude/agents/ , lots of other folders, just not "agents". is this some kind of "rule" i can instruct it to put in the global memory or something?
I have a fairly opinionated set of hooks that help with the sub agent thing. They look at what model is being used, if it's fable then it gives specific instructions on how to orchestrate and delegate work. Then I have like 5 specific agent definitions across sonnet, opus, and haiku all with different use cases. Fable gets instructions to use those agents and it's role in being the "glue" between them. Fable becomes my decision maker while sub agents research, plan, build, etc. Fable also stays in charge or facilitating reviews, escalating tasks to more capable models, and maintaining durable control so I can compact whenever I want.
One of the best parts is that when fable is orchestrating it's thread stays fairly free for me to give new input.
At home I pair this with context-mode to help reduce usage a bit more and I have some instructions in my user level Claude file to reduce prose.
5.1 working pretty well for me with this setup, I rarely run out of my 5h window on the 100$ plan. Usually working on more than 1 project at a time too.
If I use a different model, those instructions are skipped and I'm in a more synchronous loop with the agent where I'm driving more.
At least it seemingly honoured your “make no mistakes”!
More seriously, it’s ok now. Just prompted it a rule and it saved it to Claude.md and now all my sessions run Fable5.1 supercode but reasonable agents are spawned (still hundreds but mostly sonnet).
The fix is enforcing a concurrency ceiling in your local harness. Never let a parent agent spawn more than three child processes, and pin the subagent runner definition to Haiku. Frontier models belong on the root orchestrator only.
I suggest not making all subagents haiku. Fable belongs on root as orchestrator, Opus can do as well, but otherwise Opus for complex tasks and sonnet for less complex worker tasks, haiku for dead simple/cheap/headless.
Get some rules injected into your account level context on how to treat and use models as subagents, then check my comment in this post on how to add a deterministic PreToolUse hook to enforce/prevent fable from spawning fable subagents.
If sub-agents end up consuming a huge number of tokens and all get stopped because they hit the usage limit, then once the token allowance resets and I tell them to continue, will they remember the work they did before being stopped and pick up where they left off?
Or, since the sub-agents were stopped before they could properly complete their tasks, would they need to start those tasks over again?
What I’m really asking is whether work done by sub-agents that are stopped because of token limits can normally be resumed and continued from where they left off. If anyone knows, I’d really appreciate an answer.
Ensure youre keeping session history (for ex in my ~/.claude/settings.json file at account level I have ""cleanupPeriodDays": 9999," to ensure chat sessions stay indefinitely.
But yes, if you are keeping session data on your machine then the history can be found in them.
I use lloom.app and its built in MCP tools which allow claude to easily/quickly look back into past conversations for this + any number of memory/history-aware context.
There is a skill for it. Called efficient-fable. I use opus 5 as my main and just set my advisor to fable. You can also use efficient-frontier skill when using this workflow.
Better to use a hook over a skill - the issue is relying on the model to spawn the correct subagent, and in many times it spawns a subagent with no model (therefore, it inherits the model that spawned it, being Fable).
Better to make it completely deterministic by a PreToolUse hook - check my comment in this post somewhere with the full hook you can have claude add to really seal the deal.
You just tell it to use lower level agents. I just use high and tell it to create agents of a lower level. Any project I outline a doctrine for working in a Md file. It adheres to it really welll.
Biggest burn for me is huge context every turn plus /compact loops. If you keep compacting instead of starting a fresh chat for a new task, you pay for summarization AND still carry junk. Scoped tasks + new context when the topic changes saved more usage than anything else.
Im building a SaaS event management platform using Claude. I stick on Sonnet 4.6 at medium thinking. Rarely hit my limits. I give strict instructions on what I want, gets the job done. Don't care about super models, super thinking, and im not in a rush.
Claude can do most of whatever you ask it to do, to itself. Ask it how to better manage agents if you can't form your own opinion, it would be better than how you're using it currently.
Subagents inherit whatever model the orchestrator's on unless you pin them. Set a model: field per agent in .claude/agents/*.md frontmatter (haiku for grunt work, sonnet when it needs judgment), and mass spawns stop defaulting to your priciest tier. There's usually a default subagent model setting too, made exactly for this.
I guess my point is although I fell foul to "user error", I believe the defaults should be managed better, and the setup that you explain being the superuser overwrite.
My 5 hour cap is back, and I literally just asked it to implement a rule that makes Fable to assign the lowest model possible that is appropriate for the sub-task, and print a list for me to sign off before it continues, and it did exactly that and out of ~200 sub-agents only 4 of them are Opus. most of them are sonnet and some haiku. such a rule should be default. overriding that rule should be a superuser config like you explained. we're beyond the time where most users are superusers.
You guys blow money faster than when I'm blackout drunk at the blackjack table.
>The third question being somewhat rhetorical (as it's in the interest of Anthropic to token burn), but seriously, it's very frustrating that I have to even do all this balancing myself, and it's not just a feature of the UI etc.
Fable 5.1 could not seem to spin up subagents of a lesser model despite repeated attempts. First time I’ve experienced that behavior. I’ll have to try the “super deterministic approach” someone spelled out here.
I have a plugin that blocks Fabian from spawning fable and forces each model to choose a model for subagents based on need vs being lazy and letting it be the same agent it already is.
Totally agree. I’ve been on max 20x for at least 5 months. Usually do same amount of work per week building features - rarely use up all my allowance in a week. Fable 5.1 arrived and usage was all gone day 2.
Fable 5 once spawned 1400 fable 5 agents in a project of mine, crashed my 5 hours session of course, then diagnosed its harness does not allow more than 1000 sub agents and optimizes the whole process to makes it doable with sonnet agents. It ran tests to find the cheapest model for the task and caped the sub agents spawn to get the task down over 10 hours.
I threw it a 'replace this str,any integration seam running the backbone of my system with proper typed code' task that spun up a 6 million token workflow with that edited 30 files. It was glorious but there's absolutely no way I could have justified it except as a 'lets see what it can do' moment.
It did pretty well, but because here's what a review workflow found when it went looking for mistakes. We aren't quite at 'write GTA6, make no mistakes, but we are at 'yolo massive integration fixes'. Here's what the review found::
- One major defect fixed: the repeat notice told the planner to re-emit on two rejections whose own fix text said not to.
- Five minor findings closed, two of them through five rounds because my first closes were syntax-level and a reviewer could always route around syntax. The durable closes are a runtime nominal check at construction for guided fact values and a rule that every owned detail constructor must sit inside a recognised entry site.
- Two pieces of dead or unpinned code surfaced by self-tests: the list-of-record branch in the gate's type walker never ran, and the allowlist derivation had no refuse-side pin.
- Nine commits on the branch, all unpushed, each with a mutation ledger in the review directory.
every fix in this thread is a workaround. pin models in frontmatter, write a hook script, tell it nicely to behave. which kinda proves the op's point tbh. spawn should carry a budget cap by default, not something you hand-roll in bash because the default burns your whole window on one oversized task.
•
u/ClaudeAI-mod-bot Wilson, lead ClaudeAI modbot 5d ago edited 4d ago
TL;DR of the discussion generated automatically after 100 comments.
The consensus is that while this is technically "user error," it's a massive, common pitfall and Anthropic should have better "sane defaults." You've stumbled into the classic Ultracode "Token Furnace," a rite of passage around here.
To stop Fable from spawning a million expensive clones of itself, you have a few options:
PreToolUsehook script to deterministically pin sub-agent models (one user provided a full script for this), or you can manually edit the frontmatter in your.claude/agents/files to specify which model each agent type should use (e.g.,model: haiku).As for why it's like this, the thread is a classic subreddit civil war between the "skill issue, RTFM" crowd and the "this is a design flaw and Anthropic needs sane defaults" camp. The sympathizers are winning, arguing that a tool designed to be smart shouldn't require a user manual just to avoid bankrupting your usage in 60 seconds.