Inter-session messages sent via sessions_send could be interpreted as direct end-user instructions because they were persisted as role: "user" without provenance metadata.
openclaw (npm)<= 2026.2.12 (i.e. < 2026.2.13)2026.2.13 (patched versions >= 2026.2.13)A delegated or internal session could inject instructions into another session that appeared equivalent to externally-originated user input.
This is an instruction-provenance confusion issue (confused-deputy style), which can lead to unintended privileged behavior in workflows that trust role: "user" as a sole authority signal.
Before the fix, routed inter-session prompts were stored as regular user turns without a verifiable source marker.
As a result, downstream workers and transcript readers could not distinguish:
OpenClaw now carries explicit input provenance end-to-end for routed prompts.
Key changes:
inputProvenance) with kind values including inter_session.sessions_send and agent-to-agent steps now set inter-session provenance when invoking target runs.message.provenance.kind = "inter_session" (role remains user for provider compatibility).[Inter-session message]) for clearer model-side disambiguation.85409e401b6586f83954cb53552395d7aab04797If immediate upgrade is not possible:
sessions_send in affected environments.Reported by @anbecker.
Thanks @anbecker for reporting.
{
"cwe_ids": [
"CWE-345"
],
"github_reviewed": true,
"github_reviewed_at": "2026-02-18T00:56:51Z",
"nvd_published_at": null,
"severity": "HIGH"
}