## heartbeat-prompt-unreadable **What you see.** `loopd` is serving, but heartbeat turns do not run. It logs this line once, until the file reads: ```text loopd: heartbeat.md: Permission denied (os error 13); see docs/runbook.md#heartbeat-prompt-unreadable ``` **Why.** `[heartbeat] prompt` is next to the config file (default `heartbeat.md`). The scheduler skips the tick rather than send an empty or guessed user message. A missing file is the same: restore the starter from `config/heartbeat.md` in the repository. **Confirm.** ```sh ls -l "$(dirname "$LOOPD_CONFIG")/heartbeat.md" ``` **Fix.** Restore mode `0644` (or whatever the owner uses for the other prompts) and content. The next tick after a successful read logs nothing extra and runs the standing `heartbeat` session. **Check.** `sessions/heartbeat/0.jsonl` gains a new `User` whose text starts with `It is ` and an RFC 3339 timestamp.