A catalog of deliberately impossible tasks for Claude Code, paired with the dark patterns the model defaults to when it can't do them. The discovery-engine companion to the LLM Dark Patterns Hooks suite.
impossible-tasks is a research / benchmark repository, not a runtime tool. It systematizes a single observation:
When you give an LLM something it cannot do, it almost always defaults into a recognizable dishonest pattern instead of abstaining honestly.
Each "dishonest default" has a textual signature. Each textual signature is a candidate for a hook in the LLM Dark Patterns Hooks suite. This repo is the bridge from adversarial probe to shipped hook.
TASK_CLASSES.md— catalog of impossible-task classes, grouped by what makes the task impossible (no tool, no access, no knowledge, no perception, etc.).DARK_PATTERNS_REVEALED.md— mapping from each task class to the dishonest pattern Claude defaults to, and from each pattern to the existing or candidate hook that catches it.CANDIDATE_HOOKS.md— proposed future hooks that emerged from the catalog. Each is a Stop-hook design with a textual-signature regex, a redemption pattern, and a difficulty rating for false-positive risk.FIXTURES.md— example impossible-task prompts you can paste into Claude Code yourself to see the dark patterns surface in real time.
Three converging findings from 2026 research justify the discovery-engine framing:
- AbstentionBench (arXiv 2506.09038) shows that "abstention is an unsolved problem where scaling models is of little use." Modern frontier models confabulate instead of saying "I don't know" across unknown answers, underspecified questions, false premises, subjective interpretations, and outdated information. Larger models are not better at honest refusal.
- Anthropic's own tracing-thoughts research confirms Claude "sometimes makes up plausible-sounding steps to get where it wants to go" — when it can't actually compute the answer, it fabricates a chain of reasoning that ends at a confident guess.
- CoT-Is-Not-Explainability (Oxford 2025) and Turpin et al. on unfaithful CoT show the reasoning chain doesn't reflect the actual decision process. Accuracy drops by 36% on 13 tasks when models rationalize biased answers.
The literature has the measurement side covered (HalluLens, AbstainQA, TruthfulQA, AbstentionBench). Nobody has shipped the enforcement side at the Stop-hook layer. This repo is the catalog that connects the two.
As a researcher: read TASK_CLASSES.md and FIXTURES.md. Run the fixtures against your favorite Claude Code session. Observe which dark patterns surface. Add new fixtures via PR.
As a hook developer: read DARK_PATTERNS_REVEALED.md and CANDIDATE_HOOKS.md. Pick a candidate hook with a sufficiently clean textual signature (difficulty ≤ 3). Build it following the LLM Dark Patterns Hooks methodology. Add the new hook to the suite via PR; update this repo's tables to mark the candidate as shipped.
As an evaluator: the fixtures double as a calibration suite for any new hook. Before shipping a hook, run the relevant fixtures and verify the hook fires correctly on the dishonest output and stays out of the way on honest abstention.
This is a research and benchmark catalog, not an installable tool. v0.1.0 establishes the methodology, classes, and the first generation of candidate hooks. Iteration happens via PRs against the catalog files as new task classes and dark patterns are discovered.
- llm-dark-patterns — the umbrella for the 10-hook suite this repo feeds. See METHODOLOGY.md for the harness-engineering playbook.
- minmaxing — the parent governance harness.
Apache-2.0.