[FEATURE] Expose buddy reaction text via hook event

Resolved 💬 3 comments Opened Apr 2, 2026 by Telomelonia Closed Apr 3, 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

Buddy's speech bubble text is generated server-side via buddy_react but only rendered inside the ASCII bubble. There's no way to access this text externally through the hooks system. I want to pipe it to a local TTS model so the companion can actually speak — the personality and context are already there, just need the text.

Proposed Solution

Add a CompanionReaction hook event that fires when the buddy's speech bubble updates, with the reaction text in the payload:

{
  "hook_event_name": "CompanionReaction",
  "reaction_text": "...you're really going to commit that without tests?",
  "companion_name": "Mottle",
  "trigger": "post_response"
}

trigger values: post_response | addressed | pet
command and http hook types are sufficient.

Alternative Solutions

_No response_

Priority

Low - Nice to have

Feature Category

CLI commands and flags

Use Case Example

  1. Claude finishes a response
  2. Buddy reacts with a quip in the speech bubble
  3. CompanionReaction hook fires with the quip text
  4. My hook script pipes it to Qwen3-TTS running locally
  5. Companion speaks through system audio with a voice matching its personality

Additional Context

Related: #31595 (TTS via Stop hook — already shows community demand for voice in Claude Code)

View original on GitHub ↗

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