Advisor receives an incomplete conversation when the advisor model differs from the session model (Fable 5 + Opus 5 advisor: median 74% of context, min 55%)
Summary
When the session model and the advisor model differ, the advisor does not receive the whole conversation. Measured across 315 advisor calls on one account, a Fable 5 session with the default Opus 5 advisor hands the advisor a median of 74% of the context (minimum 55%, worst single case 190,913 tokens invisible). Every combination where the base model equals the advisor model delivers 100%.
The advisor tool description states the entire conversation is forwarded, and Claude Code's own guidance tells the model to consult the advisor before committing to an approach. On a Fable 5 session the advisor reviews a conversation with a large share of it removed, and answers with full confidence.
This is not the known meter-doubling bug (#53065, #81620, #84738, and the closed #61511). Those are about the reported usage being summed. This is about the content the advisor actually receives, which is measurable from the same usage.iterations breakdown.
Measurement method
Each advisor turn's usage.iterations contains one advisor_message entry carrying its own model and its own input tokens, plus the message entries for the base passes. Coverage is therefore directly observable per call:
coverage = advisor_message.input_tokens
/ (last message iteration: input + cache_read + cache_creation)
Corpus (315 advisor calls, all sessions on one machine, 2026-06-24 .. 2026-08-27)
| base model | advisor model | n | median coverage | min | median tokens missing |
|---|---|---|---|---|---|
| claude-fable-5 | claude-opus-5 | 154 | 0.74 | 0.55 | 45,576 |
| claude-opus-5 | claude-opus-5 | 92 | 1.00 | 0.98 | 0 |
| claude-opus-4-8 | claude-opus-4-8 | 36 | 1.00 | 1.00 | 0 |
| claude-fable-5 | claude-fable-5 | 22 | 1.00 | 0.99 | 0 |
| claude-opus-5 | claude-fable-5 | 11 | 1.00 | 1.00 | 0 |
Stable across every CLI version in that window (2.1.187 → 2.1.247), so it is not a recent regression. Coverage degrades as the session grows: median 0.85 in early August, 0.62 on 2026-08-26 — worst exactly when the advice matters most. Worst observed single call: base context 503,761 tokens, advisor received 312,848.
Controlled reproduction
Same prompt, same base model, same accumulated thinking mass (~10.3k signature chars in both runs); only --advisor differs:
P='Think at length in your internal reasoning about <any problem requiring long reasoning>,
then call the advisor tool to review your reasoning, then answer in two lines.'
claude -p "$P" --model fable --advisor opus # advisor coverage 0.80 (27,512 -> 22,063)
claude -p "$P" --model fable --advisor fable # advisor coverage 1.03 (23,862 -> 24,573)
Read the numbers back from the session JSONL (usage.iterations).
What is missing
The deficit tracks the accumulated encrypted thinking mass in the transcript ({"type":"thinking","thinking":"","signature":"..."}), at a stable ~0.30 tokens per signature character across sessions with no compaction. This is consistent with the documented rule that thinking blocks are tied to the model that produced them and other models silently ignore them.
One observation does not fit that explanation and is left unexplained rather than guessed at: the asymmetry. A Fable 5 base loses its thinking to an Opus 5 advisor, but an Opus 5 base does not lose its thinking to a Fable 5 advisor — verified on a single-model session (no mid-session /model switch) with 112,908 signature chars accumulated, where coverage stayed 1.004–1.006 across 16 calls.
Why it matters
- The tool contract says the advisor sees everything; on the default Fable-session configuration it does not, and neither the model nor the user is told.
- The reasoning is exactly what a reviewer most needs: the advisor is asked to catch a flawed approach, and the approach lives in the thinking blocks it never receives.
- It compounds with the meter-doubling bug: the same advisor call both halves the effective auto-compact ceiling and delivers a partial conversation.
Suggested fixes, in order of preference
- Include the base model's reasoning in the advisor pass when the advisor model differs (or forward it as text).
- Failing that, surface it: report advisor coverage (e.g. in
/statusor the advisor result) so a user can see the review was partial. - Document it on the advisor page and in the tool description, and warn when
advisorModeldiffers from the session model.
Environment
- Claude Code 2.1.247, macOS (Darwin 27.0.0), first-party OAuth,
CLAUDE_CODE_ENABLE_EXPERIMENTAL_ADVISOR_TOOL=1 - Base models observed: claude-fable-5, claude-opus-5, claude-opus-4-8; advisor models: claude-opus-5, claude-fable-5, claude-opus-4-8