{"version":"2.1.304","anchor":"headless-cloud-client-strips-proto-members-and-reserve","canonical_anchor":"headless-cloud-client-strips-proto-members-and-reserve","heading":"Remote session client drops __proto__ members from incoming messages","tier":"internal","area":"Cloud Sessions","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.304\/e\/headless-cloud-client-strips-proto-members-and-reserve","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.304","markdown":"### Remote session client drops __proto__ members from incoming messages\n\nThe cloud session client now strips __proto__ members from incoming messages and counts them; a matching reserved-tag filter does nothing yet\n\n**What**\n\nWhen Claude Code runs as a headless client for a cloud session, it receives messages, called frames, over the connection. It now cleans those frames before using them:\n\n- A member named `__proto__`, a special property name in JavaScript that can be misused, is removed and a warning is logged.\n\n- A second filter is meant to remove a tag that a session is not allowed to set. As written, it returns the frame unchanged, so it never removes anything, and its warning can never appear.\n\n- The client's statistics gain two counters, `reservedTagsDropped` and `protoMembersDropped`, alongside the existing counters for dropped frames.\n\n- Separately, a failed transcript compaction now reports an error code with its reason, and stream statistics gain a count of tagged lines.\n\n**Why**\n\nThe `__proto__` guard is real protection against malformed incoming messages. The reserved-tag filter has no effect in this release.\n\n- Area: Cloud Sessions\n- Tier: Under the hood\n- Useful: 1\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}