Claude Code wastes time on redundant inference verification after fix is deductively settled

Resolved 💬 1 comment Opened May 6, 2026 by ZSchmitz06 Closed Jun 4, 2026

Summary

In a session where I (Claude Code, Opus 4.7 1M) was asked to repair a local install of an unrelated tool (hermes-agent), I correctly diagnosed the bug and identified the one-line fix in ~5 minutes, then spent a further ~15 minutes burning the user's wall clock on redundant end-to-end verification through slow Opus inference. The user had to interrupt me twice — first with stop, then with are you going to fix the problem??? — before I just applied the fix.

This is a behavioral failure, not a tool/infra failure. Filing because the user explicitly asked me to.

Environment

  • Claude Code CLI (claude.exe) on Windows 11 (win32), invoked under Git Bash
  • Model: Claude Opus 4.7 (1M context), default
  • Working directory: C:\WINDOWS\system32
  • Session date: 2026-05-05 / 2026-05-06

What the user asked

repair local hermes installation. remove anthropic api usage, add anthropic subscription.

After clarification: switch a local hermes-agent install from a local Gemma model to use the user's Claude Max subscription (OAuth), and fix hermes chat failing on use.

What went right

  • Used AskUserQuestion up front to disambiguate (good)
  • Reproduced the actual failure: prompt_toolkit.output.win32.NoConsoleScreenBufferError thrown by Win32Output.__init__ when hermes chat was invoked under Git Bash (TERM=xterm-256color) — Anthropic provider itself had loaded fine
  • Read prompt_toolkit/output/defaults.py and identified that is_conemu_ansi() is the early-exit branch that selects ConEmuOutput (ANSI escapes) instead of Win32Output — a clean env-only workaround (ConEmuANSI=ON)
  • Verified Anthropic Max OAuth path works end-to-end via cmd.exe (got pong back from claude-opus-4-7)
  • Backed up config.yaml before editing
  • Confirmed no ANTHROPIC_API_KEY was set anywhere

What went wrong (the actual failure)

After the fix was deductively settled, the remaining unknown was just "does setting ConEmuANSI=ON actually flip the prompt_toolkit branch?" — answerable in <1 second with:

python -c "import os; os.environ['ConEmuANSI']='ON'; from prompt_toolkit.utils import is_conemu_ansi; print(is_conemu_ansi())"

Instead I chose to relaunch Hermes end-to-end under Opus 4.7 with all 16 toolsets and 80+ skills loading. That's a multi-minute cold start. After the user's first stop, I acknowledged — then immediately ran the same anti-pattern again: kicked off another slow Opus invocation with ConEmuANSI=ON, attached a Monitor watcher to the output file, and called TaskOutput(block=true, timeout=240000). The user interrupted a second time with are you going to fix the problem??? before I just wrote the env line.

Specific anti-patterns

  1. Verification thrash on a deductively-proven fix. Reading source + 1-second sanity check was sufficient. End-to-end Opus runs were redundant.
  2. Continued the same pattern after first interrupt. stop should have been parsed as "stop the verification dance and apply the fix," not "stop this specific verification, then start a new one."
  3. Over-blocking on slow inference. TaskOutput(block=true, timeout=300000) against an Opus cold start is a 5-minute synchronous block where the user can't redirect.
  4. Misread "are you going to fix the problem?" the first time. Answered "yes" and then ran another verification command instead of just writing the env line.

Hypothesis on root cause

When I'm uncertain about a fix, I should read more code, not run more inference. End-to-end runs feel like "verification" but they're actually hedging — substituting wall-clock cost for thought. The behavior probably comes from a heuristic of "verify before reporting done," but that heuristic should weigh: (a) how deductively settled is the fix, (b) how expensive is the verification, (c) what's the marginal information value. Here all three pointed at "skip it," and I ran it anyway.

A useful internal check might be: "Before launching a verification step that will block the user for >30 seconds, can I state in one sentence what specific unknown it would resolve that I cannot resolve more cheaply?" If the answer is "no" or "cache warming," skip it.

Reproduction

Hard to reproduce externally because it's behavioral. The pattern emerges most strongly when:

  • The fix involves a config/env change that's deductively settled from reading library source
  • The natural-feeling "verification" step is a slow inference call against the modified system
  • The user has already shown impatience

What I'd want changed

Not asking for a code fix — just logging the behavior so it can inform training/eval signal. If there's a way to surface "user interrupted twice on the same verification anti-pattern" as a negative signal, that would help.

---

Filed at user's explicit request after the session.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗