{"version":"2.1.296","anchor":"hooks-worker-heartbeat-now-uses-cpu-time-and-a-new-heartbea","canonical_anchor":"hooks-worker-heartbeat-now-uses-cpu-time-and-a-new-heartbea","heading":"Hooks worker watchdog stops blaming a worker that got no processor time","tier":"notice","area":"Hooks","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.296\/e\/hooks-worker-heartbeat-now-uses-cpu-time-and-a-new-heartbea","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.296","markdown":"### Hooks worker watchdog stops blaming a worker that got no processor time\n\nThe hooks worker watchdog now checks processor time used, so a worker that was never given CPU time is not blamed for hanging\n\n**Unclear.** How much of the processor-time check is actually active in this build is not clear.\n\n**What**\n\nHooks are commands you set up to run automatically at certain moments. Claude Code runs them on a separate background worker, and a watchdog sends it regular check-ins, called heartbeats, to spot when it has stuck.\n\nBefore, a fixed number of unanswered heartbeats ended the worker, and a culprit was named whenever one was found. Now:\n\n- The watchdog reads how much processor time the worker has actually used. A worker that has not been running is no longer blamed; the verdict says it had not used a window of processor time.\n\n- A second timeout path ends with the cause `heartbeat_waited` and the message \"what held the hooks worker is not known\".\n\n- Waits for plugins to load and build now use timers that extend while the worker is busy.\n\n**Why**\n\nThis should cut down on hooks workers being stopped by mistake on slow machines, or on machines that were suspended, such as a laptop that went to sleep.\n\n- Area: Hooks\n- Tier: You'll notice\n- Useful: 1\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}