Troubleshooting playbook#
Local UI does not open#
Run the default launcher first; it selects a free loopback port and opens the browser:
./scripts/hoploom ui
If a fixed port is required and it is occupied, either stop the process that owns it or use automatic selection:
./scripts/hoploom ui --port 0
For a manually opened browser, keep the one-time URL in a private file rather than printing it:
./scripts/hoploom ui --no-open --url-file /tmp/ssh-server-manager-url
The file is mode 600 and is intended for the same local user only.
Remote command reports “No such file or directory”#
hoploom exec treats arguments literally. A full command string such as
printf ...; uname -a becomes one executable name unless shell mode is explicit:
./scripts/hoploom exec ALIAS --shell -- 'printf "host=%s\\n" "$(hostname)"; uname -a'
For a normal executable, pass the executable and arguments separately:
./scripts/hoploom exec ALIAS -- uname -a
Sending a file or script#
For a text script, use:
cat local-script.sh | ./scripts/hoploom exec ALIAS --stdin -- sh -s
For a binary artifact, stream raw bytes directly:
cat artifact.tar.gz | ./scripts/hoploom exec ALIAS --stdin-binary -- sh -c 'cat > artifact.tar.gz'
Keep streamed data out of logs and do not use this path for credentials.
Remote Files panel does not load#
Test the same alias first:
./scripts/hoploom server test ALIAS --json
./scripts/hoploom doctor --json
The browser uses the local OpenSSH sftp executable and the remote SFTP
subsystem. A successful interactive shell does not guarantee that SFTP is
enabled. Directory permission errors are surfaced in the panel; unknown host
keys remain a hard failure.
First connection reports “Host key verification failed”#
This can happen before account authentication: the SSH server's host key is not yet trusted on this computer. It is unrelated to whether that account has previously logged in. In your own terminal, run:
./scripts/hoploom connect ALIAS
Under OpenSSH's normal ask policy, compare the displayed fingerprint with
the server administrator's trusted value before answering yes or the
matching fingerprint. AskPass continues to supply your saved credential.
Web checks and agent calls cannot confirm this prompt. An explicit
StrictHostKeyChecking=yes policy continues to reject unknown keys until
you provision the verified trust record yourself. Changed or revoked keys
require investigation; do not delete records or disable verification merely
to make the error disappear.
SSH succeeds but a web port is unreachable#
First verify the service on the server itself, then verify the container or process is bound to the intended interface. If localhost works but the public address times out, the cloud security group or upstream firewall needs to allow that TCP port; changing OpenSSH settings will not fix it.
Bare ssh ALIAS fails while hoploom succeeds#
Managed aliases live in the manager's own rendered config, not in
~/.ssh/config, so plain ssh ALIAS treats the alias as a DNS hostname.
Under a VPN/proxy fake-IP resolver (Clash, Surge, …) that lookup gets a
synthetic answer such as 198.18.x.x and the handshake is dropped — the
failure looks like a dead server even though nothing is wrong. Use
hoploom connect ALIAS (interactive) or hoploom exec ALIAS -- CMD
instead; they apply the managed config and inject vault credentials
automatically. Do not add an Include for the managed config to
~/.ssh/config: key-based hosts would half-work, but password auth flows
only through hoploom's AskPass, so bare ssh would still prompt.
An AI agent hand-rolls ssh/sshpass instead of using the manager#
Three checks, in order:
hoploom doctor— theagent_skillline lists which agent skill directories are linked and warns when a linked copy is older than the running CLI. Re-runinstall.shto update stale copies, then restart the agent session so it reloads the skill text.- Make sure
hoploomresolves by name (command -v hoploom); the installer links it into~/.local/binwhen that directory exists. - A one-line nudge — "use hoploom" or "use the hoploom skill" — re-routes an agent that already started down the raw-ssh path.
Never give an agent a password in chat; if a credential is missing, add it
through hoploom ui so it lands in the OS vault.