In hooks/ponytail-runtime.js lines 53-58, for non-SubagentStart events in native Claude Code, writeHookOutput writes the context string directly to stdout.
When the event is UserPromptSubmit, this means the mode-change message (e.g., 'PONYTAIL MODE CHANGED — level: review') is written as hook output, which in Claude Code's hook system replaces the user's actual prompt with that text — the user's input is lost.
The SubagentStart case correctly wraps output in {hookSpecificOutput:{...}} to avoid this, but the UserPromptSubmit path does not.
In
hooks/ponytail-runtime.jslines 53-58, for non-SubagentStart events in native Claude Code,writeHookOutputwrites the context string directly to stdout.When the event is
UserPromptSubmit, this means the mode-change message (e.g., 'PONYTAIL MODE CHANGED — level: review') is written as hook output, which in Claude Code's hook system replaces the user's actual prompt with that text — the user's input is lost.The
SubagentStartcase correctly wraps output in{hookSpecificOutput:{...}}to avoid this, but theUserPromptSubmitpath does not.