Magic Tools

Hands-On

Every article here has actually been run by the author: reproduction conditions, tested environment, methodology, results and analysis are all documented. No secondhand claims — when something doesn't reproduce, we say so.

Repro conditionsEnvironmentMethodologyResultsAnalysis
Claude Code v2.1.223🔍 Not reproducedTested 2026-08-06

claude install Creates a Broken %h Symlink? Clean Debian Test Comes Out Fine (Not Reproduced)

A Fedora user reports on GitHub that the official one-line installer leaves ~/.local/bin/claude as a broken symlink pointing at the literal %h/.local/share/claude/versions/2.1.220 — the %h placeholder never expanded to the home directory. We ran the exact same install command in a clean Debian 12 container: the resulting symlink is correct (%h properly expanded), and install.sh now ships 2.1.223 (the report was against 2.1.220). This is a not-reproduced field report: full environment, commands, and raw output are included, along with three candidate explanations and a one-minute manual fix if you are currently stuck on the broken link.

Read the report
Claude Code v2.1.220✅ ReproducibleTested 2026-08-06

Claude Code Says No conversation found to continue — Your -p Sessions Are Being Filtered Out

You run a headless claude -p command, then type claude --continue to pick it up interactively — and get No conversation found to continue, even though the session file sits right there on disk. This is a regression introduced in v2.1.90: the --resume picker's 'hide -p/SDK sessions' filter was mistakenly applied to --continue, which should continue the latest session unconditionally. We reproduced it end to end on macOS + v2.1.220 (the GitHub issue reports Fedora, so both platforms confirm), and verified two workarounds: headless -p --continue has always worked, and prefixing CLAUDE_CODE_ENTRYPOINT=sdk-cli lets interactive --continue bypass the filter with full history loaded.

Read the report
Claude Code v2.1.220✅ ReproducibleTested 2026-08-06

Which Model Is Claude Code Actually Using? settings.json vs ANTHROPIC_MODEL vs --model, Tested

Multi-agent setups, CI, and batch scripts all rest on one assumption: the session actually runs on the model you configured. But the model can be set in four places — settings.json, the ANTHROPIC_MODEL environment variable, the --model flag, and /model in-session — and the docs never give you one table saying which wins. Meanwhile a GitHub issue reports settings.json silently ignored on Windows, with a full day of work run on the wrong model and discarded. Using modelUsage as hard evidence, we tested the chain layer by layer: --model > ANTHROPIC_MODEL > project settings.json > built-in default, with the [1m] suffix form working too — plus a verification method more trustworthy than any UI hint.

Read the report
Claude Code v2.1.220✅ ReproducibleTested 2026-08-05

The Claude Code Hooks Stdin Trap: Python Heredocs Eat Your Hook JSON

The docs say hooks receive JSON via stdin — true. But parse it with a python heredoc (python3 - <<'EOF') and you hit a silent failure: the heredoc redirects python's stdin to the script itself, so json.load(sys.stdin) reads nothing. A best-practice hook then swallows the exception and exits 0 — no error anywhere, just a hook that 'somehow does not work'. The real debugging session, the two-line fix, and a lesson: silently fault-tolerant code is your enemy at debugging time.

Read the report
Claude Code v2.1.220✅ ReproducibleTested 2026-07-28

Claude Code's Auto Mode Judges a Model With a Model — When the Model Is Down, You Can't Even Run cat

Auto permission mode calls your session model to judge whether each Bash command is safe — the judge and the worker are the same model. When it goes unavailable you land in a counterintuitive half-paralysis: reading files works, but you can't run a single cat. This is a log of a real debugging session in which I proposed three entirely reasonable hypotheses and knocked all three down with controlled experiments, leaving exactly one dependable way out.

Read the report