#Silent agent — no replies (dashboard/Telegram) after clean Ubuntu reinstall

1 messages · Page 1 of 1 (latest)

rough escarp
#

Problem
Fresh Ubuntu install (Lenovo IdeaPad 3-15ADA05, kernel 6.17.0-20-generic, Node 22.22.2). OpenClaw 2026.4.15 installs & onboarding completes, but agent is completely silent. Messages accepted, yet no response appears in dashboard (127.0.0.1:18789) or Telegram (@Lutiekbot).
This exact issue repeats every time after clean reinstalls (npm uninstall -g openclaw + rm -rf ~/.openclaw + reboot + fresh install). Started right after today's Ubuntu reinstall.
Key status --deep summary

Gateway: running, reachable, RPC probe OK, systemd active
Telegram: ON + OK (token valid)
OpenRouter: auth OK, probe succeeds (~18s)
Session: openrouter/auto or /free
Memory: enabled (memory-core) but unavailable

Tried repeatedly

Skipped most onboarding options (skills, plugins, hooks)
openclaw gateway restart, systemctl restart, model pinning (/model openrouter/free etc.)
/new, /reset, new sessions, hard refresh
openclaw logs --follow (no clear errors)
openclaw doctor (archived orphan file)
Multiple full clean uninstall/reinstall cycles

Gateway, auth & channels look healthy — agent never replies.
Reproducibility
100% on this machine post-Ubuntu reinstall. Did not occur on previous setup.
Extra info available

Full logs after test message
openclaw config get
openclaw pairing list telegram
systemctl --user status openclaw-gateway.service

Looks like system-level issue on Ubuntu 6.17 (AppArmor? systemd user session? kernel/loopback? missing libs?) that survives clean reinstalls.
Happy to run any debug commands.

hasty nestBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> ✅ Mark Solution

tired mountainBOT
marsh trailBOT
#

Let me check the local docs layout so I can point you at the right checks instead of guessing.

#

I’ve got the docs path now. I’m searching the repo for known “message accepted but run never starts” signatures so I can narrow this down.

#

This probably is not Telegram-specific. If the dashboard “wake up” is also silent, the failure is earlier in the agent path.

Docs I’m basing this on: https://docs.openclaw.ai/help/faq and https://docs.openclaw.ai/gateway/troubleshooting

First, please paste the exact output of:

openclaw --version

Then run this minimal isolation set:

openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
openclaw agent --agent main --message "Reply with exactly: smoke-ok" --local --json
openclaw agent --agent main --message "Reply with exactly: smoke-ok" --json
#
openclaw gateway status --deep

What I’m looking for:

  • infer model run fails
    → provider/model path is broken, even if OpenRouter probe looks “ok”
  • infer works, but agent --local fails
    → agent/bootstrap/plugin/session problem
  • agent --local works, but gateway agent fails
    → very likely service config/state mismatch or duplicate/stale gateway
  • gateway status --deep shows different Config (cli) vs Config (service)
    → that’s a known culprit after reinstalls/profile/env changes

Also, memory-core unavailable is usually not enough by itself to make the whole agent silent, so I’d treat that as secondary for now.

#

If you want, paste those 4 outputs plus ~40 log lines from openclaw logs --follow right after one failed test message, and I’ll narrow it down fast.

rough escarp
#

How can I attach my report?

marsh trailBOT
#

Easiest: make a .txt file, then drag it into this Discord thread or use the + / upload button.

If you want, use this to bundle the key checks into one file:

{
  echo '$ openclaw --version'; openclaw --version
  echo; echo '$ openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json'; openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
  echo; echo '$ openclaw agent --agent main --message "Reply with exactly: smoke-ok" --local --json'; openclaw agent --agent main --message "Reply with exactly: smoke-ok" --local --json
  echo; echo '$ openclaw agent --agent main --message "Reply with exactly: smoke-ok" --json'; openclaw agent --agent main --message "Reply with exactly: smoke-ok" --json
  echo; echo '$ openclaw gateway status --deep'; openclaw gateway status --deep
  echo; echo '$ openclaw status --all'; openclaw status --all
} > openclaw-report.txt 2>&1

Then upload openclaw-report.txt.

#

Two notes:

  • openclaw status --all is usually safe to share, it redacts tokens.
  • If you also attach openclaw config get, please redact API keys / bot tokens first.

If the file is too big, gzip it first:

gzip -9 openclaw-report.txt

and upload openclaw-report.txt.gz.

rough escarp
#

sa-trust-2026@sa-trust-2026-IdeaPad-3-15ADA05:~$ openclaw --version
OpenClaw 2026.4.15 (041266a)
sa-trust-2026@sa-trust-2026-IdeaPad-3-15ADA05:~$ openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
22:19:32 [agent/embedded] incomplete turn detected: runId=55cdc73c-26b1-43c3-87c2-5535332790ce sessionId=55cdc73c-26b1-43c3-87c2-5535332790ce stopReason=stop payloads=0 — surfacing error to user
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openrouter",
"model": "openrouter/auto",
"attempts": [],
"outputs": [
{
"text": "⚠️ Agent couldn't generate a response. Please try again.",
"mediaUrl": null
}
]
}
sa-trust-2026@sa-trust-2026-IdeaPad-3-15ADA05:~$ openclaw agent --agent main --message "Reply with exactly: smoke-ok" --local --json
22:27:46 [agent/embedded] incomplete turn detected: runId=55cdc73c-26b1-43c3-87c2-5535332790ce sessionId=55cdc73c-26b1-43c3-87c2-5535332790ce stopReason=stop payloads=0 — surfacing error to user
{

#

"payloads": [
{
"text": "⚠️ Agent couldn't generate a response. Please try again.",
"mediaUrl": null
}
],
"meta": {
"durationMs": 4980,
"agentMeta": {
"sessionId": "55cdc73c-26b1-43c3-87c2-5535332790ce",
"provider": "openrouter",
"model": "openrouter/auto",
"lastCallUsage": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0,
"total": 0
}
},
"aborted": false,
"systemPromptReport": {
"source": "run",
"generatedAt": 1776630464014,
"sessionId": "55cdc73c-26b1-43c3-87c2-5535332790ce",
"sessionKey": "agent:main:main",
"provider": "openrouter",
"model": "openrouter/auto",
"workspaceDir": "/home/sa-trust-2026/.openclaw/workspace",
"bootstrapMaxChars": 12000,
"bootstrapTotalMaxChars": 60000,
"bootstrapTruncation": {
"warningMode": "once",
"warningShown": false,
"truncatedFiles": 0,
"nearLimitFiles": 0,
"totalNearLimit": false
},
"sandbox": {
"mode": "off",
"sandboxed": false
},
"systemPrompt": {
"chars": 27253,
"projectContextChars": 13419,
"nonProjectContextChars": 13834
},
"injectedWorkspaceFiles": [

#

{
"name": "AGENTS.md",
"path": "/home/sa-trust-2026/.openclaw/workspace/AGENTS.md",
"missing": false,
"rawChars": 7727,
"injectedChars": 7727,
"truncated": false
},
{
"name": "SOUL.md",
"path": "/home/sa-trust-2026/.openclaw/workspace/SOUL.md",
"missing": false,
"rawChars": 1738,
"injectedChars": 1738,
"truncated": false
},
{
"name": "TOOLS.md",
"path": "/home/sa-trust-2026/.openclaw/workspace/TOOLS.md",
"missing": false,
"rawChars": 850,
"injectedChars": 850,
"truncated": false
},
{
"name": "IDENTITY.md",
"path": "/home/sa-trust-2026/.openclaw/workspace/IDENTITY.md",
"missing": false,
"rawChars": 633,
"injectedChars": 633,
"truncated": false
},
{
"name": "USER.md",
"path": "/home/sa-trust-2026/.openclaw/workspace/USER.md",
"missing": false,
"rawChars": 474,
"injectedChars": 474,
"truncated": false
},
{
"name": "HEARTBEAT.md",
"path": "/home/sa-trust-2026/.openclaw/workspace/HEARTBEAT.md",
"missing": false,
"rawChars": 192,
"injectedChars": 192,
"truncated": false
},
{
"name": "BOOTSTRAP.md",
"path": "/home/sa-trust-2026/.openclaw/workspace/BOOTSTRAP.md",
"missing": false,
"rawChars": 1450,
"injectedChars": 1450,
"truncated": false
}
],
"skills": {
"promptChars": 3552,
"entries": [
{
"name": "healthcheck",
"blockChars": 491
},
{
"name": "node-connect",
"blockChars": 541
},
{
"name": "skill-creator",
"blockChars": 759
},
{
"name": "taskflow",
"blockChars": 543
},
{
"names": "taskflow-inbox-triage",
"blockChars": 418
},
{
"name": "weather",
"blockChars": 416
}
]
},
"tools": {
"listChars": 0,
"schemaChars": 14889,
"entries": [
{
"name": "read",
"summaryChars": 298,
"schemaChars": 304,
"propertiesCount": 3
},
{
"name": "edit",
"summaryChars": 326,
"sc

marsh trailBOT
#

That’s actually very helpful. It means this is not Telegram, not the dashboard, and not the systemd service. The failure is happening in the embedded agent/model turn itself. Let me check what that specific “incomplete turn detected … payloads=0” path maps to in the current code.

#

Nice, we narrowed it a lot.

This is not Telegram, dashboard, loopback, or systemd anymore.
Your local embedded model run is returning an empty completion:

  • stopReason=stop
  • payloads=0

So the next target is the provider/model path.

Please attach these next:

openclaw models status
OPENCLAW_LOG_LEVEL=debug openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json > infer-debug.txt 2>&1
#

If you know any concrete OpenRouter model ref, also test that, not openrouter/auto:

OPENCLAW_LOG_LEVEL=debug openclaw infer model run --model openrouter/<exact-model-ref> --prompt "Reply with exactly: smoke-ok" --json > infer-concrete-debug.txt 2>&1

Then upload:

  • infer-debug.txt
  • infer-concrete-debug.txt if you ran it
  • plain output of openclaw models status

My current guess is one of these:

  1. openrouter/auto is selecting a bad route/model and returning an empty response
  2. the OpenRouter request is succeeding but the returned content is empty/malformed
  3. less likely, a local response-parsing edge case on this exact setup
rough escarp
#

sa-trust-2026@sa-trust-2026-IdeaPad-3-15ADA05:~$ cd ~/Documents
zip "silent-agent-test1.zip" "Silent agent test1.txt"
adding: Silent agent test1.txt (deflated 86%)
sa-trust-2026@sa-trust-2026-IdeaPad-3-15ADA05:~/Documents$

marsh trailBOT
#

That lastCallUsage: 0/0/0/0 is a really useful clue. It suggests the model turn is failing before OpenClaw gets any usable completion back, not after a normal response. I’m checking the docs/code for the next best discriminator so we don’t keep poking blind.

#

Yep, this helps, but the paste cut off before the important bit.

The big clue is:

  • lastCallUsage.input/output/total = 0
  • ~5s runtime
  • empty completion fallback

So I want three exact artifacts next:

OPENCLAW_LOG_LEVEL=debug openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json > infer-debug.txt 2>&1
openclaw models status --probe --probe-provider openrouter --json > openrouter-probe.json
openclaw models auth order get --provider openrouter > openrouter-auth-order.txt

Then upload:

#
  • infer-debug.txt
  • openrouter-probe.json
  • openrouter-auth-order.txt

Why these:

  • infer-debug.txt should show whether the call died before/at prompt submission
  • openrouter-probe.json tells us if OpenClaw can actually probe OpenRouter cleanly
  • auth order get rules out a weird auth-profile exclusion case

At this point I’m not thinking AppArmor/kernel/Telegram anymore. This looks much more like:

  1. OpenRouter auth/profile resolution is off in the actual run path, or
  2. openrouter/auto is resolving to a bad route/model and returning nothing

If you attach those 3 files, we should be able to pin it down pretty quickly.

#

Wait, this paste shows something potentially important: your workspace is injecting a live BOOTSTRAP.md. I want to verify whether the current docs/code still match the known “stuck bootstrapping” failure mode before I tell you to touch it.

#

I think we may actually have the smoking gun.

Your paste shows BOOTSTRAP.md is still being injected from ~/.openclaw/workspace/BOOTSTRAP.md.

That file is supposed to be first-run only. Current docs say bootstrapping should remove BOOTSTRAP.md when finished so it only runs once: https://docs.openclaw.ai/start/bootstrapping

There’s a known failure mode where a leftover BOOTSTRAP.md keeps the agent stuck in bootstrap-pending mode.

Please try this exact test:

mv ~/.openclaw/workspace/BOOTSTRAP.md ~/.openclaw/workspace/BOOTSTRAP.md.bak
openclaw gateway restart
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json

If that works, then test the dashboard/Telegram again.

#

Why I’m leaning this way:

  • your run is local, so it’s not Telegram/systemd
  • your pasted systemPromptReport shows BOOTSTRAP.md is still live
  • BOOTSTRAP.md should not still be there after first-run completes

If you want, paste the result of those 3 commands next. I’m pretty optimistic about this one.

rough escarp
#

sa-trust-2026@sa-trust-2026-IdeaPad-3-15ADA05:~$ openclaw config set agents.defaults.model.primary "openrouter/anthropic/claude-3-haiku-20240307"
openclaw gateway restart

🦞 OpenClaw 2026.4.15 (041266a)
If something's on fire, I can't extinguish it—but I can write a beautiful postmortem.

Config overwrite: /home/sa-trust-2026/.openclaw/openclaw.json (sha256 e907d0582db32264773993231ec9f5f6236fd6f44cf13181086c9019374404c2 -> 96c506fde5fd2a67ae78b87e6534d13b85e004e5e2eeb4bf4730fad259696b8c, backup=/home/sa-trust-2026/.openclaw/openclaw.json.bak)
Updated agents.defaults.model.primary. Restart the gateway to apply.

🦞 OpenClaw 2026.4.15 (041266a) — Making 'I'll automate that later' happen now.

Restarted systemd service: openclaw-gateway.service
sa-trust-2026@sa-trust-2026-IdeaPad-3-15ADA05:~$

marsh trailBOT
#

Good test.

Now run the same smoke check again:

openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json

Then also try one real message in the dashboard/Telegram.

Interpretation:

  • If it works nowopenrouter/auto (or the prior routed model) was the problem.
  • If it still fails → I’d go right back to the BOOTSTRAP.md lead, because that file still being injected is very suspicious.

If it’s still failing, do this next:

#
mv ~/.openclaw/workspace/BOOTSTRAP.md ~/.openclaw/workspace/BOOTSTRAP.md.bak
openclaw gateway restart
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json

Paste whichever result you get.

rough escarp
#

sa-trust-2026@sa-trust-2026-IdeaPad-3-15ADA05:~$ openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
23:23:15 [agent/embedded] incomplete turn detected: runId=55cdc73c-26b1-43c3-87c2-5535332790ce sessionId=55cdc73c-26b1-43c3-87c2-5535332790ce stopReason=stop payloads=0 — surfacing error to user
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openrouter",
"model": "openrouter/auto",
"attempts": [],
"outputs": [
{
"text": "⚠️ Agent couldn't generate a response. Please try again.",
"mediaUrl": null
}
]
}
sa-trust-2026@sa-trust-2026-IdeaPad-3-15ADA05:~$

marsh trailBOT
#

Ah, that’s the key detail:

Your test is still running model: "openrouter/auto", so the config pin did not actually affect the codepath you’re testing.

So I would stop chasing the model change for a second and do the cleaner test now:

mv ~/.openclaw/workspace/BOOTSTRAP.md ~/.openclaw/workspace/BOOTSTRAP.md.bak
openclaw gateway restart
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json

That’s the best next discriminator, because BOOTSTRAP.md is still not supposed to be there after first run: https://docs.openclaw.ai/start/bootstrapping

If you want to force a concrete model later, use it directly on the command so there’s no config ambiguity:

#
openclaw infer model run --model openrouter/anthropic/claude-3-haiku-20240307 --prompt "Reply with exactly: smoke-ok" --json

But first I’d really do the BOOTSTRAP.md move-aside test. Paste that result next.

rough escarp
#

Krill, talk again tomorrow, too tired now, go to sleep now. Nite!