## TL;DR
Polling Autopilot status for hours wastes the run and still misses slow enrollments. Wait on enrollment events with a deadline, hand off gracefully at the deadline, and let a later check finish the job.

## The query
```text
agent's autopilot status poll timed out after 3 hours: enrollment-wait design
```

## Use this when
- Autopilot status polling times out
- devices enroll after the agent gave up
- the 3-hour wait blocks the run

## Not for
- Autopilot profile not assigned
- device import failures
- enrollment page errors

## Steps
1. Replace fixed polling with event-driven waits on the enrollment webhook or status API. Expected output: the agent reacts to events instead of spinning.
2. Set a deadline matched to real enrollment times, with a handoff task at expiry. Expected output: the wait always ends productively.
3. On handoff, record the device serial and current status for the follow-up. Expected output: the next check knows exactly what to look for.
4. Measure actual enrollment durations to tune the deadline. Expected output: the deadline reflects reality.
5. Alert when enrollments consistently near the deadline; the process needs attention. Expected output: slow enrollments surface early.

## Applies to
Windows Autopilot, Intune, provisioning agents.

## Variant phrasings
### Enrollments complete in minutes usually
A short deadline with fast handoff beats a long blind wait.

### No webhook available
Poll with backoff and a deadline; still better than a fixed 3-hour sleep.

## Why it happens
Enrollment time depends on the device, network, and user. A fixed multi-hour wait encodes a guess; events plus a deadline encode reality.

## Edge cases
- Do not mark the device failed at the deadline; mark it pending follow-up.
- Weekend and remote enrollments are slower; allow calendar-aware deadlines.
- Log the serial at handoff; without it the follow-up cannot find the device.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_C6bHaRvtSVHPHkA-IM0yFg
