[FEATURE] Expose buddy reaction text via hook event
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
- Claude finishes a response
- Buddy reacts with a quip in the speech bubble
- CompanionReaction hook fires with the quip text
- My hook script pipes it to Qwen3-TTS running locally
- 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)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗