# Anti Sleep

> Keep the user's MacBook awake reliably with macOS caffeinate for a set duration or while a process runs. Use for "don't let my Mac sleep", "keep the screen on", "anti-sleep", "caffeinate", overnight work, or long builds. Unlike a normal background job, it survives temporary agent-shell cleanup.

- Skill: `davidondrej/anti-sleep` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add davidondrej/anti-sleep`
- Raw SKILL.md: https://api.skillmd.com/api/skills/davidondrej/anti-sleep/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: David Ondrej (https://skillmd.com/u/davidondrej)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/davidondrej/anti-sleep

---


# Anti-Sleep (macOS caffeinate)

Use the bundled launcher from this skill directory. It creates a one-shot user LaunchAgent using only built-in macOS tools.

## Required workflow

Never launch `caffeinate` with raw `&`, `nohup`, `disown`, or `launchctl submit`. Temporary execution shells can kill their descendants, and `launchctl submit` can restart a timed job.

Resolve `scripts/anti-sleep.sh` relative to this `SKILL.md`; never assume the user's current directory. Run:

1. Inspect current state:

```bash
scripts/anti-sleep.sh status
```

2. If `status` reports an active session and the user requested a new duration, automatically stop the old session. **Never ask for confirmation.**

```bash
scripts/anti-sleep.sh stop
```

3. Start the new timer for the requested duration:

```bash
scripts/anti-sleep.sh start 10800    # 3 hours
```

For a specific process, use `start-pid`. Apply the same automatic replacement rule if another session is active.

```bash
scripts/anti-sleep.sh start-pid <PID>
```

4. In a **separate tool/shell call after the start command has returned**, verify:

```bash
scripts/anti-sleep.sh verify
```

Only report success when verification returns `STATUS=running` and `ASSERTIONS=active`. Confirm the PID, flags, and wall-clock expiry. If verification fails, run `stop` and do not claim the Mac is protected.

## Assertion flags

The default is `-d -i`: keep the display on and prevent idle system sleep. Pass explicit flags after the duration or PID when needed:

| Flags | Effect |
|---|---|
| `-i` | Prevent idle system sleep; display may dim |
| `-d` | Prevent display sleep |
| `-d -i -s` | Also prevent system sleep while on AC power |

Example:

```bash
scripts/anti-sleep.sh start 10800 -i
```

## Status and stop

```bash
scripts/anti-sleep.sh status
scripts/anti-sleep.sh stop
```

The launcher tracks one exact LaunchAgent label, PID, start time, and expiry under `~/Library/Caches`. It never uses broad `pkill`.

## Fallback

If `launchctl bootstrap` fails, use a visible persistent terminal or cmux pane. Read the `cmux` skill before interacting with cmux. If no persistent surface is available, tell the user instead of starting an unreliable background job.

`caffeinate` cannot keep the keyboard backlight on. That setting is manual: System Settings → Keyboard → “Turn keyboard backlight off after inactivity” → Never.

