Hook stdout shown + suppressOutput:true ignored in 2.1.158 (regressed from 2.1.157)
Summary
After updating to 2.1.158, successful hook output is now printed above the prompt in the default (non---verbose) TUI, and suppressOutput: true in a hook's JSON response no longer hides it. This did not happen on 2.1.157. It affects every hook event, so any hook that logs to stdout/stderr (even routine debug chatter) now clutters the terminal.
Environment
- Claude Code: 2.1.158 (native installer,
~/.local/share/claude/versions/) - OS: Ubuntu 24.04.4 LTS (x86_64), zsh login shell
- Auth: subscription (OAuth), not API key
verboseis not set in~/.claude/settings.json(confirmedjq .verbose→ null)
What I see
On SessionStart (and Stop), lines like these appear above the prompt:
SessionStart:startup hook success: {"continue":true,"suppressOutput":true,"status":"ready"}
SessionStart:startup hook success: 2026-05-31 [debug] Processing hook event from stdin
[warning] TMUX_PANE not set, cannot determine window
The first line is from a hook that returns {"continue":true,"suppressOutput":true} on stdout — yet it is displayed. The other lines are a different hook's stdout/stderr debug output. Multiple independent hooks are affected, so it is not specific to one hook implementation.
Expected
Per the hooks docs, with suppressOutput: true the hook's stdout should be hidden from the transcript (still visible under --debug). On a successful hook with no actionable output, nothing should be printed in the default view — which was the behavior on 2.1.157 and earlier.
Actual
- Successful-hook stdout/stderr is surfaced in the default view.
suppressOutput: trueappears to be ignored on the success path.
Reproduction
- Configure any
SessionStart(orStop) hook whose command writes to stdout/stderr, e.g. a script that prints a debug line and emits{"continue":true,"suppressOutput":true}. - Start a session on 2.1.158 → the hook's output prints above the prompt.
- Downgrade to 2.1.157 (
ln -sf ~/.local/share/claude/versions/2.1.157 ~/.local/bin/claude) → output no longer appears.
Regression range
- 2.1.157: clean (no hook output on success).
- 2.1.158: output shown +
suppressOutput:trueignored.
The 2.1.158 changelog entry I can find ("Auto mode on Bedrock/Vertex/Foundry") doesn't mention hooks, so this looks unintentional.
Workaround
Pinning to 2.1.157 + DISABLE_AUTOUPDATER=1.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗