Measure two milestones.The RPC acknowledgement proves the Host called cancel. Only process exit, tool settlement, terminal Session events, and Agent idle prove work stopped.

Route the missing transition.

No RPC response

Probe the Host event loop and transport; a synchronous plugin may block both.

Accepted, child lives

The process owner ignored the signal or killed only the direct child.

Child gone, call open

A pipe, timer, worker, listener, or cleanup promise still owns the lifetime.

Aborted, work restarts

Inspect the preserved inbox item that opened the next turn.

A restart does not revive an old process.

Never startedTOOL_NOT_STARTED

The recovered transcript closes a model request that did not durably dispatch.

Outcome unknownTOOL_OUTCOME_UNKNOWN

The side effect may exist; verify before retrying.

New “continue” turnnew model decision

A repeat is a fresh retry choice, not attachment to the vanished child.

Do not kill by process name.

Resolve the exact parent PID, command line, start time, Session, workspace, and descendants before an emergency termination.

Primary evidence.

Recover the owner, not just the screen.

The complete guide covers evidence, live containment, signal and process-tree ownership, UI state, preserved inbox work, cold-restart semantics, repair contracts, and twelve acceptance gates.

Read the complete guide