My Claude Code + Home Assistant setup after six months (Claude Terminal Pro, ha-mcp, git, spook)

Since May I’ve used Claude Code as a day-to-day admin assistant for my Home Assistant install, which has about 700 devices across Zigbee, Z-Wave, Thread/Matter and ESPHome. It runs in the Claude Terminal Pro app (ESJavadex/claude-code-ha), edits the live config, and checks its work through MCP. I’ve written up the whole setup:

It covers:

  • installing and configuring the app, and the session picker;
  • the MCP servers: ha-mcp for states, logs and traces, plus a read-only UniFi one;
  • teaching Claude about the house with CLAUDE.md, memory and a “do not fix” list;
  • putting /config under git with a nightly push to GitHub, so every change is reviewable and easy to revert;
  • worked examples, including a Zigbee timeout that left the bathroom LEDs on, a smart plug that said “on” but passed no power, and four custom integrations broken by the 2026.11 upgrade.
  • the bundled Home Assistant plugin (/ha-check, /ha-upgrade, /ha-find-duplicates);

The three things that made the most difference:

  1. Write the guard-rails down. A short CLAUDE.md covering config checks, reboot safety, secrets and known workarounds did more for reliability than anything else.
  2. Read through MCP, write through files. YAML stays the source of truth, ha-mcp is how Claude checks the result, and git shows exactly what changed.
  3. One task per session. Short sessions stay focused and use far less of your plan’s usage limit.

Disclosure: I contribute fixes to Claude Terminal Pro. Happy to answer questions.

Updated for Claude Terminal Pro 2.5.3 and HA 2026.11:

  • A new worked example: four custom integrations broke in the 2026.11 upgrade. Two of them had already been reported on their issue trackers during the beta, so I now search each custom integration’s issues for the target version before upgrading.
  • The bundled Home Assistant plugin: current HA syntax plus /ha-check, /ha-upgrade and /ha-find-duplicates.
  • The phone key bar and status line, with screenshots from a desktop browser and an iPhone.

There’s an Updates section at the end of the page that lists changes as I make them.