{"version":"2.1.282","anchor":"new-internal-sdk-system-message-session-metadata-carries-t","canonical_anchor":"new-internal-sdk-system-message-session-metadata-carries-t","heading":"SDK: new session_metadata system message carries a session's artifact list","tier":"notice","area":"SDK","url":"https:\/\/changelogs.core-directive.com\/v\/2.1.282\/e\/new-internal-sdk-system-message-session-metadata-carries-t","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.282","markdown":"### SDK: new session_metadata system message carries a session's artifact list\n\nSDK hosts now receive session_metadata system messages listing a session's published artifacts, the summary cloud sessions already get\n\n**Unclear.** When Claude Code actually sends this message is not known.\n\n**What**\n\nThe SDK lets other programs, such as a desktop app, run Claude Code and receive its messages as a stream. This release adds a new kind of system message on that stream:\n\n- It is a system message with subtype `session_metadata`, carrying `metadata.artifacts`. Each artifact has a url, title, favicon, kind \"frame\" and updated_at, and the list becomes null once it is empty. Its description says it mirrors the external_metadata update a cloud worker sends, so an SDK host can keep the per-session summary a cloud session gets without reading transcript rows.\n\n- The SDK stream loop now forwards these messages, alongside `post_turn_summary` and `task_summary`.\n\n- The WebSocket remote-session client filters them out, so they do not appear as conversation messages.\n\n**Why**\n\nLocal SDK hosts can now track a session's published artifacts the way cloud sessions already do. If you consume the SDK stream, expect `session_metadata` messages you did not receive before.\n\n- Area: SDK\n- Names: `session_metadata`\n- Tier: You'll notice\n- Useful: 4\/5\n- Signal: 4\/5"}