Agent holds are now leases, not latches.
- A hold not refreshed for
leaseSeconds(default 30 minutes) expires on its own, so an agent session that crashes or is killed without releasing can no longer keep the Mac awake indefinitely. - Re-POSTing
/agent/on?id=Xwith the same id refreshes the lease — the agent-awake hooks (v1.1.0+) do this automatically on every tool call. GET /agent/statusnow reportsageSeconds(per held id, seconds since last refresh) andleaseSeconds.ALLNIGHTER_AGENT_LEASE_SECONDSenv override (min 5) for testing.- User switches are untouched: leases apply only to the agent switch, and agent-off still never overrides user-on.
Notarized universal build, stapled: AllNighter-1.2.0.zip.