Skip to content

Troubleshooting

Symptoms, their likely cause, and the fix. Most problems show up in the vessel's or a sandbox's log:

docker compose -f compose.generated.yml --env-file .env logs vessel
docker compose -f compose.generated.yml --env-file .env logs sandbox-<agent>

Deploying

Symptom Cause and fix
set VESSEL_SANDBOX_TOKEN (16+ characters) in the environment or the env file Add a master secret of 16 or more characters to .env beside the deployment, or pass --env-file.
agent <id> needs mounts the deployment does not grant / is granted mounts it does not declare The targets in [agents.sandbox] mounts must match the agent's [sandbox] mounts exactly.
writable mounts (...) are not supported yet Set read_only = true (the default) on both sides; write to the turn's workspace instead.
services must match its tools; missing ..., unused ... Grant exactly the services the agent's service tools name under [agents.services.<name>].
declared tool names collide Rename a declared tool that repeats another one or a built-in tool.
unknown builtin tools Use only read, grep, glob, list, bash, webfetch, websearch.
Extra inputs are not permitted A misspelled or unsupported key; check Configuration tables.
issuer <id>: jwks_file ... is not a file The issuer's key file is missing; the path is relative to the deployment file.
Field required for egress.upstream_url Set [egress] upstream_url to your model endpoint; there is no default.
... belongs to project '...'; give each deployment its own folder, or --out Two deployments share a folder. See Several deployments on one host.
docker compose says set NAME in the environment or .env An env:NAME value has no value; add it to .env.

Starting

Symptom Cause and fix
A sandbox exits with this kernel lacks Landlock ABI 6 The host kernel is too old or has Landlock disabled. See Platform support.
The vessel exits with key_sha256 must be a sha256 hex digest key_sha256 (or its env: value) must be 64 hex characters, the SHA-256 of the key, not the key.
The vessel logs agent <id> sandbox is NOT ready, and calls get 503 The sandbox is down, unconfined, or running an old profile. Run astralvessel deploy, then docker compose ... up -d, and check the sandbox's log.
bash failed: No such file or directory on every call The agent's workdir does not exist in the sandbox. Set it to a mount target.
Every confined call says the sandbox could not confine this call Landlock or seccomp could not be applied, for example on an unsupported architecture.

Calling

Symptom Cause and fix
401 authentication required Wrong key, a key whose SHA-256 is not in the deployment, a missing or invalid X-Vessel-User, or a token that failed verification.
403 this app may not call this agent Add the agent to the app's or issuer's agents.
503 this agent's sandbox is not ready See "NOT ready" above.
413 request too large The body is over 16,000,000 bytes; send less history or smaller images.
Turn rejected with invalid request: ... The history or an image failed a check; the message names it. See Transcript format.
Turn rejected with this agent does not accept images Set [model] images = true if the model accepts images, or drop them.
No transcript in the response Add application/vnd.astralvessel.transcript+json to acceptedOutputModes.
No files in the response List their media types in acceptedOutputModes (or list none), and the type in the agent's [output] files.
Cannot reach the vessel from the host It publishes no ports. Call it from a container on the <project>_front network.

During a turn

Symptom Cause and fix
turn.finished with model_error and model endpoint returned HTTP 4xx The endpoint refused the request: check the model name, upstream_url and key. The egress and vessel logs have the response detail.
the egress token is missing or wrong in logs Run astralvessel deploy again so the vessel and egress get matching tokens, then up -d.
deadline status The turn ran past deadline_seconds; raise it or lower max_steps.
step_limit status The model used all its steps; raise max_steps or improve the briefing.
A tool result [timed out after N s] Raise tool_timeout_seconds or the tool's timeout_seconds.
webfetch returns blocked or unreachable The proxy refused a non-public address or a port other than 80 or 443, or the site is down.
Searches fail with engine errors Engines are rate limiting or blocking; SearXNG suspends a CAPTCHA engine for 10 minutes. With duckduckgo, switch to searxng.
[stopped: the files went over ... disk limit ...] The turn or user went over turn_disk or user_disk. Raise them, or have the agent delete files it no longer needs.