companion-capture: Tool saves Claude Code's ephemeral speech bubbles

What companion-capture does
If you use Claude Code in the terminal, you've probably noticed the companion character that pops up with speech bubbles while you work. These messages are ephemeral—the TUI redraws and they're gone. Some contain useful observations about your code, warnings about bugs, or funny commentary. companion-capture watches terminal output, extracts those bubble messages, and saves them to markdown files (and optionally SQLite for search).
How it works
- A shell wrapper launches Claude Code through
script -q -Fto capture raw terminal output - A Python parser runs a VT100 screen buffer (not ANSI stripping—actual cursor position tracking) to figure out where text is actually rendered
- Messages require two consecutive scans before being written, so you don't get half-rendered garbage
- A PostToolUse hook surfaces new captures back to Claude mid-session, so it can actually see what the companion said
Features
- Zero runtime dependencies (stdlib Python only)
- Full-text search across captures (
companion-capture search "auth bug") - Privacy controls—exclude patterns, project blocklists, retroactive redaction
- Opt-in contextual recall that feeds recent captures back to Claude automatically
companion-capture doctorfor health checking the whole setup- 400+ pytest cases
What the developer found using it
The companion actually catches things. It flagged a migration script that had no test coverage. It noticed a race condition in a multi-session setup. Most of the time it's vibes and reactions, but every few sessions it drops something genuinely worth reading back.
Current limitations
MacOS + Claude Code only for now. No external dependencies, MIT licensed.
GitHub: github.com/jaywadhwa/companion-capture
📖 Read the full source: r/ClaudeAI
👀 See Also

RescueBot: Telegram-based backup and restore for OpenClaw bots
RescueBot is a lightweight skill that automatically snapshots OpenClaw bot configurations and enables one-tap restore via Telegram commands, eliminating the need for SSH access during failures.

CAP: Claude Code Statusline Plugin That Installs with /plugin install
CAP (Claude Allowance Pulse) is a statusline plugin for Claude Code that installs via /plugin install without npm, curl, or jq. It displays model usage, session and weekly limits, context window usage, and session cost in the terminal.

soul.py adds persistent memory to local LLMs with simple file-based approach
soul.py is a Python library that adds persistent memory to any LLM using two markdown files for identity and conversation logging, working with Ollama, OpenAI, and Anthropic models without requiring databases or servers.

Outworked v0.3.0 adds iMessage support, built-in browser, and scheduling for Claude Code agents
Outworked v0.3.0 introduces iMessage channel support for agent communication, a built-in browser for web interaction, scheduling via cron, tunneling for local sharing, and enhanced MCP/Skills support. The desktop app orchestrates Claude Code agents as a team to handle coding tasks, web research, and automated workflows.