Container Troubleshooting Guide¶
This guide covers common issues with container execution and multi-channel messaging in Backend.AI GO.
Container Runtime Issues¶
Runtime Not Detected¶
Symptom: Container Runtime in Settings > Squad shows Not Available.
Diagnosis:
Solutions:
-
Verify Apple Container is installed:
-
Start the container system service:
-
If the command is not found, reinstall from the Apple Container GitHub releases.
-
Verify Docker is running:
-
If Docker is not running, start Docker Desktop (macOS/Windows) or the Docker daemon (Linux):
-
Verify your user is in the
dockergroup (Linux):
Docker Does Not Answer¶
Symptom: The runtime status reads Docker CLI found but the daemon did not answer within 10s.
The Docker CLI is installed, but its daemon accepted the connection and never replied. This happens when Docker Desktop stops partway through starting, or when DOCKER_HOST points at a socket that nothing serves. Each runtime check waits 10 seconds and then reports containers as unavailable, so the app and aigo-server still start.
Solutions:
- Quit Docker Desktop and open it again, or restart the daemon on Linux (
sudo systemctl restart docker). Then check thatdocker versionreturns. - Unset
DOCKER_HOST, or point it at a running daemon. - Restart Backend.AI GO or
aigo-serverbefore you use Hermes. Hermes picks its runtime once, when the app starts, so it does not use a daemon that recovers later.
Runtime Detected but Commands Fail¶
Symptom: Runtime shows as available but container operations fail.
Solutions:
- Restart the container daemon: Docker Desktop → Quit and reopen;
container system stop && container system startfor Apple Container - Check available disk space (containers need disk to run)
- Review the Backend.AI GO application logs for detailed error messages
Image Build Issues¶
Build Fails Immediately¶
Symptom: Image build starts but fails right away.
Diagnosis:
Solutions:
- Ensure the container runtime is running before attempting a build
- Check available disk space (the agent runner image is approximately 1-2 GB)
- Look at the
outputfield in the build status response for the error
Build Hangs Indefinitely¶
Symptom: The build button keeps showing Building... for a long time with no result.
Solutions:
- Network issues can cause base image downloads to hang; check your internet connection
- If using a proxy, ensure Docker/Apple Container is configured to use it
- The app has no control to cancel a running build. After verifying network connectivity, build again once the current build ends
Image Becomes Outdated¶
Symptom: Container agents fail with missing tools or incompatible dependencies.
Solution: Rebuild the image after a Backend.AI GO update:
- Settings > Squad > Agent Runner Image → Click Rebuild Image
Squad Task Fails With an Agent Runner Protocol Error¶
Symptom: Every squad task assigned to a container-mode agent fails, and the task error or the container status shows one of:
Container agent error: ... (the image predates agent runner protocol 2; rebuild aigo-agent-runner:latest or update the custom image)Container agent speaks protocol version <v>; this app speaks 2 (rebuild aigo-agent-runner:latest or update the custom image)
Cause: The agent runner image and the app speak different versions of the agent runner protocol. The first message comes from an image built before the protocol existed, which cannot read the task the app sends. The second comes from an image built for a different protocol version, such as a version 1 image built by an earlier app, which would otherwise ignore the agent's model and call its own default.
Solutions:
- Rebuild the image so it matches this app: Settings > Squad > Agent Runner Image → Click Rebuild Image, or run
./container/build.shfrom a source checkout - If the agent uses a custom image, update it to read the version 2 input, call the
modelit is given, and write one output block, then rebuild it - After the rebuild, run the squad request again: the image is read when each task starts, so tasks that already failed stay failed
Mount Security Issues¶
Mount Rejected: "Path contains blocked pattern"¶
Symptom: Mount validation fails with a blocked pattern error.
Cause: The host path contains a blocked pattern (e.g., .ssh, .env, .aws).
Solution: Use a different path that does not contain sensitive directory names, or copy only the necessary files to an approved location.
Mount Rejected: "Path not under any allowed root"¶
Symptom: Mount validation fails even though the path does not contain blocked patterns.
Cause: The path is not under any configured allowed root.
Solution:
-
Open the Cowork Settings drawer (in a Cowork conversation, click Cowork settings in the workspace rail's Context section) and select the Mount Security tab. See Adding Allowed Roots.
-
Add the parent directory of the path you want to use as an allowed root.
-
Be specific — avoid adding broad roots like your home directory.
Symlink Traversal Blocked¶
Symptom: A path is rejected even though the literal path looks safe.
Cause: The path resolves via symlinks to a blocked location.
Solution: Use the canonical (real) path, not a symlink. The mount validator canonicalizes all paths before checking.
Credential Proxy Issues¶
A squad container reaches its model through the credential proxy's router route, which the app starts on its own when a container task needs it. Squad tasks need no credential mapping: a mapping is only for a custom image that calls an external API itself. See Model Route.
Container Task Cannot Reach Its Model¶
Symptom: A container-mode task fails before or during its model call.
Diagnosis Steps:
-
While a container task runs, verify the proxy is running:
-
Check the running task container's environment (
docker inspect <container>):ANTHROPIC_BASE_URLshould behttp://host.docker.internal:<proxy port>/router/anthropicon Docker, andhttp://localhost/router/anthropicwithAIGO_INFERENCE_SOCKET=/tmp/aigo-inference.sockon Apple ContainerANTHROPIC_API_KEYshould be acpt_token. It is valid only while that task runs.
-
Match the task error:
Error Cause Solution Container mode under Apple Container needs the credential proxy's Unix socket, which this process could not createThe proxy runs, but on TCP only: it could not create its Unix socket, which is the only route an Apple Container guest has to the host. The sockets directory is usually the cause, for example one owned by another user or open to group or other access. Look for the credential proxy socket warning in the app log and fix what it names, then stop and start the proxy ( POST /api/v1/container/credential-proxy/stop, thenstart) or restart the app.Container agents need the credential proxy, which this runtime did not provideThis runtime was started without a credential proxy. Run the agent in-process, or use the desktop app or a headless server that provides the proxy. Container inference route unavailable: <error>The proxy could not start. The port ( 3001by default) is taken, or on Linux there is nodocker0bridge address to listen on (rootless Docker, Docker Desktop for Linux).Free the port or set another one with PUT /api/v1/container/credential-proxy/port, or use Docker with its default bridge.Router unreachable: <error>insideContainer agent error: ...The proxy reached no router: it stopped or restarted while the task ran. Check that inference is running, then retry the task. Request must carry a valid router access tokenThe request came with no token, or with one whose task already ended. Tokens do not outlive their task. Retry the task rather than reusing a token. HTTP 401from the router insideContainer agent error: ...The router requires a key (external access is on) and the app has none available for it. Restart the app so it can read its router key, or turn external access off.
Proxy Starts But Requests Fail¶
Symptom: Proxy status shows running, but model calls from containers still fail with a connection error.
Solutions:
- Verify how the container reaches the host:
- Docker on Linux: the container gets
--add-host=host.docker.internal:<docker0 address>, and the proxy listens on that same address. Compareip -4 addr show docker0with the proxy statusbindAddress. - Docker Desktop (macOS, Windows):
host.docker.internalis built in, and the proxy listens on127.0.0.1. - Apple Container: the proxy's Unix socket is relayed into the container at
/tmp/aigo-inference.sock. The proxy status does not report the socket; check thatcredential-proxy-<instance>.sockexists in the app sockets directory while the proxy runs.
- Docker on Linux: the container gets
- Check firewall rules are not blocking the proxy port (
3001by default)
IPC Communication Issues¶
Container Does Not Respond to Follow-Up Messages¶
Symptom: A steering message sent during a squad run does not reach an agent that runs in a container.
Cause: This is expected. One container runs one task: the host sends no follow-up messages, and the bundled aigo-agent-runner image exits as soon as it writes its result. See Agent Runner Protocol.
What to do:
- Put the change in a new task or a new request to the squad.
- Run the agent in-process when it needs steering during a task.
Container Sends Messages But They Are Not Delivered¶
Symptom: Containers write to ipc/messages/ but messages do not appear in the channel.
Solutions:
- Verify the channel is connected: its card under Channels in Settings > Squad shows Connected
- Check the message router status in the application logs
- Verify the chat JID in the message matches a connected channel's JID format
Channel Connection Issues¶
Telegram Bot Does Not Respond¶
Solutions:
-
Check that the Telegram Bot card under Channels in Settings > Squad shows Connected. The form checks only the token's format, so if you are not sure the token is current, get it again from @BotFather and reconnect.
-
Check the connection status:
-
In group chats, ensure the bot is a member of the group and has message reading permissions.
-
Test with a direct message to the bot first.
Slack Bot Not Receiving Messages¶
Solutions:
-
Verify both tokens are valid (bot token
xoxb-...and app tokenxapp-...) -
Verify Socket Mode is enabled in the Slack app configuration
-
Check that the required bot scopes are granted:
app_mentions:read,channels:history,chat:write,groups:history,im:history,im:read,im:write
-
Ensure the bot is installed to your workspace and added to the channels you want it to monitor
Discord Bot Not Responding in Channels¶
Solutions:
-
Verify the Message Content Intent is enabled in the Discord Developer Portal
-
Ensure the bot is invited to the server with the correct permissions
-
In text channels, the bot only responds to @mentions — verify you are mentioning the bot
-
Check the gateway connection status:
WhatsApp Webhook Verification Fails¶
Solutions:
-
Verify the webhook URL is publicly accessible (HTTPS required):
-
Ensure the verify token in Backend.AI GO matches the one you entered in Meta's developer portal
-
Check that your HTTPS certificate is valid (self-signed certificates are not accepted by WhatsApp)
Task Scheduling Issues¶
Scheduled Tasks Do Not Run¶
Diagnosis:
curl http://localhost:8001/api/v1/container/schedules
# Check "enabled": true and "nextRun" timestamp
Solutions:
- Verify
enabledistrueon the container task - Check that the container runtime is available
-
Review the container task's run logs for errors:
Cron Tasks Fire at Wrong Times¶
Solutions:
- Verify your system timezone is configured correctly
- Use a cron expression validator (e.g., crontab.guru) to check your expression
- Remember that cron uses local system time, not UTC
Interval Tasks Drift Over Time¶
Solutions:
- The scheduler uses drift-prevention:
next_runis computed from the scheduled time, not execution time - Verify system clock is accurate (sync with NTP)
- Check for excessively long task execution times that might delay the scheduler
Security Event Issues¶
Unexpected "violation" Events in Audit Log¶
Symptom: The audit log shows permission violations for container operations you expect to be allowed.
Diagnosis:
Solutions:
- Check if the container is in a non-main group and is trying to send messages to a different group's chat JID (this is expected behavior and the block is correct)
- If the violation is unexpected, review the group namespace configuration
Security Audit Marks Containers as Non-Compliant¶
Symptom: Periodic security audits report containers as non-compliant.
Solutions:
- Verify you have not modified the container environment variables (especially
ANTHROPIC_API_KEY) - Check that mounts have not changed since the container started
- Review the audit log details for the specific check that failed
Getting Help¶
If you cannot resolve an issue using this guide:
-
Set Logging level to Debug in Settings > Advanced
-
Collect the application logs:
-
Export the container audit log:
-
Report the issue with the collected logs at the Backend.AI GO GitHub repository.