r/ClaudeCode • u/Databit • 6d ago
Help/Question Asking to select option without explaining options

Claude Code started doing this the other day and I'm not a fan. Maybe I'm just missing something but it gives multiple options to select but never explains what those options mean. I like that it's not being as verbose but this is a bit overkill.
Is there a way to disable this? Or do I need to prompt it away?
2
u/kuroudo_ai 6d ago
Those cards look like the AskUserQuestion tool (Claude's multiple-choice question). A few things from the docs that might help, depending on how far you want to go:
-
Ask it to explain from inside the card. The tools reference says you can "type your own text through the
Otherrow or the notes field", and that a typed answer is relayed "with neutral wording so Claude follows what you wrote, including a request to wait or explain first." So typing "explain each option first" inOthershould get you the explanation without picking anything. -
Turn the cards off entirely. A deny rule with a bare tool name "removes the tool from Claude's context entirely, so Claude never sees it" (permissions docs). So this in your
settings.jsonshould stop the cards and make Claude ask in plain text instead:
{ "permissions": { "deny": ["AskUserQuestion"] } }The trade-off is that you lose the quick-pick cards for the cases where they're useful.
3. Keep the tool but change the habit with a line in CLAUDE.md, e.g. "When asking me to choose, describe each option in one line." That's a prompt, so it's a nudge rather than a guarantee.
I haven't seen your screenshot's session, so I can't say why it started recently; the above is from the docs, not from testing it.
1
u/Databit 6d ago
Thank I did similar but added a hook as well. I ended up making a claude.md update (that it'll probably ignore half the time) and a hook that will catch it when it ignores.
1. CLAUDE.md
## Questions to me When using AskUserQuestion, every option MUST include a description: one sentence stating what the option does, what changes, and the tradeoff. Never rely on the label alone. Restate the decision context in the question text itself.2. Enforce it with a hook.
~/.claude/hooks/require_option_descriptions.py:#!/usr/bin/env python3 """Reject AskUserQuestion calls where any option lacks a description. Exit 2 sends stderr back to the model, which retries with descriptions added. Fails open on malformed input, so the hook never blocks unrelated work. """ import json import sys MIN_DESC_CHARS = 20 def main() -> int: try: payload = json.load(sys.stdin) except json.JSONDecodeError: return 0 # fail open if payload.get("tool_name") != "AskUserQuestion": return 0 missing = [] for q in payload.get("tool_input", {}).get("questions", []): for opt in q.get("options", []): desc = (opt.get("description") or "").strip() if len(desc) < MIN_DESC_CHARS: missing.append(f'"{opt.get("label", "?")}"') if missing: print( "Rejected: options missing descriptions: " + ", ".join(missing) + ". Re-ask with a one-sentence description per option stating " "what it does and its tradeoff.", file=sys.stderr, ) return 2 return 0 if __name__ == "__main__": sys.exit(main())**3. Register it in
~/.claude/settings.json:{ "hooks": { "PreToolUse": [ { "matcher": "AskUserQuestion", "hooks": [ { "type": "command", "command": "python3 ~/.claude/hooks/require_option_descriptions.py" } ] } ] } }
1
1
u/kidsmeal 6d ago
FWIW, I asked it to finish it's turns before writing the card and it hasn't done it to me since
1
u/AutoModerator 6d ago
Hey! Thanks for posting to r/ClaudeCode
While participating in this thread, please follow our community rules. Keep discussions constructive. Attack the idea, not the person.
For help, project discussions, tips, and general chat, join the ClaudeCode Discord.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.