Claude Fable 5.2 prompting guide and community templates
Claude Fable 5.2 ($2.50 / $12 per 1M tokens on KeelRouter) follows instructions more literally than Opus 5.5 and Fable 5.1, and its best community work comes from making it write, run and inspect code in a loop. Below are the six prompting adjustments from Anthropic's technical guide plus copyable templates distilled from the first week of public Fable 5.2 builds.
Models: claude-fable-5-2
1. Pick effort by task, not by habit
Thinking is always on in Fable 5.2 and bills at the output rate. You set depth with output_config.effort (low, medium, high, xhigh, max). Because each level uses a different token budget than on Opus 5.5 or Fable 5.1, re-test your workload instead of copying your old setting.
Start at high (the API default) or medium (the Claude Code default). On Artificial Analysis, moving from medium to high jumped the Intelligence Index from 56 to 62, while moving from high to max raised the average task bill from $9.08 to $26.54 at list prices for three points.
| Effort | Best for | Watch out for |
|---|---|---|
| low | Fast subagents, classification, tightly scoped edits | Highest chance of stopping mid-task on multi-step work |
| medium | Interactive coding, Claude Code sessions, daily engineering | Can pause early and ask whether to continue; add a completion rule |
| high (API default) | Hard debugging, architecture reviews, autonomous agent runs | Deliberates on every turn, including short questions |
| xhigh | Long unattended coding or creative-code builds where you measured a gain | Roughly 1.6x the per-task token spend of high |
| max | Hard science, math, and benchmark ceiling checks | Nearly 3x the cost of high and ~45 minutes per index task |
Switching top-level effort mid-conversation invalidates the Anthropic prompt cache prefix.
2. Stop early exits and set codebase ownership
At low and medium effort, Fable 5.2 sometimes stops when it hits a minor tool error or finishes the first phase, then lists what remains. Adding an explicit completion rule to the system prompt cut unfinished coding sessions in half in Anthropic’s internal replay, while raising output tokens by about 30%.
Fable 5.2 also checks who owns the code. When a prompt treats the repo as someone else’s, the model patches around existing structure and leaves duplicate helpers alone. Telling it that it owns the architecture made it consolidate duplicated code in roughly half of Anthropic’s test runs (vs under 10% without the line), at about 1.5x the output tokens. Include the ownership line for greenfield builds and refactors; omit it when you want a minimal diff.
System prompt: autonomous agent completion & status
Use for long multi-step coding or tool-use loops at medium or high effort.
Complete the entire task before yielding back. When you encounter a recoverable obstacle (a test failure, a timeout, an empty search result, or a tool error), diagnose the cause and work around it without stopping to ask. Respect explicit boundaries: do not touch files marked off-limits, do not bypass missing permissions, and ask before destructive or irreversible actions (such as dropping tables or pushing to production). Every 3 to 4 tool calls, output one plain-text sentence stating what you just verified and what you are testing next. Finish with a self-contained summary for a reader who did not watch the tool trace: what changed, how you verified it, and any open blockers.
System prompt: hard code review (the 4/4 bug-hunter setup)
In paddo.dev’s 52-run TypeScript benchmark, Fable 5.2 caught subtle post-test regressions 4/4 times when asked to audit edge cases across callers.
Review this diff as the engineer responsible for production reliability. Do not stop at syntax or whether existing unit tests pass. Trace every modified function across its callers, check state transitions, race conditions, partial failures, and unit mismatches, and verify what happens when upstream inputs are empty, stale, or out of range. List only concrete bugs with the exact file, line range, failure trigger, and minimal fix.
3. Delete legacy prompt lines that backfire on Fable 5.2
Instructions written to tame older models often waste tokens or trigger refusals on Fable 5.2. Before migrating an agent or skill, clean out these five patterns:
| Legacy line in prompt | Effect on Fable 5.2 | Fix |
|---|---|---|
| "Answer directly without thinking" | Ignored at medium effort and above; thinking cannot be turned off | Delete the line and set output_config.effort to "low" or "medium" |
| "Write out your step-by-step reasoning in the response" | Can trigger stop_reason: "refusal" under reasoning_extraction | Remove it; read the thinking summary block instead |
| "You have a budget of 100,000 tokens" | Paces output to fill the stated budget even when less is needed | Remove token-budget numbers from prompt text; cap max_tokens in the API call |
| "Always spawn subagents for subtasks" | Spawns unnecessary subagents and multiplies session cost | Let it decide when to delegate, and run subagents on Haiku 5.5 or Sonnet 5.5 |
| Editing earlier messages in a stored thread | Returns HTTP 400 when thinking blocks are re-sent | Append new instructions in the latest user turn instead of mutating history |
4. Community templates: 3D, Three.js, games and code painting
The viral Fable 5.2 demos after launch—Tech Friend AJ’s 444-frame pelican riding a bicycle in Blender (1.1M output tokens), RezAIT00’s 1888 Paris voxel island in Three.js, Jake Eaton’s 700,000-stroke Python paint engine, and Felix Rieseberg’s 8-hour Saltline browser FPS—all use the same loop: generate everything in code with zero external assets, render test frames, visually inspect the screenshots, fix geometry or lighting flaws, and only then run the final render.
Headless Blender 3D animation via Python (Claude Code)
Renders low-res check frames first so the model fixes clipping and proportions before the full GPU render.
Create a [10]-second, [1920x1080, 30fps] 3D animation of [subject and action] by driving Blender headless from the command line with Python. Build all meshes, rigging, skin weights, materials, lighting, and camera motion procedurally in Python—do not download external models or textures. Workflow: 1. Build the scene and render 4 low-resolution keyframe PNGs (front, side, 3/4, camera view). 2. Inspect the rendered PNGs for mesh clipping, broken proportions, flat lighting, or dead framing. Fix every issue you see in the script and re-render the test frames until they hold up. 3. Log the render time per frame, render the full sequence, and encode to MP4. Deliver both the final MP4 and the Python script.
Self-contained Three.js scene with deterministic frame capture
Exposing window.renderAt(t) lets a headless browser step frame-by-frame for smooth video export.
Build a single self-contained HTML file using Three.js that renders a [14]-second looping 3D scene at [1280x720, 30fps]: [describe scene, lighting, and motion already active at t=0]. Requirements: - Generate all geometry, shaders, particles, and materials in code. - Make the animation strictly deterministic and expose window.renderAt(seconds) so any timestamp renders the exact frame. - Open the page in a headless browser, capture screenshots at t = 0s, 3s, 7s, and 12s, inspect them for visual bugs or frame-rate bottlenecks, and refine the scene before encoding the final MP4.
Playable single-file browser game with automated playtest
Keep scope to one arena or mechanic and push the budget into procedural visuals, audio, and feel.
Build a polished, playable browser game in a single HTML file: [genre, one arena/level, core movement and scoring rules]. - Generate all 3D/2D geometry, procedural textures, particle effects, and WebAudio sound effects in code with no external assets. - Expose a debug state hook and run an automated headless playtest that simulates player inputs, checks for console errors, verifies collision and scoring, and captures screenshots of gameplay. - Fix any broken physics, unreadable UI, or frame-time spikes before delivering the final file.
Procedural bristle-brush painting engine in Python
Inspired by Jake Eaton’s stroke-by-stroke painting workflow—no image diffusion models or photo tracing.
Step 1: Define a fictional painter—era, subject matter, palette, brush physics, and how they layer coarse underpainting vs fine detail strokes. Step 2: Write a standalone Python program that paints [subject] in that artist's style on a [2000x1500] canvas. Simulate bristle brushes, pigment mixing, canvas tooth, and stroke direction; place every stroke algorithmically with no image generation APIs and no source image tracing. Step 3: Run the script to output a PNG, inspect the image against the painter's style, and iterate on the brush engine, composition, and lighting for at least 3 passes before finishing.
API call with effort and completion system prompt (cURL)
Works on both https://api.keelrouter.com/v1/messages and https://api.keelrouter.com/v1/chat/completions with one KeelRouter key.
curl https://api.keelrouter.com/v1/messages \
-H "x-api-key: $KEELROUTER_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-fable-5-2",
"max_tokens": 32000,
"output_config": { "effort": "high" },
"system": "Complete the entire task before yielding back. Diagnose recoverable tool or test errors yourself and give a one-line status update every few steps.",
"messages": [
{
"role": "user",
"content": "Audit src/lib/proxy/chat.ts for stream settlement edge cases and write a reproduction test."
}
]
}'FAQ
- What is the best effort setting for Claude Fable 5.2?
- Start at high for hard coding and autonomous agents, or medium for interactive Claude Code sessions. On Artificial Analysis, high reached an Intelligence Index of 62 for $9.08 per task at list prices, whereas max reached 65 for $26.54.
- How do I stop Claude Fable 5.2 from pausing mid-task?
- Add a short completion block to your system prompt instructing it to work through recoverable errors (timeouts, failed tests, empty queries) and only stop for explicit boundaries or destructive actions. In Anthropic’s tests at medium effort, this halved early stops.
- Why did Fable 5.2 refuse a prompt that asked for its reasoning?
- Fable 5.2 treats requests to print raw chain-of-thought in the visible reply as a reasoning_extraction refusal category. Remove lines asking it to explain its internal thinking step by step, and read the thinking blocks returned by the API instead.
- How much do long creative-coding runs cost on KeelRouter?
- On KeelRouter, Fable 5.2 costs $2.50 per 1M input tokens, $12 per 1M output tokens, and $0.20 per 1M cached input tokens. A 1.1M-output-token Blender build like the pelican demo costs about $13.200000000000001 in output tokens.
More guides
KeelRouter is an independent service and is not affiliated with Anthropic. Model names are trademarks of their owners, used here only to name the model a request runs on.