This page maps observable symptoms (log lines, UI states) to fixes.Documentation Index
Fetch the complete documentation index at: https://slackhive.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
”Another runner is already running - exiting”
What it means. The singleton lock at~/.slackhive/runner.lock is held by a live process. A second runner (from npm run dev, tsx watch, or an accidental re-invocation) tried to boot and refused.
Fix:
slackhive stop sweeps orphan processes and unlinks the lock. Then start acquires it cleanly.
Amber “stale” dot on an agent
What it means. The agent’s row says it’s running, but the runner stopped sending heartbeats (missed ≥ 45s). Usually the runner crashed or waskill -9’d.
Fix:
”Slack bot token is invalid or revoked”
What it means. The runner probed Slack with the saved bot token and Slack rejected it. The agent’slastError shows the full message.
Fix:
- Go to Settings → Platform Integrations
- Pick the agent
- Paste fresh bot token, app token, signing secret
- Save
- The agent restarts automatically; within a few seconds it goes back to running
Stale lock after a crash
What it means. The runner was killed without cleanup (kill -9, power loss). The lock file points to a PID that no longer exists.
Fix: none needed - slackhive start auto-detects stale locks (checks the PID with process.kill(pid, 0)), removes the lock, and starts cleanly.
Dashboard Claude badge is amber (expired) or red (disconnected)
What it means. The dashboard header has a Claude status badge - it polls/api/system/claude-status every 30 seconds. Amber means the cached token expired; red means no token was found at all.
Source hierarchy (click the badge to see which one it used):
~/.claude/.credentials.json- macOS Keychain (
Claude Code-credentials) - copied into the credentials file if found ANTHROPIC_API_KEYorCLAUDE_CODE_OAUTH_TOKENenv var
- Expired (amber) - on macOS, SlackHive auto-syncs from Keychain on expiry. If that fails, run
claude loginon the host and the badge flips back to green within 30s. - Disconnected (red) - run
claude login, or setANTHROPIC_API_KEYin.envandslackhive stop && slackhive start.
OAuth MCP stopped working
What it means. The OAuth token expired or was revoked. Fix by platform:| Platform | What SlackHive does | What you do |
|---|---|---|
| macOS | Auto-refreshes from Keychain on 401 - usually silent | If the Keychain itself is empty, run claude login |
| Linux (GNOME keyring) | Reads via secret-tool | If missing, run claude login; if keyring is unavailable, see below |
| Linux (headless) | Reads ~/.claude/.credentials.json | Run claude login on the machine, or copy the credentials file from a machine where it worked |
| All | - | Open the MCP catalog, click Reconnect on the offending MCP, or paste a fresh token |
Linux: claude login says “keyring unavailable”
What it means. Common on headless servers or fresh Linux VMs - no GNOME/KDE keyring daemon running, so secret-tool has nowhere to write.
Fix (pick one):
- Start a lightweight keyring:
gnome-keyring-daemon --start(requires dbus session) - Set
DBUS_SESSION_BUS_ADDRESSto an active bus if you have one - Ignore it -
claude loginfalls back to writing~/.claude/.credentials.jsondirectly. SlackHive picks it up from there
Port conflicts
What it means. Default ports 3001 (web) or 3002 (runner) are taken. Fix: none - the CLI auto-negotiates free ports. Check the actual ports with:PORT and RUNNER_INTERNAL_PORT in .env.
Agent shows “error” status
What it means. The runner tried to start the agent and something failed - Slack auth, MCP connection, missing integration. The real reason is inlastError on the agent detail page.
Fix: read the error, fix the underlying cause (bad token, missing env var, offline MCP server), then restart the agent from the detail page.
Logs don’t show up in the UI
What it means. The log SSE stream is disconnected. Fix: reload the page. If it stays disconnected, checkslackhive status - the web server may be down. slackhive start recovers it.
Agent directory left behind after delete
What it means. In older versions, deleting an agent left~/.slackhive/agents/<slug>/ on disk. Fixed in the current release - delete now removes the directory too.
Fix for legacy orphans:
Still stuck?
Check~/.slackhive/logs/runner.log for the full stream. Each line is JSON - most errors include a message and an error field that points straight at the cause.