This integration is the client half of a deliberately security-hardened bridge to the Claude Code add-on, which runs a large language model on potentially untrusted input. Security reports are taken seriously.
Please do not open a public issue for security problems.
Report privately via GitHub Security Advisories: Report a vulnerability.
Include the affected version, Home Assistant version, a description of the issue, and a proof of concept if you have one. You can expect an initial response within a few days.
Security fixes are provided for the latest released version. Because the integration tracks current Home Assistant releases, please reproduce on a supported Home Assistant version before reporting.
The heavy lifting lives in the add-on; the integration is intentionally minimal. Its guarantees:
- No cloud calls. The integration only talks to the local add-on over Home Assistant's internal network. It never contacts the Anthropic API directly.
- Bearer token, not network trust. Every request carries a shared token provisioned via Supervisor discovery. The token is never shown in the UI and is redacted from diagnostics.
- Read-only by default. Conversation turns are treated as untrusted input and always run the add-on in read-only mode. Claude cannot change Home Assistant state from chat; it returns a described proposal instead.
- Scoped writes only. The
claude_ha.askaction'swritemode requires the explicit, user-confirmedintentsechoed from a prior read-mode proposal (at most five). Free-text writes are rejected before the add-on is contacted. - Secret-scanned. Every change is scanned (
scripts/secret_scan.py, in pre-commit and CI) for tokens, keys and personal data. - Scanned for machine traces. Every change is scanned
(
scripts/hygiene_scan.py, in pre-commit and CI) for paths that resolve only on one computer, symlinks pointing outside the repository, and by-products of authoring tools.
If you are integrating or auditing, the request/response contract and its security rationale are documented alongside the add-on.