# Claude Code v2.1.170

> Claude Code v2.1.170, released 9 Jun 2026 (2026-06-09). 15 entries read out of the shipped bundle. Unofficial, and not affiliated with Anthropic.

Web version: https://changelogs.core-directive.com/v/2.1.170

This release introduces Claude Fable 5, a new highest-tier model for the hardest and longest-running tasks, replacing the previous Opus 4.8 launch announcement with a Fable 5 announcement banner. The release also hardens how tool calls are handled when a server-side model fallback retracts in-flight work, adds a new SDK protocol event for model refusal fallbacks, and tracks usage-credit overage state from the API.

## New Features

### Claude Fable 5 Model Support

**What**

Claude Fable 5 is now a supported model in Claude Code, positioned as the most capable option for the hardest and longest-running tasks.

**Usage**

`claude --model fable claude --model claude-fable-5` **Details** - Alias `fable` (and `fable[1m]` for 1M context) resolve to Fable 5 - Full model IDs: `claude-fable-5` (firstParty, vertex, foundry, gateway), `anthropic.claude-fable-5` (Bedrock/Mantle) - Context window: 64k default output / 128k max — same as Opus 4.8 - Default effort level: `high` (same as Opus 4.8) - Fable 5 appears at the top of the `/model` picker for eligible accounts - A companion model, `claude-mythos-5`, is also registered internally for the safety-refusal fallback lane - The `/model` command's help text now reads: "Provide an alias for the latest model (e.g. 'fable', 'opus', or 'sonnet') or a model's full name (e.g. 'claude-fable-5')." **Evidence** Model ID registration and picker entry (search for `"claude-fable-5"` and `"Fable 5 · Most capable for your hardest and longest-running tasks"`)

### Fable 5 Environment Variables for Custom Providers

**What**

Four new environment variables let BYOC (Bring Your Own Claude) and API-gateway deployments point Claude Code at a custom Fable 5 endpoint.

**Usage**

`export ANTHROPIC_DEFAULT_FABLE_MODEL=my-fable-5-endpoint export ANTHROPIC_DEFAULT_FABLE_MODEL_NAME="My Fable 5" export ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION="Custom Fable 5 model" export ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES=vision,tools` **Details** - `ANTHROPIC_DEFAULT_FABLE_MODEL` — custom Fable 5 model ID (enables the alias and fallback logic even on non-firstParty providers) - `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` — display name shown in the model picker - `ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION` — description shown alongside the model - `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` — capabilities string for the model - `VERTEX_REGION_CLAUDE_FABLE_5` — region override for Fable 5 on Vertex AI (same pattern as the existing `VERTEX_REGION_CLAUDE_*` vars) - When `ANTHROPIC_DEFAULT_FABLE_MODEL` is set, Claude Code shows a "Custom Fable model" entry in the picker in place of the default Fable 5 entry (on non-firstParty providers) - A new fallback hint is also surfaced for providers where these vars are absent: "To enable automatic fallback on this provider, set `ANTHROPIC_DEFAULT_FABLE_MODEL` to your Fable 5 model ID and `ANTHROPIC_DEFAULT_OPUS_MODEL` to your Opus 4.8 model ID." **Evidence** Env var registration (search for `"ANTHROPIC_DEFAULT_FABLE_MODEL"`) and custom-model picker entry (search for `"Custom Fable model"`)

### Fable 5 Launch Announcement Banner

**What**

First-party users who have Fable 5 available see a one-time "Fable 5 is here!" announcement at session start, replacing the old Opus 4.8 announcement.

**Details**

- For users on Fable 5: "Fable 5 is here! Our newest model for complex, long-running work"
- For users not yet on Fable 5 but with access to the picker: "Meet Fable 5, our newest model for complex, long-running work. Try anytime with /model."
- If the account uses plan limits and the plan-limits end date is in the future: "Included in your plan limits until [date], then switch to usage credits to continue."
- Controlled by the `tengu_saffron_lattice` feature flag (fields: `enabled`, `planLimitsEndDate`, `hideRateLimitsDescription`)
- Shown once; suppressed after first view via `tengu_fable5_launch_shown` telemetry event

**Evidence**

Announcement component and feature flag (search for `"Fable 5 is here!"` and `"tengu_saffron_lattice"`)

- Flag `tengu_saffron_lattice`: Not enough to say (read for one account on one subscription tier against v2.1.170; this account: no value returned, anonymous baseline: no value returned, compiled default: not a boolean we can read) These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

### `CLAUDE_CODE_DISABLE_MOUSE` Environment Variable

**What**

A new environment variable to disable mouse support in the CLI.

**Usage**

`export CLAUDE_CODE_DISABLE_MOUSE=1 claude` **Details** - When set to any truthy value, mouse interaction support is disabled in the terminal UI - Useful in environments where mouse events interfere with other terminal applications or multiplexers **Evidence** New `rEH()` function (search for `"CLAUDE_CODE_DISABLE_MOUSE"`)

### Model Refusal Fallback SDK Protocol Event

**What**

A new `model_refusal_fallback` system event is now emitted over the SDK protocol whenever the primary model returns a safety refusal and the session automatically retries on a fallback model.

**Details**

- Event fields: `trigger: "refusal"`, `direction: "retry" | "revert" | "sticky"`, `original_model`, `fallback_model`, `request_id`, `api_refusal_category` (e.g. `"cyber"`, `"bio"`), `api_refusal_explanation`, `retracted_message_uuids`
- `retracted_message_uuids` lists the wire UUIDs of messages that were rolled back by the fallback — SDK consumers should evict these from transcript state on receipt
- The `supersedes` field on incoming messages was also updated: it can now include tombstoned `tool_result` frames from the refused leg, not only assistant frames
- `refusalFallbackLaneEnabled` and `refusalFallbackSettingToggleVisible` are now communicated from the daemon to the main process at startup rather than read directly from a feature flag, making these states available to SDK consumers via init

**Evidence**

New schema definition (search for `"model_refusal_fallback"` and `"retracted_message_uuids"`)

## Improvements

### xhigh Effort Warning

When a model session is set to `xhigh` (max) effort, a new advisory message is now shown in the model selector: "May use excessive tokens resulting in long response times or overthinking. Use sparingly for the hardest tasks."

**Evidence**

New constant (search for `"May use excessive tokens resulting in long response times or overthinking"`)

### Cleaner Safety Refusal Error Messages

The error message displayed when a model refuses a request for safety reasons was reworded. Previously the wording varied based on category ("cybersecurity or biology topics" vs "sensitive topics"); it now consistently reads: "[Model] has safety measures that flag messages on most cybersecurity or biology topics (https://www.anthropic.com/legal/aup). They may flag safe, normal content as well. These measures let us bring you Mythos-level capability in other areas sooner, and we're working to refine them."

**Evidence**

Updated refusal error renderer (search for `"has safety measures that flag messages on most cybersecurity or biology topics"`)

### Model Picker Deduplication

The model option list now de-duplicates entries by value before rendering. Duplicate rows are silently dropped with a warning log entry: "model options: dropping duplicate row [label] (value [value])". Disabled entries are sorted to the bottom of the list, after all enabled options.

**Evidence**

New deduplication pass (search for `"model options: dropping duplicate row"`)

### Subagent Model Picker Includes Fable

The model picker used when configuring subagents (e.g. in the Workflow tool's agent options) now includes a Fable option alongside Sonnet, Opus, and Haiku. This allows subagents to be spawned on Fable 5 when available.

**Evidence**

Subagent model list (search for `"Most capable for your hardest and longest-running tasks"` in the subagent picker function)

### Fable 5 Noted in System Prompt Model Guidance

The system prompt context now mentions Fable 5 when describing available models: "The most recent Claude models are Fable 5 and the Claude 4.X family. Model IDs — Fable 5: '[id]', Opus 4.8: '[id]', Sonnet 4.6: '[id]', Haiku 4.5: '[id]'."

**Evidence**

Updated system prompt string (search for `"The most recent Claude models are Fable 5"`)

### `overageInUse` Rate Limit Field

A new `overageInUse` boolean is parsed from the `anthropic-ratelimit-unified-overage-in-use: true` response header. When this field is set on the rate limit state, registered overage listeners are notified. This enables the UI to react immediately when Fable 5 usage transitions into the credit-based overage regime.

**Evidence**

Header parsing and listener notification (search for `"anthropic-ratelimit-unified-overage-in-use"`)

### Model Not Found Error Now Carries `notFound` Flag

When model validation fails because the model ID was not found (HTTP 404 or message containing "model:"), the returned validation object now includes `notFound: true` in addition to the error string. This allows callers to distinguish "not found" from other validation failures.

**Evidence**

Model validation error handling (search for `"notFound: !0"`)

### Settings Documentation Updated for Fable

The internal settings schema reference (used by the `update-config` skill and related tooling) now shows `fable` as a valid model option: `"model": "sonnet", // or "fable", "opus", "haiku", full model ID`.

**Evidence**

Settings schema doc (search for `"// or \"fable\", \"opus\", \"haiku\""`)

### Effort Flag Passthrough Now Requires All Three Models Launched

The `--effort` flag is now passed to subprocesses (e.g. headless subagent spawns) only when all three model launch flags — Opus 4.7, Opus 4.8, and Fable 5 — have been acknowledged by the user (`unpinOpus47LaunchEffort`, `unpinOpus48LaunchEffort`, `unpinFable5LaunchEffort` all true). Previously only Opus 4.7 and Opus 4.8 were required.

**Evidence**

Conditional effort passthrough (search for `"unpinFable5LaunchEffort"`)

## Bug Fixes

- Server fallback tombstone cancels in-flight tool calls gracefully — when a server-side refusal fallback retracts a tool dispatch mid-flight, tool calls now return a clean cancellation result with message "Tool dispatch was retracted by a server fallback; the input may be truncated." instead of raising an uncaught exception. The abort signal reason `"server-fallback-tombstone"` is checked at each phase: validate input, permission, pre-call, and post-call. (search for `"Tool dispatch was retracted by a server fallback"`)

- Fable 5 usage-credit 429 errors handled correctly — the retry-on-overload logic now correctly skips retrying 429 responses that contain "usage credits are required" or "extra usage is required" when the overage-disabled reason is `fetch_error` or `org_level_disabled_until`, preventing unnecessary retries in permanent overage states. (search for `"usage credits are required"`)

- Session prompt history no longer skips when session persistence is forced — the `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` env var check was removed from the prompt-history skip condition, fixing a case where history could be skipped unexpectedly when session persistence was forced via env var. (search for `"CLAUDE_CODE_FORCE_SESSION_PERSISTENCE"`)

- Mantle provider uses Opus 4.7 instead of 4.8 — `HT()` (the default Opus model resolver) now returns `opus47` when the provider is `"mantle"`, matching the correct model availability on that provider. (search for `"r6() === \"mantle\""`)
