Every 30 seconds the agent checks in with the dashboard. Heartbeats do three things:
Nothing the agent does is blocked waiting for heartbeats — they run in the background while scans and migrations continue.
If the agent misses heartbeats for more than a minute, the dashboard flags it as Disconnected. Scans and migrations pause waiting for the agent to come back.
Common causes:
If you revoke a token from the dashboard while an agent is running, the agent detects this on the next heartbeat (401 Unauthorized) and disconnects itself automatically. You don't need to manually quit the app.
In the project Setup step, find the agent in the list and click the Revoke icon.

Revoking is instant and permanent — the token can't be reactivated. Generate a new one if you want to reconnect.
A project can have several active agents — useful if you want to split a migration across machines, or have a backup agent ready. Each agent heartbeats independently, and all of them see the same project config.
That said: for most migrations, one agent is plenty. Adding more doesn't parallelize a single migration (the agent itself already uploads with 8–16 concurrent workers).
Uninstalling doesn't revoke the token on the server — revoke from the dashboard if you want to be safe.