Claude babysits a hung local typecheck for ~25 min instead of deferring to the project's CI gate

Status Open
Reported on v2.1.270
Maintainer reply None cached
Activity 0 comments · opened Sep 13, 2026

Environment

  • Claude Code 2.1.270, macOS (darwin 27.0.0), zsh
  • Model: claude-fable-5

What happened

During a config-change task in a large private Nuxt 4 monorepo, Claude ran the project's local pnpm typecheck (nuxt typecheck → vue-tsc). The first run crashed inside @volar/typescript proxyCreateProgram (stack trace through createEmitAndSemanticDiagnosticsBuilderProgram), leaving the parent nuxt typecheck process alive but idle. Claude then:

  1. re-ran typecheck in the background,
  2. stacked ever-longer blocking polls on the wedged run (30s → 240s → 300s → 420s),
  3. only after ~25 minutes checked ps, saw the process had consumed ~6 CPU-seconds in 20+ wall-clock minutes, killed it, and re-ran — which passed in a few minutes.

The project's PR CI already runs a cold typecheck as the required merge-gate check, so the local wait added no signal the pipeline would not have produced anyway. The user had to interrupt and point this out.

Expected

  • When a verification command produces no new output, check process liveness (CPU time vs wall time) early — after the first long poll, not after four.
  • When the repo's own instructions define a CI check as the merge gate, prefer handing slow or flaky local verification to CI instead of blocking the whole pipeline on it.

Notes

The vue-tsc crash itself is a toolchain flake, not a Claude Code bug; this report is about the babysitting behavior around it.

View original on GitHub ↗