Skip to main content

Start here

Most problems come down to which credential and organization a command is using. Check with:
  • Credential source says whether the key comes from your saved login (local context, with the key in the OS keychain) or from SABAOTH_API_KEY. If the environment variable is set, your saved login is ignored.
  • Selected org is the organization commands act in unless you pass --org.
For any failure, run the command again with --json to see the exact error code, then look it up in Error codes.

sabaoth: command not found

npm’s global install folder isn’t on your PATH.
  1. Find the folder: npm prefix --global. The command lives in its bin subfolder on macOS and Linux, or in the folder itself on Windows.
  2. Add that folder to your PATH in your shell profile (~/.zshrc, ~/.bashrc or similar), then open a new terminal.
If you use a Node version manager, the CLI is installed for the active Node version only. Switch to that version, or install the CLI again under the one you’re using.

Unsupported Node.js version

The CLI needs Node.js 22.12 or later, below 25. Check with node --version and upgrade or switch versions, then reinstall the CLI.

”The API key was rejected”

API_KEY_UNAUTHORIZED means the API didn’t accept the key.
  • Make sure you copied the whole key, starting with mpg_, with no spaces.
  • Check on the API Keys page that the key is active and hasn’t expired or been revoked.
  • If SABAOTH_API_KEY is set, it’s the key being used, even if you’ve logged in. Check it with echo "${SABAOTH_API_KEY:0:8}", or unset SABAOTH_API_KEY to fall back to your saved login.
  • Create a new key and run sabaoth login again.

The keychain is unavailable

CREDENTIAL_STORE_UNAVAILABLE means the CLI couldn’t reach the OS keychain. It never falls back to a plain-text file, so nothing was saved, read or removed.
Unlock your login keychain, for example by opening Keychain Access. If you’re connected over SSH, the keychain may be locked for that session; run security unlock-keychain first.

”No Organization is selected”

You haven’t logged in on this machine, or you logged out of the selected organization. Run sabaoth login, or sabaoth org use <org-id> if you’re already logged in to another organization. In CI, set SABAOTH_API_KEY.

”grants access to more than one Organization”

Your key covers several organizations and the CLI won’t guess. Add --org <org-id> to the command, using one of the IDs in the error message.

A service I can see in the dashboard is “not found”

The CLI looks only in the effective organization, and reports services elsewhere as not found.
  1. Run sabaoth config to see which organization is selected.
  2. Switch with sabaoth org use <org-id>, or add --org <org-id> to the command.
  3. Check that you’re using the service ID (clu_...), not its name.

A command hangs or asks for confirmation in CI

Commands that create, delete or back up ask for confirmation. In CI there’s no terminal, so they fail with CONFIRMATION_REQUIRED instead of hanging. Add --yes.

”The request was sent but no result was received”

UNKNOWN_MUTATION_OUTCOME means the change may or may not have happened. Don’t just run the command again:
  • After postgres create, run sabaoth postgres list and look for the service.
  • After postgres delete, run sabaoth postgres get <service-id>.
  • After backup create, run sabaoth backup list <service-id>.
Only retry if the change didn’t happen.

Log streaming keeps reconnecting

Reconnecting to the log stream on stderr means the connection dropped and the CLI is reconnecting on its own. Brief reconnects are normal. If it keeps happening:
  • Too many log streams may be open in your organization at once. Close others, including ones in the dashboard.
  • Check your network connection, especially through a VPN or proxy that closes long-lived connections.
Events may be missed during each gap. For a complete record, use the Logs page in the dashboard.

”Another sabaoth process is updating”

CONTEXT_LOCK_TIMEOUT means another sabaoth process is saving the context file. Wait and retry. If no other process is running, a previous one may have been killed mid-save; delete the context.json.lock file next to the context file.

Start fresh

To clear everything the CLI has stored on this machine:
Then delete the sabaoth folder at the context file location and run sabaoth login again.

Still stuck?

Contact support with:
  • The command you ran and its full output (with --json if you can)
  • The Request ID from the error, if there is one
  • Your CLI version (sabaoth --version), Node.js version and OS
Never include your API key.