Reference
Troubleshooting
Fix common Pilothouse problems — sessions not showing up, Codex hooks not running, no phone notifications, Tailscale HTTPS errors, and requests going to the wrong place.
Start with:
pilothouse doctor
It checks your setup — daemon, hooks, service, remote access — and prints a fix for each problem it finds.
A session doesn’t show up
- Is the daemon running?
pilothouse status. If not,pilothouse start, orpilothouse setupto install the service. - Are the hooks installed?
pilothouse hooks status. Re-runpilothouse hooks installif your agent’s settings were reset. - Codex: Codex only runs hooks you’ve trusted. In Codex, run
/hooksand trust the Pilothouse entries. Hooks must also be enabled ([features] hooksis on by default). - Sessions started before setup won’t report until their next hook event; restart the agent if in doubt.
The state looks wrong
pilothouse explain <session>
shows the evidence behind the state and which rule picked it. If it still looks wrong, please open an issue with the explain output.
My phone isn’t getting notifications
pilothouse notify test— does anything arrive?- iPhone: web push only works for web apps added to the home screen. Open Pilothouse from the home-screen icon and allow notifications there.
- Check that the phone is connected to Tailscale and can open your
web.public_url. - Check presence: at your desk, requests go to the terminal, not the phone. Run
pilothouse awayto test.
“HTTPS is not enabled for this tailnet”
Enable MagicDNS and HTTPS certificates in the Tailscale admin console (DNS page), then run pilothouse remote tailscale again.
The request went to my terminal, but I was away
Presence uses OS idle time with a default threshold of 60 seconds. Background input (a mouse jiggler, a game controller, some remote-desktop tools) can make you look present. Use pilothouse away before you leave, lower presence.idle_threshold, or set approvals.always_hold: true.
The agent showed its own dialog after a few minutes
That’s the hold limit. If nobody answers on a device within approvals.hold_limit (default 9 minutes), Pilothouse hands the question back to the agent so it never hits the agent’s own hook timeout. You’ll get a notification saying so.
Policy changes don’t seem to apply
pilothouse policy statusshows loaded files, ignored rules and errors. An invalid file keeps its last good version.- Repo
allowrules are ignored until youpilothouse policy trustthe repo. - Remember precedence: any
denywins overask, which wins overallow. - Test the exact call with
pilothouse policy test.
“agent_caller” errors
Pilothouse refuses approval and admin commands when they’re run from inside an agent (any process whose ancestors include claude or codex). Run the command from a normal terminal. This is deliberate — see Security model.
Detach key doesn’t work in wrap mode
The detach key is ctrl+\. Some terminals or tmux bindings capture it; check your bindings. Press it twice to send a literal ctrl+\ to the agent.
Logs
- Foreground daemon (
pilothouse daemon): stderr. - As a service:
~/.pilothouse/logs/daemon.log(rotated at 10 MB, three files kept). - Wrapped agents:
~/.pilothouse/logs/holder-<session>.log.
Found a mistake? Open an issue.