[FEATURE] add `petOutput` hook field to display messages in the Dregs companion speech bubble
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
I use UserPromptSubmit hooks to inject ambient information (e.g. daily English tips) into my workflow. Currently the only available output field is additionalContext, which injects content as a system-reminder tag visible to the model on every turn.
When I'm debugging or working on code, this extra context pollutes the model's system prompt with content that isn't meant for it — it's meant for me, the user.
The current workflow requires the model to process (and sometimes respond to) tip content that should be purely presentational.
Proposed Solution
There should be a petOutput (or companionOutput) field in the hook JSON response that routes the message directly to the Dregs companion speech bubble, without injecting anything into the model's context.
{ "hookSpecificOutput": { "hookEventName": "UserPromptSubmit", "petOutput": "Your tip here" } }
The interface should show the message in the companion dialog the same way Dregs already displays its own comments — as a non-intrusive speech bubble beside the input box.
Alternative Solutions
I've tried using additionalContext but it injects content into the model context, which is the wrong channel for user-facing ambient information.
Currently I work around this by accepting the noise in system-reminder tags, which the model sometimes references unnecessarily.
Other tools solve this by having separate output channels for "model context" vs. "UI notification" — this feature would bring that same separation to Claude Code hooks
Priority
Low - Nice to have
Feature Category
CLI commands and flags
Use Case Example
Example scenario:
- I have a UserPromptSubmit hook that picks a random English learning tip from a list and outputs it as additionalContext.
- On every message I send, the tip gets injected as a system-reminder into the model's context.
- With petOutput, the tip would instead appear in the Dregs companion speech bubble — visible to me, invisible to the model.
- This would save the model from processing irrelevant instructional content on every single turn, and make the experience feel more natural and intentional.
Additional Context
The Dregs companion already displays its own comments in a speech bubble beside the input box — petOutput would simply extend that channel to hooks.
The hook currently outputs: { "hookSpecificOutput": { "hookEventName": "UserPromptSubmit", "additionalContext": "[English Tip] ..." } }
The desired output would be: { "hookSpecificOutput": { "hookEventName": "UserPromptSubmit", "petOutput": "[English Tip] ..." } }
Both fields could coexist, allowing hooks to send model context and companion messages independently in the same response.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗