So I was using Fable wrong... ![rw-book-cover](https://img.youtube.com/vi/-XWSJM-Ue-o/maxresdefault.jpg) ๐Ÿ”— **Source:** [So I was using Fable wrong...](https://www.youtube.com/watch?v=-XWSJM-Ue-o) > [!note]+ Document Notes > --- > tags: [prompt-engineering, ai-coding-agents, claude-code, agentic-workflows, context-management] > author: Theo > source: Theo - t3.gg > reference: https://www.youtube.com/watch?v=-XWSJM-Ue-o > date created: 2026-09-22 > --- > > [!info] Generated analysis โ€” not the author's words. Sections below are machine-written > > from the captured source. Only text inside `> [!quote]` blocks is verbatim from the author. > > Do not quote or attribute any other line to the named author. > # ๐Ÿท๏ธ Title: I was using Fable wrong, this is how I fixed it > ## ๐Ÿงญ Table of Contents > - [๐Ÿ“ Summary](#-summary) > - [๐Ÿ“– Main Content](#-main-content) > - [๐Ÿ—’๏ธ Notes](#๏ธ-notes) > - [๐Ÿ“š References](#-references) > - [๐Ÿ—ฃ๏ธ Paraphrase](#๏ธ-paraphrase) > - [๐Ÿ“ฐ Newsletter](#-newsletter) > - [โœ… Action Items](#-action-items) > - [๐Ÿงช Hypotheses](#-hypotheses) > - [๐Ÿ“Š Methodology](#-methodology) > - [โ“ Questions](#-questions) > - [๐Ÿ”ฎ Future Research](#-future-research) > - [๐Ÿ’ก Implications](#-implications) > - [๐Ÿง  Learning Styles Assessment](#-learning-styles-assessment) > - [๐Ÿ“Š Accessibility Assessment](#-accessibility-assessment) > - [๐ŸŒ DEIB Assessment](#-deib-assessment) > - [โœ… Logical Validity](#-logical-validity) > - [๐Ÿ›ก๏ธ DARVO Analysis](#-darvo-analysis) > - [๐ŸŽฏ Conclusion](#-conclusion) > ### ๐Ÿ”— References > - [Anthropic: Prompting Claude Fable 5.1](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5-1) โ€” the guide Theo walks through > - [Anthropic: What's new in Claude Fable 5.1](https://platform.claude.com/docs/en/models/fable-5-1/whats-new-fable-5-1) โ€” context window, pricing, history-edit rule > - [Anthropic: Prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices) > ## ๐Ÿ“ Summary > - **What happened:** In a 41:32 video, Theo (T3 / t3.gg) walks through Anthropic's "Prompting Claude Fable 5.1" guide section by section, then shows how he prompts Fable in his own T3 Code harness: babysit-PR skills, a Fable-reviews-Astra merge decision on his Lake Bed project (spelling unverified), and a 94-minute unattended run. > - **Why it matters:** his main claim isn't a prompt trick. He says most people under-use Fable because their prompts, CLAUDE.md/AGENTS.md files, and harness settings were built around older models' flaws. His fix is to give each prompt a clear end state, offer pre-authorized branches, and delete workarounds. > - **Key stakeholders:** developers on Claude subscriptions using Claude Code or similar harnesses; teams maintaining shared AGENTS.md files; people building products on the Fable API. > - **Risks and tradeoffs:** Theo says his YOLO merge workflow is dangerous on important codebases and only works on Lake Bed because it's unreleased and he's the sole developer. His evidence is his own anecdotes, with no evals. Two sponsor reads (Sentry, General Translation) take about 3.5 minutes. > - **Bottom line:** put a stopping point in every prompt, hand the model the context and the decision, strip old behavioral rules from CLAUDE.md, leave harness defaults alone, and rebuild your mental model of what the agent can do on its own. > ## ๐Ÿ“– Main Content > - **Effort levels.** Anthropic's guide says to start at the default, `high`, and test `low`, `medium`, `xhigh`, and `max` against your own evals (verified on the Fable 5.1 prompting page). Theo skips formal evals. He uses `high` by default and `xhigh` for deep work, and avoids `low`/`medium` because a failed low-effort run plus a retry costs more than one high run. He says Fable stays cheap on simple prompts even at `max`. He also says Astra (OpenAI's GPT-6 Astra, per the name used in the transcript) scales reasoning to task size better. On his "skate bench" (name unverified) the low-to-max gap was ~50 tokens (130 โ†’ 180), against 1,000+ for "Gemini 31 Pro" (likely Gemini 3.1 Pro, unverified). > - **Subscription economics (Theo's claims, unverified).** Subscribers get 50% of their weekly limit reserved for Fable, with the other half going mostly to Opus 5, which he calls "not a good model." He doesn't think Fable is worth API prices. Anthropic lists Fable 5.1 at $10/MTok input and $50/MTok output (verified on the what's-new page). > - **Progress updates.** Fable 5.1 writes fewer user-facing updates between tool calls than Fable 5. Anthropic confirms this and recommends asking for them explicitly. Theo doesn't want them because he kicks off a thread and checks back later. If you do want them, a system-prompt line asking for an opening line, brief updates, and a standalone closing recap works. > - **History edits and reasoning.** Anthropic's what's-new page confirms that editing earlier turns invalidates Fable 5.1 thinking blocks. Theo attributes the rule to preventing distillation attacks. That motive is his interpretation; the pages checked don't state it. > - **Writing density and mannered prose.** Fable 5.1 writes denser prose. Anthropic's fix defines "mannered prose" ("a dial worth turning" vs. "a parameter worth varying") and recommends putting it in a user message over the system prompt (verified). Theo's short version: "Please remove all mannered prose." > - **Formatting.** Fable 5.1 formats less than earlier models, so old anti-bullet rules over-correct. Theo's example: a rule that cuts formatting from 50% to 10% cuts 10% to 1%. His advice is to delete behavioral instructions from CLAUDE.md and add rules back only as needed. He says Claude Code now reads AGENTS.md when there's no CLAUDE.md (unverified), so AGENTS.md rules written for weaker tools can leak in. His workaround is a local CLAUDE.md that overrides them. > - **Finishing work.** Anthropic says to nudge Fable not to end its turn early on long async work. Theo's babysit-PR skill does this: poll for comments, act only on items newer than the last push, verify bot findings against source, rebase on main, don't scope creep, don't post filler comments. > - **Worked examples.** (1) He had Fable diagnose a failed-screenshot thread in T3 Code and open a PR. When a contributor claimed their closed PR was better, he let Fable choose: reopen theirs, take their commits, or finish his own. It merged pieces of both. (2) Before merging an Astra-built Rust runtime fork into Lake Bed (~26,000 lines, "Rust EV8", likely rusty_v8, unverified), he asked Fable whether it was ready. Fable said no, citing one-way migration, three features in one PR, and unproven live queries. It then built shadow mode, synthetic traffic, and runtime counters, ran for 1h34m on medium effort until it saturated his home IP, and later reported that a differential test forced 1,400 recedes in 160 steps with no wrong answers (the model's claim, relayed by Theo). > - **End states.** Theo's central advice: every prompt names where the work stops, like "babysit until green," "merge once green," or "file the PR and tell me." Branching prompts let the model either come back with concerns or keep going without him. > - **TypeScript analogy.** Re-checking what the model already verified is like type-checking a value TypeScript already guarantees. The value of offloading verification is the attention it frees up. > - **Remaining guide items.** Tell the model what to keep in compaction summaries. Use Anthropic's scope instruction ("don't fix, optimize or extend it in this change unlessโ€ฆ") if Fable over-reaches; Theo says he rarely sees over-reach. On safeguards: ask "are there any bugs" rather than "does this compile," give docs for lesser-known languages, and keep base64 out of context. Let the lead agent keep working while subagents run. Crop/zoom tools help vision. All of these are verified as present in Anthropic's guide. > - **Context and defaults.** Theo calls the "dumb zone" fear outdated. Fable 5.1's window is 1M tokens (verified), and T3 Code shows no context meter. Fable 5.1 cache reads cost a quarter of the Fable 5 rate ($0.25/MTok, 0.025ร— base input; verified), so compacting earlier costs more because it rewrites context. His advice: don't change defaults. He changed only full-screen and proxy routing, and turned memory off. Use auto or full permission modes, not supervised or accept-edits. > - **Uncertainty:** T3 Code features, subscription limits, and his run times come from Theo ๐Ÿ“„ **Full text:** [[Full Document Contents/Articles/So I was using Fable wrong....md|So I was using Fable wrong... by Theo - t3โ€คgg]] ## Highlights - [00:11:22] is interesting. Mannered prose substitutes metaphor and flourish for direct statements. Instead of, quote, a parameter worth varying, the mannered writer would produce, quote, a dial worth turning. Instead of this point still matters, they write, this point earns its keep. The phrase exists to display the writer, not to convey the idea, and the reader can tell. This is why mannered prose irritates. It makes the reader work harder so the writer can perform. Yep. Yep, this is slop, but I very much agree here. It makes the reader work harder so the writer can perform. If you don't want to write all this in your system prompt, or use the admittedly not good examples, just say, please remove all mannered prose. The next section is fun, it's about formatting. They call it that earlier [00:12:04] models would overuse bullets and bold in chat, and many prompts had a bunch of anti-formatting rules written to hold that down. I've seen a lot of system prompts with things like, don't use bullet points or bold, or use them less. If the model used it half the time, and you use that to tone it down, it might go from 50% of the time to 10%, but if the model does it 10% of the time and you have that same thing in there, it might not get down all the way to one, which you probably don't want. Generally speaking, any behavioral instructions that you have in your Claude MD are worth deleting and reconsidering. See how it feels to not have them at all, and then adjust over time as you need. So, if you have a Claude MD or an Agent MD that has a bunch of these instructions around formatting, delete ([View Highlight](https://read.readwise.io/read/01m37b26ee7z895e3v5r4yxxff)) - Note: [H2] Delete behavioral rules from CLAUDE.md before adding - Tags: atom/literature/h2 - Claude MD are worth deleting and ([View Highlight](https://read.readwise.io/read/01m34j6m5qa9ymj4ypzvq03qv6)) - Note: Full line (12:16): "any behavioral instructions that you have in your Claude MD are worth deleting and reconsidering." Anthropic's Fable 5.1 guide says anti-formatting rules over-suppress on this model. - Tags: action/h1, atom/literature/h3 - trying to give the model everything it ([View Highlight](https://read.readwise.io/read/01m34j6jqffpfzf4najgnrac7y)) - Note: Full line (17:20): "I'm spending less time trying to choose from the options the model gave me, and more time trying to give the model everything it needs to make good choices." - Tags: atom/literature/h2 - Every prompt should ([View Highlight](https://read.readwise.io/read/01m34j3523x7mkk07w9d25zj6b)) - Tags: atom/literature/h1 - a pretty clear place where it stops ([View Highlight](https://read.readwise.io/read/01m34j6zw62nvywg1daz6htpdj)) - Note: Full line: "Every prompt should have a pretty clear place where it stops when it's done." (26:34โ€“27:10). Define the end state: babysit till green, merge when green, or file and report. - Tags: atom/literature/h1 - [00:26:58] about. If you're finding that you're not getting as much out of the models or they're not doing what you want them to, really think about where you want the end state to be. Every prompt should have a pretty clear place where it stops when it's done. This one, for example, I said clearly, "Merge it once you've got everything green and you're happy with your changes." This one I said, "Can you file a PR making those changes for me?" This one I asked a question and I also said, "If so, merge these things in and test it." This one I actually really like cuz I kind of created a couple paths that we can take. If it isn't happy, then it can tell me that and we can talk about it. If it is happy, then it will start working. I don't have to come back. I'm trying to minimize the [00:27:41] amount of times I go back to a thread until the work is done. And here I gave it those two options. Option one is that it's not happy and it has more things we can talk about and work on. Option two is that it will keep going for an hour and a half straight without my intervention. And once I've done that, it's out of my head and it stays out of my head until I see the little marker in T3 code telling me to go back to it. I really don't think you're seeing the benefits of Fable if you're not prompting a bit wider these ways, letting the model start a bit earlier and then go a bit longer, giving it options for different paths it can take depending on what needs it decides on. I feel like the way a lot of y'all prompt kind of looks like this. Where you've defined a function that takes in a number and then you still check if it's ([View Highlight](https://read.readwise.io/read/01m37b243dmxnmkc9fhs019pf1)) - Note: [H1] Every agent prompt names its stopping point - Tags: atom/literature/h1 - [00:28:26] a number or not. Like the model can do these checks itself. It knows how to do it. So, it's a lot easier to let it just do the thing. If the model knows what does or doesn't work, if it can check things for you, you should let it do that. Cuz if you're not doing that, you're not really taking advantage of the benefits these models give you. The value of TypeScript isn't just that TypeScript makes your code safer. I would argue the bigger value is actually different. Once you remove this class of bugs, that part of your brain looking for them is freed up and it can be used for other more important things. If the computer can do the work of verifying the type safety across your app, then you are not using your brain well if [00:29:09] you're letting your brain do that same work. If the model can root cause a bug, fix it, verify that it's fixed, film a video showing the results, put up a pull request, monitor it to address all the review comments as they come in, and then tell you when it's done, if you're going through those steps with the model, you are the same person as the one who would write the type check after the type check in a TypeScript function. And to be clear, I'm not saying the code is wrong. In fact, in certain cases, as great as TypeScript is, it is important to know if that thing is exposed externally that it's being called the right way. There are times where it makes sense to write the same thing twice. There are times where it makes sense to waste some of your brain to quadruple check that. I don't think it's ([View Highlight](https://read.readwise.io/read/01m37b2ay1v5n6q3qj8cxwad3h)) - Note: [H4] Let the model run checks it already knows - Tags: atom/literature/h3 - for them is freed up and it can be used ([View Highlight](https://read.readwise.io/read/01m34j6nrq3pfn1gtt6dhby7zm)) - Note: Full line (28:49): "Once you remove this class of bugs, that part of your brain looking for them is freed up and it can be used for other more important things." TypeScript analogy for delegating verification. - Tags: atom/zettel/z1 - [00:31:16] used the same way across different surfaces. Once you have this set up, your agents will just write translatable code automatically, and it is as simple as filing a PR and the CI will kick in and get things going. Serve your app to the rest of the world, it's soitof.link/gt. First one we have here is that you can tell the model what to preserve in compaction summaries. Generally speaking, I think people overthink compaction, but if you've noticed the model isn't keeping certain things that you want it to, or that it's losing track of stuff, you can add that to your agent MD, or if you're building an application with Fable, you can add it to your system prompt. Since Fable is doing the compaction for your Fable threads, if you tell it what you want it to maintain in the compaction, it is actually capable of remembering that and doing it, which I think is really cool. Anthropic calls out that the model can [00:31:58] sometimes do things like change files it shouldn't, fixing nearby code, extending behavior the task didn't mention, when given to open-ended a request. I haven't seen this that much. I don't know if there's something in my system prompt that's preventing that, but I haven't seen so much of this like model touching things it shouldn't type stuff, even when I ask it to. It's often a little more reserved than I would have expected. But if you are seeing that behavior, you can absolutely steer it through your prompts and your system prompts. They say that with the following instruction, "Unrequested additions and committed test code drops substantially with no measurable change in task success." If, while working or testing, you find pre-existing bugs, performance concerns, or behaviors the task doesn't mention, don't fix, ([View Highlight](https://read.readwise.io/read/01m37b28p3gknxbww9vcm9fh1e)) - Note: [H3] Anthropic's follow-up instruction cuts unrequested edits - Tags: atom/literature/h3 - the hundreds of billions of dollars of ([View Highlight](https://read.readwise.io/read/01m34j6qq9e0a1bcbsk1e3p9zq)) - Note: Full line (38:33): "some random post you saw on Twitter isn't more clever than the hundreds of billions of dollars of incredible people..." Defaults-are-best rests on Anthropic's resources, not measured results; Theo himself turned memory off. - Tags: fallacy/appeal-to-authority - [00:39:51] around problems that haven't existed for at least a year. The models are really good at managing their context. You don't have to do it for them. The hardnesses are really good at using the different things on your machine. You don't have to set that up yourself. The permission systems and the auto approval modes are very good now, and you definitely shouldn't use accept edits or supervised. We recently added anti-gravity support to T3 code, and after all the requests we got to add accept edits mode for anti-gravity because they can't trust the Gemini models enough and they don't have an auto mode yet. I was this close to just removing anti-gravity support. Like, supervise and auto accept edits are tools from the past, from like 2024 even at like newest. Use auto if you're careful and use full if you're not, [00:40:34] period. The points I'm trying to make here are simple. The tools are good now. Any customization or careful configuration you've done to work around the flaws are probably out of date. And a lot of your own mental model around this stuff is also out of date. Reset it. Pretend you're on a brand new machine, delete everything, install Claude Code from scratch, set it up with as little as possible. I bet you'll be surprised how capable it is. And from there, slowly start adding small things that solve your small problems. I think I said all I have to on this point. I hope this one was helpful. It's kind of different from how I normally do these types of videos, less about my specific day-to-day work and more about the philosophical way to take advantage of tools as powerful as these models. People 5.1 was an incremental ([View Highlight](https://read.readwise.io/read/01m37b2d93041t13j7v7ndrtzg)) - Note: [H5] Workaround configs go stale with each model release - Tags: atom/literature/h3 - the flaws are probably out of date ([View Highlight](https://read.readwise.io/read/01m34j70x2sg5ve877jbmt3dvx)) - Note: Full line (40:36): "any customization or careful configuration you've done to work around the flaws are probably out of date ... Reset it." - Tags: atom/fleeting/f1