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

# Troubleshooting

> Common errors and what to do about them.

> [accordion] 401 Unauthorized, or the SDK says the API key is invalid
>
> * Check that `E2B_API_KEY` (or `ANONA_API_KEY`) holds an **Anona Compute** key from the dashboard. E2B keys and Anona Memory keys do not work here.
> * The key may be revoked or expired; see **API keys** in the dashboard.
> * Keys are `e2b_` followed by lowercase hex. The SDK refuses other formats before sending anything.

> [accordion] The SDK talks to api.e2b.app instead of Anona
>
> Set `E2B_DOMAIN=compute.anonalabs.com`. Recent SDKs ignore `E2B_API_URL`. Or use `anona.Sandbox` / `@anona/sdk`, which default to the Anona domain.

> [accordion] 404 sandbox not found, but I just created it
>
> * The sandbox may have reached its timeout and been deleted (the default is 300 s from the SDK). Use a longer `timeout`, `set_timeout`, or `lifecycle={"on_timeout": "pause"}`.
> * The key may belong to another organization, or be limited to a list of sandbox IDs. Both look exactly like "not found".

> [accordion] 403 your access cannot open this sandbox
>
> Your key lacks `sandboxes:use` (needed for commands, live view and SSH), or your dashboard role is viewer. Create a key with **Create and use**, or ask an admin for the member role.

> [accordion] 403 this API key lacks the usage:read scope
>
> `anona-compute usage`, the MCP `get_usage` tool and `GET /v1/usage` need a key with `usage:read` (the **Read only** and **Full access** presets have it); billing needs `billing:read` (**Full access**). Create a new key; existing keys keep their scopes.

> [accordion] 403 only organization owners and admins ... may change network settings and vault secrets
>
> Team egress settings and the credential vault are changed by dashboard owners and admins. Any role and any key can read them.

> [accordion] 400 no vault secret named ... is bound to this sandbox / store it in the credential vault first
>
> Store the secret on the dashboard's **Credential vault** page under exactly the name the rule uses (`${vault.<name>}`), then create the sandbox again.

> [accordion] 429 concurrent sandbox limit reached
>
> Delete sandboxes you no longer need (`anona-compute list`, then `anona-compute delete`), or pause them: paused sandboxes do not count as running. See [limits](https://docs.anonalabs.com/compute/concepts/limits.md).

> [accordion] 400 timeout -1 (no limit) is not available
>
> Your plan has a maximum lifetime (the free plan's is one hour). Use a timeout up to that maximum.

> [accordion] 400 volumeMounts / iam / autoPauseMemory=false are not supported
>
> These E2B features are not available on Anona Compute; remove them from the create call. See [Migrate from E2B](https://docs.anonalabs.com/compute/migrate-from-e2b.md#not-available-yet).

> [accordion] 400 on create with network.allow\_out
>
> Host names in `allow_out` need public egress off: add `deny_out: ["0.0.0.0/0"]`. Destinations in private or metadata ranges, and names that resolve into them, are always refused. See [Networking](https://docs.anonalabs.com/compute/concepts/networking.md).

> [accordion] 503 with Retry-After on create
>
> A sandbox server is starting after an idle period. The SDK retries; if you call the API yourself, wait `Retry-After` seconds and retry.

> [accordion] 409 when opening a sandbox URL
>
> The sandbox is paused, for example by its idle timer. Resume it with `Sandbox.connect(id)` or `anona-compute resume <id>`.

> [accordion] ssh: Permission denied (publickey)
>
> The certificate is older than 10 minutes, or was minted for another sandbox. Run `anona-compute ssh <id>` again, or refresh the block with `anona-compute ssh <id> --print-config`.

> [accordion] The live view says the token expired or closes at once
>
> Tokens last at most 10 minutes. Answer the embed's `token-request` message with a fresh token ([Live view](https://docs.anonalabs.com/compute/guides/live-view.md#keep-a-long-session-alive)). After `revoke_all`, mint new tokens. The `dom` and `thumb` channels are not available yet.

> [accordion] A template build fails with EXPOSE 49983 or an unpinned FROM
>
> Port 49983 belongs to the Anona runtime (`envd`), so a template cannot expose it. Every `FROM` is pinned by digest at build time; a tag that cannot be resolved fails the build. See [Templates](https://docs.anonalabs.com/compute/concepts/templates.md#build-your-own).

> [accordion] anona-compute logs / fork / keys say not available
>
> These commands exist in the CLI ahead of their server side. See the [CLI overview](https://docs.anonalabs.com/compute/cli/overview.md) for what is coming.

## Get more detail

* `anona-compute -v …` prints verbose detail on stderr.
* Every API error body has `code` and `message`, and often `error_code`.


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