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 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.