[FEATURE] add `petOutput` hook field to display messages in the Dregs companion speech bubble

Resolved 💬 3 comments Opened Apr 1, 2026 by arthurgmalheiros Closed Apr 9, 2026

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:

  1. I have a UserPromptSubmit hook that picks a random English learning tip from a list and outputs it as additionalContext.
  2. On every message I send, the tip gets injected as a system-reminder into the model's context.
  3. With petOutput, the tip would instead appear in the Dregs companion speech bubble — visible to me, invisible to the model.
  4. 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.

View original on GitHub ↗

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