Skip to content

Troubleshooting

Claude gets “HTTP 401 Unauthorized” after I restarted AccessVault

Expected — this is the most common issue. The bearer token that authenticates the sidecar to the app is regenerated on every app launch, so a claude mcp add command you ran yesterday holds yesterday’s token. Fix: with the connection active, click Copy command in the MCP sidecar panel and run it again to re-register with the fresh token.

(For scripting: the current session’s token, port, and PID are written to ~/Library/Application Support/com.accessvault.dev/runtime.json on each launch.)

Claude gets “Error: http client error: … connection refused”

The sidecar can’t reach AccessVault — the app isn’t running (or is listening on a different port than the registered --api-url). Launch AccessVault and retry. The sidecar has no database access of its own; it only works while the app is up.

Claude gets “api error (status 409): not connected to a database”

The app is running but the connection isn’t active. Select it in the sidebar and click Connect.

Tools aren’t showing up in Claude

  • Check the tool is Enabled in the Catalog tab — disabled tools are hidden from Claude. The sidecar hot-reloads the catalog, so an enable takes effect within moments.
  • If you edited the catalog file by hand and made it invalid, the sidecar logs a warning and keeps serving the last valid version — fix the file or edit through the app. An invalid catalog at sidecar startup is fatal: the sidecar exits, and Claude reports the server as failed.

Port 9876 is taken

The app’s HTTP API defaults to port 9876. Launch AccessVault with the ACCESSVAULT_PORT environment variable set to change it — then re-run Copy command, since the registered --api-url embeds the port.

SSH tunnel keeps dropping

Dead tunnels are detected via keepalives (default: every 30 seconds, dead after 3 missed — roughly 90 seconds) and rebuilt automatically on the next query or command; you’ll see a toast and a builtin:ssh_reconnect entry in the audit log. If reconnects themselves fail, run Test Connection in the connection form — it reports the SSH step separately from the database step, so you can tell a bastion problem from a database problem. Rotated SSH credentials are re-read from the Keychain on reconnect, but a changed bastion hostname or port means editing the connection.

”pg_stat_statements is not installed”

The Monitoring slow-queries section and all of Privilege Analysis need the pg_stat_statements extension. The Privileges tab offers an Enable Extension button (CREATE EXTENSION IF NOT EXISTS), which needs a database user with rights to create extensions. On most servers the module must also be in shared_preload_libraries (a server restart), and stats only accumulate from that point — give it time before trusting “unused” verdicts.

Connection test fails

  • Remote databases usually want TLS set to require; some managed providers refuse non-TLS connections entirely.
  • Behind a bastion, remember the Host/Port fields describe the database as seen from the bastion (often a private address), not from your machine — see SSH Tunneling.
  • The failed-test message shows the raw driver error, which usually names the culprit (authentication, DNS, refused connection).

macOS won’t open the app

Beta builds aren’t code-signed yet. Right-click the app in Applications and choose Open — see Installation.

Still stuck? The audit log records every operation including failures — the error messages there are often more specific than what the UI surfaces.