Hook systemMessage display: redundant prefix wastes screen space
Resolved 💬 4 comments Opened Mar 9, 2026 by LinuxIsCool Closed May 1, 2026
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
When multiple plugins output systemMessage from SessionStart hooks, the terminal displays:
⎿ SessionStart:startup says: [journal] 3 entries today · latest: "observatory" (14:46)
⎿ SessionStart:startup says: [backlog] empty · /task to create first
⎿ SessionStart:startup says: [temporal] Monday, 2026-03-09 15:07 PDT (afternoon)
⎿ SessionStart:startup says: [observatory] 40 plugins · 12 hooking · 8 injecting context
The prefix SessionStart:startup says: is repeated verbatim on every line. With 4+ hooks outputting systemMessages, this wastes significant screen space and creates visual clutter. The prefix contains two pieces of redundant information:
SessionStart:— the user already knows these are startup messages (they appear at startup)startup says:— "startup" is the same generic label for all SessionStart hooks, and "says:" adds nothing
Proposed Solutions
Option A (minimal): Collapse the prefix to just the hook output:
⎿ [journal] 3 entries today · latest: "observatory" (14:46)
⎿ [backlog] empty · /task to create first
⎿ [temporal] Monday, 2026-03-09 15:07 PDT (afternoon)
⎿ [observatory] 40 plugins · 12 hooking · 8 injecting context
Option B: Show the event once as a header, then list hook outputs:
⎿ SessionStart hooks:
[journal] 3 entries today · latest: "observatory" (14:46)
[backlog] empty · /task to create first
[temporal] Monday, 2026-03-09 15:07 PDT (afternoon)
[observatory] 40 plugins · 12 hooking · 8 injecting context
Option C: Allow hooks to specify a short display name via a hookName field in the output JSON, replacing the generic "startup":
{
"systemMessage": "[journal] 3 entries today",
"hookName": "journal"
}
Rendered as:
⎿ journal: [journal] 3 entries today
Context
- Related to #16418 (closed as stale) which requested systemMessage be used in system-reminders sent to Claude
- Related to #15936 (closed) which requested user-visible messages without context injection
- The plugin ecosystem is growing — users with 4-8 hooks outputting systemMessages see 4-8 identical prefixes
- The actual hook messages already self-identify (e.g.
[journal],[temporal]) making the prefix purely redundant
Environment
- Claude Code v2.1.71
- Linux (CachyOS)
- 4+ custom plugins with SessionStart systemMessage output
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗