{"version":"2.1.302","anchor":"subagent-resume-checks-whether-the-user-stopped-the-agent","canonical_anchor":"subagent-resume-checks-whether-the-user-stopped-the-agent","heading":"Stopping a subagent is saved more reliably and checked before it resumes","tier":"notice","area":"Subagents","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.302\/e\/subagent-resume-checks-whether-the-user-stopped-the-agent","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.302","markdown":"### Stopping a subagent is saved more reliably and checked before it resumes\n\nA stopped subagent's stop is now saved with retries and checked on resume, and forked-skill agents hidden behind a plugin can no longer be resumed\n\n**What**\n\nA subagent is a helper agent Claude starts to work on part of a task, often in the background. Changes to what happens when you stop one and something later tries to resume it:\n\n- Stopping a subagent now records `stoppedByUser`. If that save fails, Claude Code writes a small marker file next to it (`.stopped-by-user` or `.observer-stopped`) and keeps trying to fold it back in, waiting 50, 50, 50, 250, 1000 and then 4000 ms between attempts. Before, a failed save was only logged.\n\n- Every way of stopping a task now goes through the same shared step.\n\n- Resuming a subagent first checks whether you stopped it. If its saved state cannot be read, the resume fails with a message beginning \"its saved state cannot be read\".\n\n- Clearing the stop marker now removes and rewrites it, with errors handled at each step.\n\n- Resuming a background agent that ran as a forked skill is refused if that skill is now hidden behind a plugin.\n\n**Why**\n\nA stop you asked for is less likely to be lost, so an agent you stopped should not quietly start again. Some resumes that used to go ahead now fail instead, with a message.\n\n- Area: Subagents\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 2\/5\n- Scope: individual\n- Heads-up: no"}