Troubleshooting
Start with reins doctor and reins logs -f. Most problems show up there in a line. The
rest are below.
- Approvals don't reach the phone
- The agent prompted at my desk and the phone never rang
- reins setup says the service was not installed
- The daemon stops when I log out of a Linux server
- The pairing screen can't find my machine
- "Connection refused" when pairing
- The QR doesn't render in my terminal
- "Host key changed" and the app refuses to connect
- install-hooks says Codex "already sets notify to something else"
- I can see the session but can't reply
- "That key is passphrase-protected"
- Dev server preview says nothing is serving
Approvals don't reach the phone
The hooks are not installed, the daemon is not running, or the agent was started before the hooks were written and is still using its old config.
reins doctor # daemon, hooks and agents, one line each
reins install-hooks # if hooks are missing
# then restart the agent The agent prompted at my desk and the phone never rang
That is fail-open working. With no phone attached the hook returns at once, unless a push wake is in progress. A phone in a pocket is usually suspended, so it is not attached.
# Android: Machine, then This phone: turn alerts on, or Stay connected
reins push list # is this phone registered, and how is it reached?
reins push test # send the wake notification now reins setup says the service was not installed
reins came from Homebrew, so brew services owns start-up; or a daemon is already running by hand. setup still prints the QR either way.
brew services start reins
reins setup --no-service
# or, for a daemon started by hand:
pkill -f 'reins serve' && reins service install The daemon stops when I log out of a Linux server
A systemd user unit stops with your session unless lingering is enabled. Under WSL2, systemd has to be switched on first.
loginctl enable-linger
# WSL2: add [boot] systemd=true to /etc/wsl.conf, then run wsl --shutdown and reopen The pairing screen can't find my machine
Discovery uses mDNS: both devices on the same network, Local Network permission on the phone, and the daemon not started with --advertise=false. Over Tailscale, the pairing screen lists tailnet peers instead.
reins pair # scan the QR instead; it works on any network you can reach
reins tailnet # what the tailnet picker should be showing "Connection refused" when pairing
sshd isn't running, or it listens on a port the QR doesn't name.
# macOS: System Settings, General, Sharing, Remote Login: on
# Linux
sudo systemctl status ssh
# a non-standard port
reins pair --ssh-port 2222 The QR doesn't render in my terminal
Some terminals and fonts break the block characters the QR is drawn with.
reins pair --qr-png ~/reins-pair.png # open the PNG and scan that "Host key changed" and the app refuses to connect
The machine's SSH identity doesn't match the fingerprint saved at pairing. Expected after a reinstall; otherwise it is exactly what an interception looks like.
# on the machine, compare with the fingerprint the app shows
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
# matches and you know why it changed: pair again install-hooks says Codex "already sets notify to something else"
Codex runs a single notify program, and Reins will not overwrite yours.
# chain the two in a script of your own, or remove the line, then
reins install-hooks --agent codex I can see the session but can't reply
Typing from the phone needs the agent inside herdr, tmux or zellij, and a daemon that was not started with --allow-chat-send=false. Answering a question card needs herdr.
herdr # or tmux, or zellij
claude # start the agent inside it "That key is passphrase-protected"
The app cannot ask for a passphrase mid-connection, so it rejects encrypted keys at import.
# skip importing: the pairing QR mints a key for you
reins pair Dev server preview says nothing is serving
The tunnel is fine; nothing listens on that port on the host.
lsof -nP -iTCP:3000 -sTCP:LISTEN
# nothing? start the dev server, then reload in the app Still stuck
Email hello@enraio.com with the output of reins doctor and
the last lines of reins logs.