Advisor (Fable 5) returns "unavailable" whenever the transcript contains any prior tool call — one Bash(ls) suffices; Opus advisor immune

Open 💬 8 comments Opened Jul 9, 2026 by perelin

Summary

The server-side advisor tool with advisorModel: "fable" (claude-fable-5) returns advisor_tool_result_error with error_code: "unavailable" whenever the session transcript contains at least one prior tool call — any tool, e.g. a single Bash(ls) or one Read. With zero prior tool calls the identical configuration succeeds. Switching only advisorModel to opus makes the same tool-call-then-advisor sequence succeed.

Since the advisor's documented purpose is to be consulted after orientation/work (i.e. after tool calls), this makes the Fable advisor effectively 100% broken in real sessions while appearing healthy in quick smoke tests — which is exactly what our field data shows (104/104 real-session failures vs 9/9 no-tool-call successes, details below).

Environment

  • Claude Code 2.1.206, macOS (darwin 25.5.0, arm64); field failures observed on 2.1.201–2.1.205 as well
  • First-party Anthropic API (no gateway/Bedrock), subscription auth
  • settings.json: "advisorModel": "fable", main model claude-opus-4-8[1m] (also reproduced with claude-sonnet-5 and claude-fable-5 mains in field data)
  • Valid pairing per the advisor docs compatibility table

Deterministic repro (headless, same machine, same settings, minutes apart)

# succeeds
claude -p --settings '{"advisorModel":"fable"}' --model 'claude-opus-4-8[1m]' \
  "Call the advisor tool exactly once, then report ADVISOR_OK or ADVISOR_ERROR: <verbatim>."

# fails: unavailable
claude -p --settings '{"advisorModel":"fable"}' --model 'claude-opus-4-8[1m]' \
  "First run exactly one Bash command: ls. THEN call the advisor tool exactly once. Report ADVISOR_OK or ADVISOR_ERROR: <verbatim>."

Full matrix, all runs 2026-07-09 20:27–20:42Z on CC 2.1.206 (server correlation IDs verbatim from transcripts):

| advisorModel | Prior tool call | Result | Round trip | Correlation |
|---|---|---|---|---|
| fable | none | ✅ advisor_redacted_result | ~25s | srvtoolu_01Sq1F3T71xu3qgruQCb2EGb / req_011Ccs7cWoDDnaQguGtYTxgp, 20:28:30Z |
| fable | 1× Bash(ls) | ❌ unavailable | 3.9s | srvtoolu_01CnqkdFmRQp4LPvt7iTsSJu / req_011Ccs7YJqmGP9vxyzyn5XRX, 20:27:32Z |
| fable | 1× Read (20 lines) | ❌ unavailable | 3.4s | srvtoolu_01E4RMdGDw89Mt7zFiF85FYY / req_011Ccs7ai73mPCyMDLrmij72, 20:28:05Z |
| opus | 1× Bash(ls) | ✅ succeeds | ~29s | srvtoolu_018m657efRo6RStmFpCdC4du / req_011Ccs8e2CBPb12ngAUqs8sb, 20:41:56Z |
| opus | none | ✅ succeeds | — | (multiple runs earlier same day) |

Note the latency signature: failures return in ~3–4s (before any advisor-side inference), successes take 25–47s. usage.iterations never shows an advisor iteration for the failing calls.

Field data: why this looks like other symptoms but isn't

Scanning all local transcripts since the feature was enabled here (2026-07-05): 113 advisor calls → 104 × unavailable, 9 × success. Every failure had ≥3 prior tool calls in the transcript; every success had exactly zero. Discriminators we ruled out by A/B before finding the tool-call trigger:

  • Transcript size (cf. #67609): failures at 36K tokens, success at 700K+ (single huge user message, no tool calls). Size does not predict outcome; prior tool use does.
  • Background/daemon sessions: a fresh claude --bg job calling advisor immediately succeeds; interactive/headless sessions fail after one tool call. Session kind is a proxy for "did work before consulting", not a cause.
  • [1m] context beta, --permission-mode bypassPermissions, --agent: each tested in isolation, no effect.
  • MCP / ToolSearch-loaded deferred tools (cf. #73923, #76049): the failing repro above has no MCP servers and never invokes ToolSearch — one native Bash/Read call suffices. Also, unlike #73923, the Opus advisor is not affected here (2×2 executor/advisor matrix above).

Related issues

  • #75971 — same Fable-fails/Opus-succeeds observation; this report adds the precise trigger (any prior tool call) and a 1-command repro.
  • #67609 — the ~100K-size theory is contradicted by the data above (36K failures without size, 700K success without tool calls).
  • #76049 — reproduces without any MCP servers or deferred-tool load; a single native tool call is sufficient.
  • #73923 (closed NOT_PLANNED) — closest mechanism report, but there both executors failed and the trigger was ToolSearch loads; here Opus advisor is immune and no ToolSearch is involved.
  • #75903 / #74530 / #67411 — confirmed side effect: after the first unavailable, the client latches the tool off for the whole session ("The advisor tool is unavailable. Do not try to use it again."), so long-lived sessions never recover even when a fresh call would work.

Expected

Fable 5 advisor succeeds after tool calls, like the Opus advisor does — or, failing that, a specific error code instead of the generic unavailable.

---
🤖 Investigation and repro matrix produced with Claude Code

View original on GitHub ↗

This issue has 8 comments on GitHub. Read the full discussion on GitHub ↗