Skip to content

Troubleshooting

SSH agent issues

Symptom Fix
ssh-add -l says "Could not open connection to agent" Check SSH_AUTH_SOCK is set in devcontainer.json remoteEnv. If SSH_AUTH_SOCK is unset, entrypoint.sh logs ERROR: SSH_AUTH_SOCK is not set at startup (non-fatal — the container still runs)
ssh-add -l says "Error connecting to agent" Run colima ssh -- ls -la /run/host-services/ssh-auth.sock to check the VM socket
Socket missing in VM Restart Colima: colima stop && colima start --ssh-agent
Socket exists in VM but "Permission denied" Fix socket perms: colima ssh -- chmod 777 /run/host-services/ssh-auth.sock
ssh-add -l says "The agent has no identities" Ensure the host SSH_AUTH_SOCK points to the 1Password socket (see Getting Started step 3), verify 1Password → Settings → Developer → "Use the SSH agent" is enabled, then restart Colima with --ssh-agent
Works in VM but not in container Verify the bind mount in devcontainer.json matches the VM socket path

Firewall issues

Symptom Fix
curl: (7) Failed to connect to an allowed host Re-run sudo /usr/local/bin/firewall.sh apply (DNS may have rotated the resolved IPs out of the snapshot)
Startup fails: firewall.sh exits 1 with EGRESS_ALLOWLIST is set but file not found EGRESS_ALLOWLIST (set in devcontainer.json remoteEnv) points at a missing file. Create .devcontainer/egress-allowlist.txt with your project's required hostnames (copy examples/egress-allowlist.txt)
All outbound blocked, no firewall rules applied iptables is unavailable, so entrypoint.sh logs WARN: NET_ADMIN capability not available. Skipping egress firewall. Ensure the container runs with the privileges iptables needs (runArgs: ["--privileged"] in devcontainer.json)
WARN: EGRESS_ALLOWLIST not set at startup EGRESS_ALLOWLIST is unset, so only loopback and DNS are allowed. Set it in devcontainer.json remoteEnv to your project's allowlist file

See Manage Egress for the canonical two-layer procedure to add a new HTTPS host.

Observability issues

Symptom Fix
UNABLE_TO_VERIFY_LEAF_SIGNATURE mitmproxy CA cert not yet in the system bundle. Run sudo /usr/local/bin/install-mitm-ca.sh ~/.mitmproxy/mitmproxy-ca-cert.pem, then source /etc/profile.d/mitm-certs.sh (or open a new terminal) and restart Claude Code
ERR_BAD_RESPONSE for a domain The domain is blocked. Allow it at both layers, iptables first: (1) add it to .devcontainer/egress-allowlist.txt, then sudo /usr/local/bin/firewall.sh apply; (2) add the same domain to .devcontainer/proxy.yaml, then PROXY_YAML=.devcontainer/proxy.yaml generate-proxy-filter. Adding it to proxy.yaml alone leaves traffic REJECTed at the iptables layer. See Manage Egress
HTTP_PROXY empty in terminal devcontainer.json remoteEnv is the source — rebuild the container to pick up changes, or source /etc/profile.d/mitm-certs.sh manually
Monitor dashboard not reachable The dashboard is published on a host port chosen by env.sh (scanned from 9090–9190) and mapped to the container's fixed 9090. Make sure you ran source .devcontainer/env.sh before opening VS Code so MY_PROJECT_MONITOR_PORT is set — if it is empty the appPort mapping is invalid. The actual host URL is shown in the VS Code Ports panel. Inside the container the dashboard is always at http://localhost:9090
Proxy feed shows nothing Run pgrep privoxy to confirm it's running; check /tmp/privoxy.log for startup errors
Privoxy not running start_proxy skips privoxy and logs WARN: No proxy.yaml found when .devcontainer/proxy.yaml is missing. Copy examples/proxy.yaml to .devcontainer/proxy.yaml and restart
mitmdump not running Check /tmp/mitm.log. On first run, mitmproxy generates its CA key during postCreateCommand (may take 60–120 s in low-entropy environments such as a fresh Colima VM)

Container runtime issues

Symptom Fix
WARN: Podman initialization failed at startup Rootless Podman could not initialize its mount namespace. This requires runArgs: ["--privileged"] in devcontainer.json; confirm it is present and rebuild the container
WARN: mise install failed / tunnel error: Connection refused during setup Expected when a project .mise.toml pins a runtime version the image never baked: the egress policy blocks runtime downloads and the proxy is not up during setup. Runtime version overrides are unsupported — change the version in the image's .mise.toml and rebuild. The warning is non-fatal; setup still completes
python/ruby/go/ansible/chef-cli "command not found" after first open The baked runtimes at ~/.local/share/mise are being shadowed. Almost always a stale project still mounting a ${project}-mise-data volume over that path — remove that mount from devcontainer.json (the current templates don't mount it; see ADR 0014) and rebuild

Build issues

Symptom Fix
op --version fails during build gcompat may not work for this op version; see ADR 0001
Python/Ruby compilation fails Check build-base and dev packages are installed; see Dockerfile Layer A
mise install hangs during make build Network access is needed at build time to compile/download runtimes; check Docker network settings. (At container runtime the baked runtimes are used directly from the image — no build-time network is involved there.)
mise "config not trusted" errors Should not happen — MISE_TRUSTED_CONFIG_PATHS is set in the image. If using a custom path, add it to the env var or run mise trust <path>
Python/Ruby not on PATH in /workspaces MISE_GLOBAL_CONFIG_FILE must point to the home .mise.toml; this is set in the Dockerfile