Further results from the same controlled setup (v0.0.46-nightly.20261004.2657, efecd3cf), each trial with a background subagent and a background shell confirmed live before the change:
| Change made mid-work | Valid trials | Session detached | Background subagent |
|---|---|---|---|
Provider instance switch, Claude → Codex (t3_thread_configure) | 3 / 3 | yes, reason "Provider or model selection changed." | failed at the detach, 3 / 3 |
| Provider instance switch, Claude → a second Claude instance on the same Claude home | 3 / 3 | yes, same reason string | failed at the detach, 3 / 3 |
Worktree handoff (t3_worktree_handoff) | 3 / 3 | yes, reason "Workspace changed." | failed at the detach, 3 / 3 |
| Runtime mode change (reported above) | 1 / 1 | yes, reason "Runtime mode changed." | failed |
| Control: model-only change on the same instance | 3 / 3 | no | survived; the next turn was refused with the #14726 guard message |
| Control: effort-only change on the same instance | 3 / 3 | no | survived; same guard message |
| Baseline: no change | 1 / 1 | no | completed 24 of 24 steps |
So the #14726 guard holds for model and effort changes, and every other change that ends the session (instance, worktree, runtime mode) kills live background subagents without a check. One more detail: the Claude-to-Claude instance switch took the same release path and reason as the switch to Codex, not a restart-and-resume path.