- Logs — open the Logs tab, uncheck everything except WARN and ERROR, and scroll up to the most recent red line. That’s usually the answer.
- Danger tab — the Danger tab is the inventory page. Check status, last sync, the lifecycle-script state, and whether your secrets show as
Synced. - Console — the Console is a shell.
tail /tmp/user-build.log,env,ps auxanswer about 80% of “why doesn’t my service work” questions. - Files — if something used to work and broke after a recent change, restore an earlier snapshot from the Files tab.
- Validate config —
POST /v0/templates/validatechecksmanifest.json;POST /v0/agents/{agentId}/config/validatechecks the engine runtime config shown on the Danger tab. These are different files, see Concepts for the difference.
Agent won’t start / stays in starting
Symptom: status badge stuck on starting, no logs appearing, chat won’t connect.
Check:
| Cause | Fix |
|---|---|
build script failed | Fix the script, then Retry Scripts on the Danger tab (or POST /v0/agents/{agentId}/scripts/retry) |
| Missing required secret | The Danger page flags missing secrets. Attach in the Secrets Vault, then restart the gateway |
| Container OOM | A heavy npm install or model load can hit the memory ceiling. Slim dependencies or break up the script |
| Engine version pinned to a broken release | Danger → Change to update to latest, when the engine exposes version changes |
Gateway won’t connect / chat is offline
Symptom: chat shows “disconnected” or fails to reconnect. Check: the agent isrunning on the Danger tab, then look at Logs filtered to gateway/ws.
Common causes:
| Cause | Fix |
|---|---|
| Gateway crashed | Danger → Restart Gateway |
| Gateway token rotated and your client cached the old one | Copy the latest token from Danger, update your client |
| Network/route returning 502 | Hard-refresh the page; if it persists, restart the gateway |
Browser blocked third-party cookies for agents.pinata.cloud | Pass the token via header or query string instead of relying on the cookie |
Build script failed
Symptom: Danger → Lifecycle Scripts showsbuild failed; start never ran.
Read the log:
- Wrong working directory -
buildruns from/home/node/clawd, not the workspace - Missing tooling (
pnpm,yarn) - install in the build script first, or use a tool that ships with the image (npm) package.jsonnot found -cdinto the right project subfolder- 5-minute timeout - split the work or pre-install in a snapshot
POST /v0/agents/{agentId}/scripts/retry (or click Retry Scripts).
Start script crashes immediately
Symptom:start finishes seconds after launching - service is unreachable.
| Cause | Fix | |
|---|---|---|
Bound to 127.0.0.1 / localhost | Bind to 0.0.0.0 so the gateway can reach it | |
Port mismatch with routes entry | Make sure manifest.json routes[i].port matches what the server actually listens on | |
| Missing env var | start runs after build with the agent’s full env - confirm with `env | grep MY_VAR` |
| Process exits because it expected an interactive TTY | Add --no-color/--no-progress flags, or daemonize properly |
Routes not working / 404 / 502
Symptom: the URL for your path route or custom domain doesn’t load. Walk through:| Cause | Fix |
|---|---|
Service bound to localhost | Bind to 0.0.0.0 |
| Wrong port | Match the listener’s port in the route definition |
| Path prefix mismatch | The prefix is stripped before reaching your service - /app/foo becomes /foo. Set your framework base accordingly (e.g. Vite base: "/app") |
| Allowed-hosts not configured | Vite/Next dev servers reject unknown hosts - add __AGENT_HOST__ to the allow-list |
Custom domain stuck pending_ownership | TXT record not visible yet. Wait for DNS propagation or dig TXT _pinata-verify.<your-domain> |
Custom domain stuck pending | Cloudflare is still provisioning - usually clears in a few minutes |
Secret update didn’t apply
Symptom: you updated a secret in the Vault but the agent still uses the old value. Check: Danger → Secrets → the per-secret Synced indicator. Out of sync means the running gateway hasn’t been restarted since the update. Fix: Danger → Restart Gateway, orPOST /v0/agents/{agentId}/restart.
Secrets are injected at process start - they are not hot-reloaded.
Skill missing / not loading
Symptom: agent doesn’t seem to know about a skill you attached. Check:| Cause | Fix |
|---|---|
| Skill attached but agent not restarted | Restart the gateway |
Required env var declared in .env.example is missing | The Skills tab flags missing vars when you open the skill. Add the value to the Secrets Vault and attach it |
| Skill version is out of date | Skills tab → click the skill → Update |
| Skill installed from CID, not slug, and a newer version exists | Switch to the slug to track latest, or pin to a newer CID |
Custom domain stuck pending
See Routes → Custom domains - statuses arepending_ownership (TXT record), pending (Cloudflare provisioning), then active.
Device pairing rejects / stuck pending
Symptom: a paired client (CLI, mobile) can’t connect, or stays pending forever.- The device never sent an approval request - re-pair from the client
- You’re on a different workspace than the one you approved from - check Account → Workspaces
- The agent is
not_running- pairing requires the gateway to be up
POST /v0/agents/{agentId}/devices/approve-all.
Git push rejected
Symptom:git push to your agent’s workspace fails.
Common causes:
| Cause | Fix |
|---|---|
| Authentication failed | Copy a fresh URL with Copy with Token from the Files tab |
| Local branch diverged | git pull --rebase first - the server commits the agent’s pending changes before applying your push |
| Pre-receive validation failed | Look at the rejected output - often a manifest validation error. Validate locally before pushing |
Tasks aren’t firing
Symptom: a scheduled task isn’t running. Check:- Is the task enabled?
GET /v0/agents/{agentId}/taskswithincludeDisabled=true - Is the agent running? Tasks fire only while the gateway is up; missed runs during downtime are skipped
- Check
cron/runnerlines in Logs around the expected time - Trigger manually:
POST /v0/agents/{agentId}/tasks/{jobId}/run- if that works, the schedule is wrong
Costs / model usage looks off
Switch the agent’s model dropdown in chat to see what model is actually being used, or run/status. Tasks can specify their own model - re-check payload.model if a scheduled run looks unexpected.
Still stuck?
Open a ticket from Support → Chat with us in the sidebar, or email[email protected]. Useful info to include:
- Agent ID (Danger → Agent → Agent ID)
- Engine and version, if shown on the Danger tab
- A recent
EXPORT VISIBLEfrom the Logs tab (filter toERRORfirst) - The relevant section of
manifest.jsonif config-related - What you expected vs. what happened