[Bug] Plugin hook stdout not surfaced to Claude in system messages

Resolved 💬 3 comments Opened Jan 1, 2026 by nqh-packages Closed Jan 5, 2026

Bug Description
Bug: Plugin hooks don't surface stdout/systemMessage to Claude

Plugin hooks in hooks/hooks.json execute successfully but their output is not visible to Claude, unlike user hooks in ~/.claude/settings.json.

Repro:

  1. Create plugin with SessionStart command hook that outputs text
  2. Install plugin, restart Claude Code
  3. Hook shows "Success" instead of actual stdout

Expected: Plugin hook stdout appears as system-reminder (like user hooks)
Actual: Only "Success" shown, content lost

Affected: All plugin hook types (command + prompt), all events tested (SessionStart, PreCompact, UserPromptSubmit, PreToolUse)

Workaround: Move hooks to user settings.json

Environment Info

  • Platform: darwin
  • Terminal: Apple_Terminal
  • Version: 2.0.76
  • Feedback ID: 608ba1d3-8b77-4d8e-af95-82156ce6cf25

Errors

[{"error":"Error: NON-FATAL: Lock acquisition failed for /Users/huy/.local/share/claude/versions/2.0.76 (expected in multi-process scenarios)\n    at XZR (/$bunfs/root/claude:2430:2165)\n    at fUA (/$bunfs/root/claude:2430:1885)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-01T16:15:49.696Z"},{"error":"SyntaxError: JSON Parse error: Property name must be a string literal\n    at <parse> (:0)\n    at parse (unknown)\n    at <anonymous> (/$bunfs/root/claude:78:751)\n    at A (/$bunfs/root/claude:11:6978)\n    at v31 (/$bunfs/root/claude:2563:26855)\n    at async mPB (/$bunfs/root/claude:2563:29641)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-01T16:15:50.973Z"},{"error":"Error: Request was aborted.\n    at _createMessage (/$bunfs/root/claude:458:3157)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-01T16:16:24.272Z"},{"error":"Error: Request was aborted.\n    at makeRequest (/$bunfs/root/claude:801:3940)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-01T16:19:46.761Z"},{"error":"Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"prompt is too long: 216437 tokens > 200000 maximum\"},\"request_id\":\"req_011CWgyBWpDWp7QB7qAtijFt\"}\n    at generate (/$bunfs/root/claude:454:11098)\n    at makeRequest (/$bunfs/root/claude:801:5435)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-01T16:25:11.805Z"},{"error":"Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"prompt is too long: 216437 tokens > 200000 maximum\"},\"request_id\":\"req_011CWgyBrdaNxxXs1soJ7kSV\"}\n    at generate (/$bunfs/root/claude:454:11098)\n    at makeRequest (/$bunfs/root/claude:801:5435)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-01T16:25:16.320Z"},{"error":"Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"prompt is too long: 216437 tokens > 200000 maximum\"},\"request_id\":\"req_011CWgyC5UkAouqKdiHgWNcR\"}\n    at generate (/$bunfs/root/claude:454:11098)\n    at makeRequest (/$bunfs/root/claude:801:5435)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-01T16:25:19.349Z"}]

View original on GitHub ↗

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