Octopus "Machine is in an unavailable state" in CI
A deployment target is in the Unavailable status. Octopus marks a machine Unavailable after repeated failed health checks or connection attempts and skips it during deployment, so a step scoped to that machine or role has no valid target.
What this error means
The deploy log shows "Machine web-01 is in an unavailable state and will be skipped" or the deployment fails because the only matching target is Unavailable.
Machine 'web-01.internal' is in an unavailable state and will be skipped
for this deployment.Common causes
Repeated failed health checks
The target failed successive health checks (agent down, unreachable, or erroring), so Octopus set its status to Unavailable.
The agent or host is down
The underlying machine or its Tentacle/agent is stopped, so it cannot pass a health check and stays Unavailable.
How to fix it
Restore the target and re-check its health
- Bring the machine and its agent back online.
- Run a health check so Octopus re-evaluates the status.
- Confirm the target returns to Healthy before the deploy targets it.
octo health-check --environment "Production" \
--server "$OCTOPUS_URL" --apiKey "$OCTOPUS_API_KEY"Ensure another healthy target covers the role
If one machine stays Unavailable, keep at least one other healthy target in the same role so the deployment still has somewhere to run.
How to prevent it
- Keep redundant healthy targets per role for resilience.
- Alert when a target transitions to Unavailable.
- Run scheduled health checks so status reflects reality before deploys.