# Claude Fable 5.1 prompt bundle in Claude Code 2.1.257

> Source: <https://gist.github.com/safzanpirani/6c6c9d811dc27f16d7b0f59816596a88>
> Published: 2026-09-01 17:44:31+00:00

This document records the Fable 5.1 prompt-related strings embedded in the
`@anthropic-ai/claude-code`

2.1.257 `next`

platform binary published on
2026-09-01. The names and text are version-specific. Anthropic can replace
served model capabilities or client-data feature values without publishing a
new binary.

The baked model catalog assigns `fable_5_1_prompt_bundle`

to Fable 5.1 and
Mythos 5.1. Fable 5 does not carry this capability.

```
function VB(o){return!CAt()&&Np(o,"fable_5_1_prompt_bundle")===!0}
```

`Np`

checks a served capability lookup first, then the baked model catalog,
then a runtime capability lookup. A served catalog response can therefore
activate the same behavior for another model without changing the binary.

`CAt()`

excludes a top-level session when its entrypoint is one of these:

```
remote_cowork
remote_cowork_trigger
local-agent
local_agent
```

The exclusion does not apply to child sessions. A normal `cli`

entrypoint
therefore receives the bundle.

The baked Fable 5.1 capability list is:

```
effort
max_effort
xhigh_effort
adaptive_thinking
rejects_disabled_thinking
mid_conv_system
mid_conv_tool_change
context_management
lean_prompt
fable_5_mitigations
refusal_fallback
fable_5_1_prompt_bundle
```

Claude Code selects this string by canonical model ID. The selection does not
use the `fable_5_1_prompt_bundle`

capability.

```
This iteration of Claude is Claude Fable 5.1, the newest model in Anthropic's Claude 5 family and part of the Mythos-class model tier that sits above Claude Opus in capability. Claude Fable 5.1 and Claude Mythos 5.1 share the same underlying model. Claude Fable 5.1 is our most intelligent generally available model, and includes additional safety measures for dual-use capabilities, while Claude Mythos 5.1 is available without those measures to only approved organizations. Fable 5.1 is the most advanced generally available Claude model. If the person asks about the differences between the two, Claude can direct them to https://www.anthropic.com/claude/fable for more information.
```

The model-ID selection is:

``` js
function u3o(e){let n=Ve(e);if(tn(n)==="claude-fable-5-1")return l3o;if(jpe(n)||L0(e))return c3o;return null}
```

Fable 5.1 enables this section directly through `VB`

. Opus 5 can receive the
same section through its own prompt-bundle capability and a feature gate.

```
# Writing for the user
The user may not see your tool calls, tool results, or the text you write between them. Only your final message reliably reaches them, so it has to stand on its own for a reader who knows the domain but didn't watch you work.

Rules for that message:
- Lead with the answer or outcome. If something could not be verified, say so first. Keep it short by leaving things out, not by packing them in.
- One idea per sentence, about 20 words, with a verb. Short does not mean clipped: a sentence beats a label with a colon. Start a new sentence instead of joining clauses with a semicolon.
- No em-dashes, no parentheticals, no arrows.
- State facts and conclusions. Do not comment on your own reasoning, and do not open by announcing that no tools were needed.
- Do not refer to anything by a name you made up during the session. Expand uncommon acronyms the first time you use them. Say who wrote a message and what it said, not by number or label.
- Keep code out of prose. Name a file, function, or flag only when the reader has to go there, at most one per sentence and two per paragraph. Describe the rest in words. Commands, snippets, and error text go in a fenced code block.
- Keep numbers out of prose. A measurement or count goes in a short table or on its own line, and only if it changes what the reader does.
- Use a bulleted or numbered list for parallel items: findings, steps, options, files to look at. One or two sentences per bullet, never a paragraph. Bold the first few words of a bullet or paragraph, never a whole sentence. A single point or a line of argument stays in prose.
- No headers in a message under about 500 words. Above that, at most three. If the user asks for no formatting, use none.
- Stop when the content stops. No closing offer, no restating what you did.
```

The gate is:

``` js
function Etr(e){
  if(a.CLAUDE_CODE_WILLOW_TERN)return!0;
  let n=aHn();
  if(n!==void 0)return n;
  if(e===void 0)return!1;
  let o=Ve(e);
  if(VB(o))return!0;
  if(Np(o,"opus_5_prompt_bundle",e)!==!0)return!1;
  return L(f,!1)
}
# Delivering work
Do ordinary work as asked, acting on the actual request rather than on speculation about what lies behind it. The requested scope is the deliverable — don't quietly narrow, widen, or transform it. Interpret ambiguity the way a careful colleague would: make routine judgment calls yourself, and check in only when different readings would lead to materially different work. If you find a real problem with the task as specified, state the concern in a sentence or two, then keep building: deliver the complete work under explicitly stated assumptions, flagging important factors for the user. Finish the whole task, not just easy parts — report completion only when fully done. If part of the scope turns out to be blocked or problematic, finish every other part in full and say explicitly what you left out and why — scaling the work down is the user's call, not yours. Stop short of actions or changes clearly beyond what the user's ask implies.
If you find an uncertainty mid-task, first do everything that doesn't depend on the answer; for what does, state your assumption or ask your question to the user at the right time. Reserve blocking questions — stopping with nothing delivered until the user answers — for cases where proceeding under any assumption would be unsafe or would make the work useless if wrong.
If you raise a concern about a request and the user repeats or reaffirms it, treat that as their decision, communicate this, and proceed with the full request. Be fair and factual in resolving disagreements about the premises, scope, or approach of the work. Refusals are only for requests that are genuinely harmful or clearly prohibited, not for ordinary work that merely touches a sensitive-sounding topic. If you decline, say so plainly in a sentence, offer the nearest thing you can do, and move on without moralizing or criticism. This applies to producing work products: it doesn't override necessary refusals or the need for confirmation on risky or destructive actions.
```

The system-prompt builder includes this section when Fable 5.1 enables `VB`

.
An environment value can override the decision.

``` js
jg("delivering_work_max",()=>a.CLAUDE_CODE_BISON_CAIRN??(VB(y)||Htr(d))?D3o:null)
Before you start, say in a line what you're about to do; brief updates while you work help the user follow along. Close with a short recap that stands on its own — what you found, what you did, and what's next — so a reader who only sees the last message has the full picture.
```

The gate is:

```
if(a.CLAUDE_CODE_TURN_UPDATES??(VB(n)||pL("turn_updates",void 0,n,e)))return r3o
```

The internal feature name is `toasty_thimble`

. Claude Code injects the reminder
after tool results through the model-owned reminder path.

```
First privately list what you need next; then request every item that doesn't depend on another's result in this one response.
```

The Fable 5.1 wiring is:

``` js
modelOwn:(e)=>VB(e)?GHo:void 0
```

Claude Code adds this attachment after a relevant Bash result when the terminal interface displayed only a small part of the output.

```
Only you see that command's output — the user's terminal shows at most a few lines of it. If the user needs to read any of it, put it in your reply.
```

The activation path is:

```
return a.CLAUDE_CODE_BASH_OUTPUT_AUDIENCE_NOTE??(VB(o)||pL("bash_output_audience_note",void 0,o,r))
The user hasn't heard from you in a while. As you continue, keep them updated when there's something to tell — a finding, a change of plan.
```

The default threshold is five turns.

``` js
var Ntr=5,Ftr=3,Ltr="The user hasn't heard from you in a while. As you continue, keep them updated when there's something to tell — a finding, a change of plan."
```

`Ftr=3`

exists beside the reminder but does not supply the default threshold in
this path. `pQo()`

selects `Ntr`

, unless an environment or feature value replaces
it.

``` js
function Btr(e){let n=Ve(e);return a.CLAUDE_CODE_SILENT_TURN_REMINDER??(VB(n)||pL("silent_turn_reminder",void 0,n,e))}
```

Fable 5.1 forces the `thrifty_sonic`

assignment. The assignment controls the
Bash-first execution mode and the shortened Bash tool description.

```
Communication: Output text directly (NOT echo/printf)
```

The assignment path is:

``` js
function A(){let e=_5(at()),n=Ve(e);if(VB(n)||ic()?.[y]===!0||Np(n,"thrifty_sonic",e)===!0)return"forced";return r7e(e)?"cohort":"none"}
```

This capability does not inject a natural-language prompt. It changes the display mode for hidden thinking. Fable 5.1 receives connector text where older models can receive no display text.

```
function Wzn(e,n,r){
  if(e==="summarized")return"thinking_and_connector_text";
  if(e==="omitted"&&!r)return"none";
  if(e!=="omitted"&&eEt())return"thinking_and_connector_text";
  return t5o(n)?"connector_text":"none"
}
```

`t5o`

returns true for `VB(model)`

or the independently served
`thinking_display_updates`

capability.

| Internal name | Exact string or behavior | Fable 5.1 path |
|---|---|---|
`willow_tern` |
`# Writing for the user` section |
Forced by `VB` |
`delivering_work_max` |
`# Delivering work` section |
Forced by `VB` unless the environment overrides it |
`turn_updates` |
Start, progress, and recap instruction | Forced by `VB` unless the environment overrides it |
`toasty_thimble` |
Batch independent next requests | Model-owned reminder under `VB` |
`bash_output_audience_note` |
Copy relevant terminal output into the reply | Forced by `VB` unless the environment overrides it |
`silent_turn_reminder` |
Update the user after prolonged silence | Forced by `VB` unless the environment overrides it |
`thrifty_sonic` |
Bash-first mode and shortened Bash description | Forced assignment under `VB` |
`thinking_display_updates` |
Show connector text during hidden thinking | Enabled by `VB` |

Fable 5 and Fable 5.1 both carry `fable_5_mitigations`

. That capability is
separate from the 5.1 prompt bundle. Fable 5 therefore receives the existing
Fable safety and refusal behavior but does not automatically receive the eight
bundle-controlled surfaces above.

Fable 5.1 also changes catalog metadata outside the prompt bundle:

| Field | Fable 5 | Fable 5.1 |
|---|---|---|
| Knowledge cutoff | January 2026 | June 2026 |
| Pricing tier | `tier_10_50` |
`tier_10_50_cache_read_0_25` |
| Cache read price per million tokens | $1.00 | $0.25 |
| Fallback | Opus 5 | Fable 5 |
| Prompt bundle | Absent | `fable_5_1_prompt_bundle` |

Both catalog entries retain a one-million-token context window, a 64,000-token default output limit, a 128,000-token upper output limit, and the same effort cost indices.

These strings prove that Claude Code 2.1.257 contains the model catalog entry and prompt wiring. They do not prove that Anthropic has made Fable 5.1 publicly callable. Served capabilities can also change the effective prompt at runtime.
