Hook stdout shown + suppressOutput:true ignored in 2.1.158 (regressed from 2.1.157)

Resolved 💬 2 comments Opened May 31, 2026 by jimpanse-aewk Closed May 31, 2026

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
  • verbose is not set in ~/.claude/settings.json (confirmed jq .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: true appears to be ignored on the success path.

Reproduction

  1. Configure any SessionStart (or Stop) hook whose command writes to stdout/stderr, e.g. a script that prints a debug line and emits {"continue":true,"suppressOutput":true}.
  2. Start a session on 2.1.158 → the hook's output prints above the prompt.
  3. 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:true ignored.

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.

View original on GitHub ↗

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