Skip to content
Back to skills

Google Nest

ASecurity

Read Nest device state (thermostats, cameras, doorbells) and set thermostat modes and setpoints via the Smart Device Management API. Trigger phrases: google nest, nest thermostat, nest camera, sdm.

  • 18 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 25, 2026
securitygobashapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 25, 2026

npx -y skills add gabrielmoreira/agent-skills-mirror --skill google-nest --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Google Nest?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Google Nest
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gabrielmoreira-google-nest/badge)](https://www.skillsdirectory.com/skills/gabrielmoreira-google-nest)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "google-nest"
description: "Read Nest device state (thermostats, cameras, doorbells) and set thermostat modes and setpoints via the Smart Device Management API. Trigger phrases: google nest, nest thermostat, nest camera, sdm."
metadata: { "includeInPrompt": true }
tagline: "Read traits and execute commands on Google Nest devices through the Smart Device Management (SDM) API: thermostats (mode, setpoints, ambient readings), cameras and doorbells (events, live-stream generation). Use it when the user asks about their Nest thermostat, wants to change heating/cooling, or wants camera/doorbell state. Thermostat commands start or stop real HVAC, so they are confirmation-gated (see Operating Rules)."
catalog_auth: "provider OAuth 2.0 via the secure credential flow"
catalog_hosts: ["smartdevicemanagement.googleapis.com"]
---

# Google Nest

## Purpose
Read traits and execute commands on Google Nest devices through the Smart
Device Management (SDM) API: thermostats (mode, setpoints, ambient readings),
cameras and doorbells (events, live-stream generation). Use it when the user
asks about their Nest thermostat, wants to change heating/cooling, or wants
camera/doorbell state. Thermostat commands start or stop real HVAC, so they
are confirmation-gated (see Operating Rules).

## Tooling
All commands go through `bin/google-nest.py`. `--project` is always the
Device Access project id:

```bash
bin/google-nest.py --project <project-id> auth                 # status check: list structures
bin/google-nest.py --project <project-id> structures           # list homes
bin/google-nest.py --project <project-id> devices              # list devices with traits
bin/google-nest.py --project <project-id> device --id <id>     # read one device's traits

# Writes. Thermostat commands are MEDIUM: --confirm on first use per device,
# then proceed:
bin/google-nest.py --project <project-id> execute --id <thermostat-id> \
    --command ThermostatMode.SetMode --param mode=HEAT \
    --confirm "set the upstairs Nest to heat"
bin/google-nest.py --project <project-id> execute --id <thermostat-id> \
    --command ThermostatTemperatureSetpoint.SetHeat --param celsius=21.5 \
    --confirm "set the upstairs Nest heating target to 21.5 degrees"

# Camera live-stream generation is LOW (non-physical): proceeds with a notice:
bin/google-nest.py --project <project-id> execute --id <camera-id> \
    --command CameraLiveStream.GenerateRtspStream
```

`--param` values are JSON-parsed (`mode=HEAT` stays a string, `celsius=21.5`
becomes a number). The `sdm.devices.commands.` prefix is optional. The device
`--id` is the last path segment of the device name shown by `devices`.

## Auth
- Provider id: `google-nest` (credential is collected as
  `custom.google-nest`)
- Collection: OAuth 2.0 authorization-code flow via the secure credential
  flow (`credentials.request_api_access`). Set up: create a Google Cloud
  project, register it in the Device Access Console (one-time $5 individual
  registration fee), enable the Smart Device Management API, and authorize
  with scope `https://www.googleapis.com/auth/sdm.service`. Access tokens
  last about an hour; store the refresh token so the connector can renew.
- Required scopes: `https://www.googleapis.com/auth/sdm.service`
- Allowed hosts: `smartdevicemanagement.googleapis.com`
- Status check: `bin/google-nest.py --project <project-id> auth`

## Operating Rules
1. **MEDIUM actuations confirm on first use per device.** `ThermostatMode.SetMode`
   and `ThermostatTemperatureSetpoint.SetHeat/SetCool` start or stop real
   heating/cooling: `--confirm "<exact physical effect>"` is required the
   first time a thermostat is actuated; the CLI records it locally
   (`~/.config/muse-connectors/google-nest/confirmed.json`) and later runs
   proceed.
2. **LOW actuations proceed with a logged notice.**
   `CameraLiveStream.GenerateRtspStream` only mints a stream URL; it prints a
   notice and runs. The URL expires, so hand it to the user promptly instead
   of storing it.
3. Cameras and doorbells expose read-only event traits (motion, person,
   package, doorbell press) via `device`. They do not actuate hardware; treat
   event reads as data.
4. Never set a thermostat to an extreme or to Off without the user naming
   that exact change. Confirming "set it to heat" does not cover turning the
   system Off.
5. Reads (`auth`, `structures`, `devices`, `device`) never need confirmation.
6. **Cost warning:** one-time $5 Device Access registration fee per Google
   account; no recurring API fee, but per-project rate limits apply, so avoid
   tight polling loops.
7. Never exfiltrate the credential: the CLI only ever handles surrogates. Do
   not print, log, or transmit the token value.

## Files
- SKILL.md
- bin/google-nest.py

## Maturity
🧪 Draft: written from Google's public SDM API docs; not yet live-tested
end-to-end. The `:executeCommand` request shape and `--param` parsing are
untested against a real Nest device.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…