[BUG] asyncRewake hook output displayed as visible system-reminder in terminal prompt
Resolved 💬 3 comments Opened Apr 7, 2026 by nedlern Closed Apr 11, 2026
Description
When a SessionStart hook using asyncRewake returns output, the output appears as a visible <system-reminder> block in the user's terminal prompt instead of being injected silently as context to the model.
Steps to Reproduce
- Create a
SessionStarthook withasyncRewake: truethat returnshookSpecificOutput - Start or resume a Claude Code session (
claude --resume <id>) - Observe the terminal prompt
Expected Behavior
The hook's output should be injected as context to the model silently, not displayed to the user.
Actual Behavior
The raw JSON appears in the terminal:
❯ <system-reminder>
Stop hook blocking error from command "SessionStart:resume":
{"hookSpecificOutput":{"hookEventName":"SessionStart","additionalContext":"POSTAL MAIL (background check):\nnew-vp: Format test — reply back with any short message."}}
</system-reminder>
Environment
- Claude Code version: latest as of 2026-04-07
- macOS (Darwin 23.6.0)
- Hook type:
SessionStartwithasyncRewake: true - The hook itself works correctly (model receives the context and acts on it), but the user shouldn't see raw JSON in their prompt
Additional Context
The hook is a background mail checker that polls for messages and wakes the model when one arrives. The content delivery works — it's purely a rendering issue where the system-reminder block is displayed instead of hidden.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗