{"version":"2.1.251","anchor":"eval-runs-clean-up-the-whole-process-tree","canonical_anchor":"eval-runs-clean-up-the-whole-process-tree","heading":"Eval runs clean up the whole process tree","tier":"internal","area":"Plugin Eval","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.251\/e\/eval-runs-clean-up-the-whole-process-tree","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.251","markdown":"### Eval runs clean up the whole process tree\n\nPlugin eval kills the whole process tree so spawned tools don't outlive the run.\n\n**What**\n\nChild agents spawned by `claude plugin eval` now run detached and are killed as a whole process group on completion, interrupt or timeout, so tools they spawned do not outlive the run. The runner also accepts a separate set of operator-forced allowed tools, merged with the ones the eval case declares.\n\n**Details**\n\n- Non-Windows kills the group with SIGKILL by negative process id; Windows uses `taskkill \/T \/F`.\n- Detaching is skipped on Windows.\n\n**Evidence**\n\n`process.kill(-Ce.pid, \"SIGKILL\")`\n\n- Area: Plugin Eval\n- Names: `claude plugin eval`\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 3\/5"}