Quick Summary The most common reason a Nest thermostat fails to connect to Home Assistant is an expired or missing Nest Developer account token, a mismatch bet…
Quick Summary
The most common reason a Nest thermostat fails to connect to Home Assistant is an expired or missing Nest Developer account token, a mismatch between the Nest Device Access API and the legacy Works with Nest API, or a misconfigured configuration.yaml. Google migrated all Nest integrations to the Device Access API in 2023 — if your setup predates that, it needs to be rebuilt from scratch.
Symptom Diagnosis
Step 1: Confirm You Are Using the Device Access API
Google shut down the legacy Works with Nest API in August 2023. Home Assistant's Nest integration now requires the Google Device Access API exclusively. Go to console.nest.google.com/device-access. Sign in with the Google account linked to your Nest thermostat. If you see no projects listed, you need to create one (one-time $5 fee). If you have a project, note the Project ID — you'll need it in Step 3.
Step 2: Set Up a Google Cloud Project and OAuth Credentials Go to console.cloud.google.com. Create a new project (or use an existing one). Enable the Smart Device Management API. Go to APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID. Application type: Web application. Authorized redirect URI: https://my.home-assistant.io/redirect/oauth (exact — no trailing slash). Copy the Client ID and Client Secret.
Step 3: Create a Pub/Sub Subscription
Home Assistant requires a Google Pub/Sub subscription to receive real-time updates from your Nest devices. In Google Cloud Console, go to Pub/Sub → Subscriptions → Create Subscription. Subscription ID: use something memorable like nest-home-assistant. Topic: select the topic created automatically by Device Access (format: enterprise.PROJECT_ID). Delivery type: Pull. Copy the full Subscription Name (format: projects/YOUR_PROJECT/subscriptions/nest-home-assistant).
Step 4: Add the Integration in Home Assistant Go to Settings → Devices & Services → Add Integration → Nest. Enter your Client ID, Client Secret, Device Access Project ID, and Pub/Sub Subscription ID. Home Assistant will redirect you to Google's OAuth consent screen. Grant all requested permissions — if you skip any, entities will be missing. After authorisation, Home Assistant will create entities for your thermostat.
Step 5: Fix 'Unavailable' Entities After Working Setup
If the integration worked previously but entities are now unavailable: Go to Settings → Devices & Services → Nest → Re-authenticate. Complete the OAuth flow again — this refreshes the access token. If re-authentication fails: delete the integration, clear the .storage/nest.json file from your Home Assistant config directory, and re-add from scratch.
Step 6: Fix Clock Sync Issues (Token Refresh Failures)
OAuth token refresh requires accurate system time. A clock drift of more than 5 minutes causes silent authentication failures. SSH into your Home Assistant host. Run: date — verify the time is correct. If wrong: sudo timedatectl set-ntp true to enable NTP sync. Restart Home Assistant after fixing the clock.