SessionStart hook systemMessage not surfaced in VSCode extension side panel (works in terminal CLI)

Status Open
Reported on v2.1.218
Maintainer reply None cached
Activity 2 comments · opened Jul 24, 2026

Bug Description

A SessionStart hook that outputs a systemMessage (standard local hooks.json, no remote-control) renders the message in the terminal CLI but not in the VSCode native extension side panel. The message never appears in the panel — not inline, not as a dialog, not late.

The hook's additionalContext output is ingested correctly on both surfaces (the model receives it); only the user-visible systemMessage is dropped in the extension panel.

This is distinct from #52775 (which is specifically about remoteControlAtStartup rendering systemMessage as a late dismissable dialog in the terminal) and #33612 (hooks in remote-settings.json not firing for non-terminal clients). Here the hook fires, additionalContext lands, remote-control is off, and it's plain local settings — only the panel rendering of systemMessage is missing.

Steps to Reproduce

  1. Add a SessionStart hook to .claude/settings.json (or a plugin's hooks.json) that emits both fields:

``json
{
"hooks": {
"SessionStart": [{
"matcher": "startup|resume|clear",
"hooks": [{
"type": "command",
"command": "echo '{\"hookSpecificOutput\":{\"hookEventName\":\"SessionStart\",\"additionalContext\":\"hello-context\"},\"systemMessage\":\"hello-visible-message\"}'"
}]
}]
}
}
``

  1. Start a session in the terminal CLIhello-visible-message is shown (as SessionStart:startup says: …).
  2. Start a session in the VSCode native extension (open the Claude Code side panel) → hello-visible-message is not shown anywhere in the panel.

In both surfaces the model does receive additionalContext ("hello-context"), confirming the hook itself fires correctly on both.

Expected Behavior

The systemMessage from a SessionStart hook should be surfaced to the user in the VSCode extension side panel — matching the terminal CLI, which echoes it at startup. SessionStart systemMessage is commonly used to show session posture/context (loaded config, active skills, repo state) so the user can see it at a glance; that affordance is silently unavailable in the extension.

Environment

  • Claude Code VSCode extension: anthropic.claude-code@2.1.218
  • Platform: Linux (WSL2, VSCode Remote / .vscode-server)
  • Hook type: SessionStart (matcher startup|resume|clear), local hooks.json
  • Hook output: {"hookSpecificOutput": {"additionalContext": "..."}, "systemMessage": "..."}
  • Remote-control: not active

Impact

Plugins/skills that rely on SessionStart systemMessage for a visible posture greeting or environment summary appear to "do nothing" in the VSCode extension, even though the hook is working and the model-facing context is delivered. Authors have no user-visible SessionStart surface in the panel.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗