[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

  1. Create a SessionStart hook with asyncRewake: true that returns hookSpecificOutput
  2. Start or resume a Claude Code session (claude --resume <id>)
  3. 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: SessionStart with asyncRewake: 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.

View original on GitHub ↗

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