[Bug] /advisor and /model report success mid-session but advisor tool stays unavailable; resume inherits the stale binding

Open 💬 0 comments Opened Jul 2, 2026 by xironix

Bug Description

The advisor tool's availability is fixed at session start. Changing advisorModel mid-session via /advisor (or switching the active model via /model) reports success but never takes effect in the running session. Every advisor() call keeps returning the hard error The advisor tool is unavailable. Do not try to use it again. Exiting and resuming the session does not re-register the tool either; the resumed session inherits the stale binding.

Repro (observed 2026-07-01, all in one session)

  1. Start a session (advisor not yet working for it).
  2. /advisor prints "Advisor set to Fable 5". settings.json correctly shows "advisorModel": "fable".
  3. advisor() returns "The advisor tool is unavailable."
  4. /model to Sonnet 5, then advisor(): same error.
  5. /model to Fable 5 (active model now identical to advisor model): same error.
  6. Exit, resume the same conversation (new session ID): same error.
  7. Start a fresh session with identical settings: advisor() works immediately, first try (confirmed it receives the full transcript).

So config, account entitlement, and the Fable 5 advisor backend are all fine. Only sessions born before the setting are permanently broken, and resume carries the breakage forward.

Expected

Either of:

  • /advisor mid-session actually (re)registers the advisor tool. The harness already injects tools mid-session (deferred tools / MCP), so this isn't structurally impossible; or
  • /advisor tells the truth: "Advisor set to Fable 5, takes effect in your next session," and the tool error says why ("advisor was not configured when this session started; start a new session") instead of an opaque dead end that reads like an outage.

The false-success plus opaque-error combination is the real cost: it took multiple model switches, a settings-file inspection, and an exit/resume cycle to bisect something one honest status line would have prevented.

Related issues

  • #73019: same surface symptom ("advisor unavailable" with Fable 5), no mechanism identified; this may explain it.
  • #72950: advisor drops mid-session after working. Different trigger (was live, then died) but likely the same session-scoped binding lifecycle.

Environment Info

  • Platform: darwin (macOS, Darwin 27.0.0)
  • Version: 2.1.198
  • Active model during repro: Opus 4.8, then Sonnet 5, then Fable 5 (error identical under all three)
  • settings.json: "advisorModel": "fable", "model": "claude-fable-5[1m]"

View original on GitHub ↗