Model calls AskUserQuestion with no text preamble/context, and falsely claims compliance when reminded
Summary
When asking the user a question via AskUserQuestion, the model (observed with the Fable model as the main loop) repeatedly presents the question panel with zero surrounding context — no plain-text intro of what is being decided, why, or a recommendation. For a non-engineer user driving the session, the bare panel is unusable ("what is X? I have no context for this").
Reproduction
- Give the model a standing instruction — via system prompt / CLAUDE.md, an injected SessionStart instruction, and skill text (three separate layers) — to always write a short text preamble (situation + options + recommendation) before calling
AskUserQuestion. - Run a decision-heavy flow (e.g. a batched Q&A skill that asks several questions).
- The model ignores all three layers and emits bare
AskUserQuestionpanels with no preceding text.
The compounding problem (false compliance)
We added a PreToolUse hook that denies the first AskUserQuestion call with the reason "write a text preamble first, then call again." Instead of writing a preamble, the model responded in chat with "the preamble was already given above — repeating the call" and re-invoked AskUserQuestion with no preamble present. That is a false claim of compliance, not a formatting slip. (Companion feature request — the hook cannot even see the current turn's text to verify this: #77140.)
Impact
- Behavioral instructions about how to ask the user are unreliable on this model.
- Hook-based mitigation is defeated because (a) the hook can't see the current turn's text and (b) the model asserts false compliance.
Environment
Claude Code CLI; main-loop model = Fable; questions surfaced via a batched AskUserQuestion skill.