---
name: fable-5-prompt-patterns
description: "Prompting patterns tuned for Fable 5 — instruction style, thinking budgets, tool-use, long-context recall. The prompt-engineering playbook for Claude Fable 5: how its instruction-following differs from Opus 4.8 and Sonnet 4.6, when to use extended thinking vs fast paths, tool-use orchestration patterns, long-context (1M token) recall strategies, and the anti-patterns that worked on 4.x but regress on Fable."
license: MIT
---

# Fable 5 Prompt Patterns

A prompt-engineering playbook for Claude Fable 5 (`claude-fable-5`) — Anthropic's most capable widely released model. Fable 5 follows instructions, paces long agentic loops, and handles thinking differently enough from Opus 4.8 and Sonnet 4.6 that prompts tuned for the 4.x family often *regress* on it. This skill is for engineers porting production prompts, harnesses, and agent loops to Fable 5 (or `claude-mythos-5` under Project Glasswing).

## When to use it

- You moved a working Opus 4.7/4.8 prompt to Fable 5 and output quality dropped or turns ballooned.
- You're building long-horizon agents (overnight refactors, multi-hour research) and need timeout/streaming/progress patterns.
- You're deciding between `effort` levels, or whether to reach for Task Budgets vs `max_tokens`.
- You're wiring tool-use orchestration (sub-agents, memory, custom `send_to_user` tools) and want the patterns that actually hold on Fable 5.
- You hit a `stop_reason: "refusal"` and need a fallback strategy.

## What it does

It encodes the Fable-5-specific deltas as ready-to-paste prompt snippets and config rules:

- **Thinking is always on.** Omit the `thinking` parameter entirely — `{type: "disabled"}` and `{type: "enabled", budget_tokens: N}` both return 400. Depth is controlled by `output_config: {effort: ...}` (`low`→`xhigh`/`max`), not a token budget. The raw chain of thought is never returned; use `display: "summarized"` for a readable summary.
- **Effort sweeps including `low`/`medium`.** Fable 5 at `low` often beats prior models at `max`. Default `high`; reserve `xhigh`/`max` for the hardest work.
- **Anti-overplanning and no-tidying snippets** to counter Fable 5's tendency to deliberate or refactor beyond the ask at higher effort.
- **Grounded-progress and boundary instructions** that nearly eliminate fabricated status reports and unrequested side-actions on long runs.
- **Async sub-agent delegation** patterns (long-lived peers beat spawn-and-block) and **file-based memory** prompts.
- **Refusal handling**: branch on `stop_reason` before reading `content`; opt into the server-side `fallbacks` parameter by default.

## Usage example

```python
client.beta.messages.create(
    model="claude-fable-5",
    max_tokens=64000,
    output_config={"effort": "high"},        # no `thinking` param — always on
    betas=["server-side-fallback-2026-06-01"],
    fallbacks=[{"model": "claude-opus-4-8"}], # opt-in refusal recovery
    messages=[...],
)
# Stream long turns so a 128K max_tokens doesn't hit HTTP timeouts.
```

## Tips & gotchas

- **Same tokenizer as Opus 4.8** — counts barely move from 4.7/4.8, but re-baseline cost (Fable 5 is priced above Opus tier). Coming from 4.6 or older, re-run `count_tokens`.
- **Requires 30-day data retention.** A ZDR org gets `400 invalid_request_error` on *every* request — check retention config before debugging the payload.
- **Plan for minutes-long turns.** A 15-minute single request at high effort on a hard task is normal; build async check-ins and progress UX, not blocking calls.
- **De-prescribe migrated prompts.** Step-by-step scaffolding from older models reduces Fable 5 quality — state the goal and constraints, A/B with the scaffolding removed.

## FAQ

**Is this the default Opus upgrade?** No. For "upgrade to the latest model," target `claude-opus-4-8`. Use Fable 5 only when explicitly chosen — pricing exceeds Opus tier.

**How do I set a thinking budget?** You don't. `budget_tokens` is removed (400). Use `output_config.effort` for depth and the beta `task_budget` (`task-budgets-2026-03-13`, min 20K) when you want the model to self-pace an agentic loop.

**Can I prefill the assistant turn?** No — last-assistant-turn prefills 400. Use `output_config.format` (structured outputs) or a system-prompt instruction instead.
