Arnie - Day 7 - Signal CLI
Arnie - Day 7 - Signal CLI
[1] DANIEL:
We're trying to get the Signal CLI to respond with assigned numbers. The other thread got too long and we were in a corner. So I am starting over.
Here's what i see working:
"channels": { "signal": { "enabled": true, "account": "+12109336780", "cliPath": "signal-cli", "dmPolicy": "allowlist", "allowFrom": [ "+12105574779", "+12105574780" ], "groupPolicy": "allowlist" } }, "gateway": { "port": 18789, "mode": "local", "bind": "loopback", "auth": { "mode": "token", "token": "cec3044e80de1e85afa2f5374cc972169a246e8a537b0472" }, "tailscale": { "mode": "off", "resetOnExit": false }, "nodes": { "denyCommands": [ "camera.snap", "camera.clip", "screen.record", "calendar.add", "contacts.add", "reminders.add" ] } }, "plugins": { "entries": { "signal": { "enabled": true } } } }
But I do not get a text response any longer from 2105574779 into 12109336780 since we switched from OPEN ["*"] to the "allowlist"
[2] GROK:
Your Signal config looks correct per the latest docs at https://docs.openclaw.ai/channels/signal (2026.2.15 era).
``json "dmPolicy": "allowlist", "allowFrom": ["+12105574779", "+12105574780"], "groupPolicy": "allowlist" ``
This should allow only those exact E.164 numbers (or their UUID equivalents) to trigger DM replies on your bot account +12109336780. The switch from open + [""] is valid, but allowlist is stricter and can drop messages silently if the internal sender ID doesn't match exactly*.
Why replies stopped
allowlistdrops non-matching DMs before they reach the agent (no "text response").- Signal-CLI sometimes identifies senders by
uuid:<id>(not just phone) depending on registration/contact status. - Config changes require a clean gateway restart to reload.
- The paired allow-store (
signal-allowFrom.json) can also gate things (docs note "or the paired allow store").
Quick diagnostic & fix (run these in order)
- Restart cleanly (forces full reload):
``` openclaw gateway stop npx openclaw gateway
or however you start it
```
- Verify loaded config:
`` openclaw config get channels.signal ` Confirm dmPolicy, allowFrom, and account` match exactly.
- Check channel health:
`` openclaw channels status --probe openclaw doctor ``
- Tail logs while testing:
`` openclaw logs --follow | grep -i "signal\|dm\|allowlist\|drop\|block\|uuid" ` - Send a fresh DM from +12105574779 to your bot +12109336780. - Look for lines like drop dm (not in allowlist) or the exact sender ID it saw (phone or uuid:…`).
- If logs show a mismatch (common):
- Temporarily switch to the recommended pairing policy (docs default & most reliable): ``json "dmPolicy": "pairing", // keep your allowFrom if you want ` Restart gateway. - Sender texts the bot → you get a short code. - Approve it: ` openclaw pairing list signal openclaw pairing approve signal <CODE> `` - This adds the exact ID (phone or UUID) to the allow-store. Replies should flow immediately.
- Switch back to allowlist (optional):
- Once approved, you can stay on pairing (easiest) or return to allowlist—the approved sender will now pass via the store.
Extra tips from docs
- Use a dedicated bot number (
+12109336780) to avoid loop-protection on your personal Signal. - Phone numbers must be exact E.164 with
+(no spaces, no extra chars). - If you ever see UUIDs in logs, add them to
allowFromlike"uuid:123e4567-e89b-12d3-a456-426614174000". - Keep
sendReadReceipts: trueif you want receipts on allowed DMs.
Test one DM after each step and paste the relevant log lines if it's still silent — that'll pinpoint the exact sender string OpenClaw is seeing.
This should get your allowlisted numbers responding again. Let me know the output from steps 2-4 and we'll nail it! 🚀 (Full Signal reference: https://docs.openclaw.ai/channels/signal)
[3] DANIEL:
I must be doing something wrong - sarting it the wrong order or not enough wsl.exe terminals, or I'm... IDN? It just stalls out
[4] GROK:
You're not doing anything wrong — this is exactly the expected behavior per the latest docs (https://docs.openclaw.ai/).
Your logs are actually perfect:
- Config valid
- Gateway listening on ws://127.0.0.1:18789
- Signal daemon auto-started in single-account mode for +12109336780
- HTTP JSON-RPC server up on 127.0.0.1:8080
The “stalls out” feeling (and $ prompt returning) happens because npx openclaw gateway runs the server in foreground mode — it’s supposed to stay alive forever with live logs. The quick disconnect (code 1001) is just the Control-UI websocket reconnecting after the restart. It’s not a crash.
Correct way to run on WSL (two terminals
— this is the docs-recommended dev flow)
Terminal 1 — Gateway (keep this open forever) ``bash openclaw gateway stop pkill -f "openclaw|signal-cli" 2>/dev/null || true sleep 3 npx openclaw gateway ``
Terminal 2 — Logs & commands (this one you can type in) ``bash openclaw logs --follow | grep -E 'signal|dm|allowlist|error|warn' ``
Now:
- Refresh http://127.0.0.1:18789 in your browser → you should see the Chat UI again.
- Send a test text from +12105574779 to your bot +12109336780.
Watch Terminal 2 for real-time logs.
While we’re here — why the allowlist still
isn’t replying
The docs (https://docs.openclaw.ai/channels/signal) strongly recommend starting with dmPolicy: "pairing" for exactly this reason — allowlist can silently drop if the internal sender ID (phone vs UUID) doesn’t match 100 %.
Quick switch (do this now):
- Edit
~/.openclaw/openclaw.jsonand change the signal block to:
``json "dmPolicy": "pairing", "allowFrom": ["+12105574779", "+12105574780"], // keep this if you want "groupPolicy": "allowlist" ``
- Save, then Ctrl+C in Terminal 1 and restart with the commands above.
- Send a message from your test phone → you’ll get a short code back in the chat.
- In Terminal 2 approve it:
``bash openclaw pairing approve signal <THE-CODE-YOU-GOT> ``
After that you can switch back to allowlist if you prefer — the approved sender will now be in the allow-store permanently.
Run the two-terminal setup above, send one test message, and paste whatever shows up in Terminal 2 (especially any “dm” or “drop” lines). We’ll have it replying in under 2 minutes. 🚀
(Full reference: https://docs.openclaw.ai/channels/signal and https://docs.openclaw.ai/gateway)
[5] DANIEL:
I get this and then it hangs not returning to dna@arniegarwis:~$
dna@arniegarwis:~$ openclaw logs --follow | grep -E 'signal|dm|allowlist|error|warn' 2026-02-26T06:49:06.910Z info gateway {"subsystem":"gateway"} signal SIGTERM received 2026-02-26T06:49:16.414Z info gateway/channels/signal {"subsystem":"gateway/channels/signal"} [default] starting provider (http://127.0.0.1:8080) 2026-02-26T06:49:25.891Z info gateway/channels/signal {"subsystem":"gateway/channels/signal"} signal-cli: INFO DaemonCommand - Starting daemon in single-account mode for +12109336780 2026-02-26T06:49:26.001Z info gateway/channels/signal {"subsystem":"gateway/channels/signal"} signal-cli: INFO HttpServerHandler - Started HTTP server on /127.0.0.1:8080
[6] GROK:
Perfect — this is exactly the healthy startup we want to see (per latest docs at https://docs.openclaw.ai/channels/signal and https://docs.openclaw.ai/gateway).
The "hang" (no return to dna@arniegarwis:~$) is 100% normal and expected. openclaw logs --follow is a live tail — it stays open forever to stream new log lines in real time (just like tail -f). Leave this terminal open; do not Ctrl+C it.
Correct 3-terminal workflow (WSL)
- Terminal 1 (Gateway) — keep this running forever
- Terminal 2 (Live logs) — what you have open now (leave it)
- Terminal 3 (Commands) — new window/tab for status/pairing/etc.
Immediate fix (this will get replies working)
Your current dmPolicy: "allowlist" is strict and the #1 reason for silent drops (docs note: sender must match exactly as phone or UUID).
Switch to "pairing" (the official default + most reliable method):
- Edit
~/.openclaw/openclaw.jsonand update the signal block to this (verbatim from docs):
``json "channels": { "signal": { "enabled": true, "account": "+12109336780", "cliPath": "signal-cli", "dmPolicy": "pairing", "allowFrom": ["+12105574779", "+12105574780"], "groupPolicy": "allowlist" } } ``
- Restart cleanly in Terminal 1:
``bash openclaw gateway stop sleep 3 npx openclaw gateway ``
- Wait for the logs in Terminal 2 to show the daemon starting again.
- Test it:
- From your phone +12105574779 send any message to bot +12109336780. - Watch Terminal 2 — you should see new lines appear (look for "dm", "inbound", "pairing", or your number).
- If a short pairing code appears in the browser chat UI (or in logs), approve it in Terminal 3:
```bash openclaw pairing list signal
to see the code
openclaw pairing approve signal YOUR-CODE-HERE ```
After approval, the bot will reply normally. You can switch back to allowlist later if you want — the approved sender stays in the allow-store forever.
Leave Terminal 2 open, do the steps above, then paste here:
- Any new lines that appear in Terminal 2 after your test message
- Output from
openclaw channels status --probe(run in Terminal 3)
We’ll have it fully working in the next 60 seconds. You’re super close! 🚀 (Full reference: https://docs.openclaw.ai/channels/signal)
[7] DANIEL:
I sent a text at 10:52 and nothing shows up in the browser console Nothing is returned in my phone. And nothing changes in the logs
[8] GROK:
This is the exact "silent inbound" behavior documented in the latest Signal channel guide (https://docs.openclaw.ai/channels/signal — 2026.2.15 section on dmPolicy & troubleshooting).
Your 10:52 test message produced zero logs because the Signal network message never reached OpenClaw’s handler (not even a drop notice). This happens when:
dmPolicyis still"allowlist"and the sender ID doesn’t match 100 % (phone vsuuid:...), ordmPolicyis"pairing"(default) but the sender isn’t yet approved.
Since you didn’t receive a pairing code back on your phone, it’s not even getting to the pairing step yet.
Do these exact steps (in order)
Terminal 3 (new window — commands) Run and paste the full output of each:
```bash
1. Current config (must show dmPolicy and allowFrom)
openclaw config get channels.signal
2. Health + probe (docs-recommended for "nothing in
logs") openclaw channels status --probe
3. Pairing state
openclaw pairing list signal
4. Full system check
openclaw doctor ```
Terminal 4 (new window — full unfiltered logs) ``bash openclaw logs --follow `` (Leave this open — no grep. This will show every line, including inbound DMs, drops, and pairing events.)
Now test Send one fresh message from +12105574779 → +12109336780 (any text).
Watch Terminal 4. You will see new lines appear (e.g. inbound, dm, pairing, or drop).
If a pairing code shows (in logs or browser UI): ``bash openclaw pairing approve signal <THE-CODE> ``
That’s it — replies will start immediately after approval.
Paste here:
- The 4 command outputs from Terminal 3
- The new lines that appear in Terminal 4 after your test message
We’ll have it responding in the next round. You’re right on the edge of it working. Let’s nail the exact mismatch. 🚀
(Full reference: https://docs.openclaw.ai/channels/signal)
[9] DANIEL:
text to Arnie doesn not get a response - and nothng in the logs...
[10] GROK:
This is the exact "no inbound logs at all" case covered in the latest Signal troubleshooting section (https://docs.openclaw.ai/channels/signal — 2026.2.15).
Doctor shows Signal: ok because the probe only checks the HTTP daemon is alive — it does not confirm the daemon is actually receiving messages from the Signal network.
Your filtered logs + repeated SIGTERM restarts are hiding everything. The incoming DM is never reaching the signal-cli handler, so no "Received DM from ..." or "Ignoring DM..." line ever appears.
Do these 4 things right now (exact order)
Terminal 3 (commands — new window) Copy-paste and run all of these, then paste the full output here:
``bash openclaw config get channels.signal openclaw pairing list signal pgrep -af signal-cli openclaw channels status --probe ``
Terminal 2 (full logs — critical) Kill the old grep one (Ctrl+C), then run:
``bash openclaw logs --follow ``
(Leave it open — no grep, no filters. This is the #1 thing in the docs for this symptom.)
Terminal 1 (stabilize gateway) ``bash openclaw gateway stop sleep 5 npx openclaw gateway ``
Now test From +12105574779 send one new message to +12109336780 (anything).
Watch Terminal 2 live. You must see new lines appear immediately (e.g. Received DM from +12105574779 or Ignoring DM from unknown sender – pairing required).
If you see a pairing code in the logs or browser, approve it: ``bash openclaw pairing approve signal <CODE> ``
That’s all. After approval (or if it was already allowlisted correctly) replies will flow.
Your frequent restarts are the #2 killer right now — one clean start + full logs will show exactly why the message isn’t arriving.
Paste the 4 command outputs + the new lines that appear in Terminal 2 after the test message.
We’ll have it working in the next round — this is the final piece. 🚀
(Full reference: https://docs.openclaw.ai/channels/signal — see “Troubleshooting ‘no logs on inbound message’” and the recommended pairing setup for a new bot number.)