{"version":"2.1.277","anchor":"resume-now-also-validates-a-messages-turnorigin-field","canonical_anchor":"resume-now-also-validates-a-messages-turnorigin-field","heading":"Turns now record a turnOrigin\/initiator describing what started them","tier":"internal","area":"Sessions","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.277\/e\/resume-now-also-validates-a-messages-turnorigin-field","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.277","markdown":"### Turns now record a turnOrigin\/initiator describing what started them\n\nUser turns now carry a turnOrigin\/initiator value recording what started them, such as a person versus a scheduled task, validated on resume\n\n**What**\n\n- After a query result is built, the relevant user message is now stamped with a `turnOrigin`, computed from the message's origin, its `isMeta` flag, the wakeup source, the prompt source, and the host initiator, if it isn't already set.\n\n- A new optional `initiator` field records what started a turn, for example a desktop app's scheduled task or a sleep\/auto-resume, versus a person, for usage attribution; it does not change how the turn runs. This is threaded through elsewhere as `hostInitiator`, in turn context and message equality checks.\n\n- When resuming a session, user messages now have their `turnOrigin` field validated against a known set of valid values and stripped if unrecognized, alongside the existing `permissionMode` sanitization.\n\n**Why**\n\nThis lets Claude Code, and anyone reviewing usage, tell whether a turn was started by a person or by something automated like a scheduled task, without changing how the turn actually runs.\n\n- Area: Sessions\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 2\/5"}