SessionStart hook systemMessage renders as dismissable dialog (not inline) when remote-control is active
Bug Description
When remoteControlAtStartup is enabled (or /remote-control is active), the systemMessage output from a SessionStart hook does not render inline at startup like it does in normal mode. Instead, it appears late — as a dismissable dialog/overlay — after the user has already been presented with the prompt and begun interacting.
Steps to Reproduce
- Enable remote control at startup in
~/.claude/settings.json:
``json``
{ "remoteControlAtStartup": true }
- Add a
SessionStarthook that outputs asystemMessage:
``json``
{
"SessionStart": [{
"hooks": [{
"type": "command",
"command": "echo '{\"systemMessage\": \"Session context loaded\"}'"
}]
}]
}
- Start
claudein the terminal.
Expected Behavior
The systemMessage from the SessionStart hook appears inline in the terminal immediately after startup — the same way it does when remote-control is not active.
Actual Behavior
- At startup, the remote-control banner is shown (
/remote-control is active · Code in CLI or at https://...) and the prompt is presented immediately. - The
systemMessagefrom the hook either: - Does not appear at all until the user types something and dismisses a dialog, or
- Appears mid-session as an overlay, interleaved with terminal rendering (causing visual corruption if the user has already started typing).
Environment
- Claude Code v2.1.119
- macOS (Darwin 25.2.0)
- Hook type:
SessionStart - Hook output format:
{"systemMessage": "..."} - Setting:
remoteControlAtStartup: true
Impact
SessionStart hooks are commonly used to display session context (loaded config, memory files, active skills, etc.) so the user can verify their environment at a glance. This renders the hook effectively non-functional in remote-control mode — the primary mode many users run in.
Workaround
None available at the hook level. The only option is to disable remoteControlAtStartup and enable remote control manually after startup, which defeats the purpose of the setting.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗