> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sabaothcloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting

> Fixes for common problems with the sabaoth CLI

## Start here

Most problems come down to which credential and organization a command is using. Check with:

```bash theme={null}
sabaoth config
```

* **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](https://docs.sabaothcloud.com/cli/errors.md).

## `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](https://docs.sabaothcloud.com/dashboard/api-keys.md) 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.

> [tab] macOS
>
> 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.

> [tab] Linux
>
> The CLI needs a Secret Service provider such as GNOME Keyring or KWallet, running and unlocked. Headless servers, containers and WSL often don't have one. There, use `SABAOTH_API_KEY` instead of `sabaoth login`.

> [tab] Windows
>
> The CLI uses Windows Credential Manager. Make sure you're signed in to a normal user session, not a restricted service account.

## "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](https://docs.sabaothcloud.com/dashboard/logs.md) 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](https://docs.sabaothcloud.com/cli/installation.md#where-the-cli-stores-data).

## Start fresh

To clear everything the CLI has stored on this machine:

```bash theme={null}
sabaoth logout --all
```

Then delete the `sabaoth` folder at the [context file location](https://docs.sabaothcloud.com/cli/installation.md#where-the-cli-stores-data) and run `sabaoth login` again.

## Still stuck?

[Contact support](https://docs.sabaothcloud.com/support.md) 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.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.