[Ubuntu 26.04][Agent&Skills] Google Chat shows "OpenClaw is typing..." indefinitely when agent returns a silent reply (NO_REPLY)
- Dominant language
- TypeScript
- Stars
- 22.5k
- Forks
- 3.1k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 715
Description
## Description
When the OpenClaw agent decides not to respond and emits the silent-reply token `NO_REPLY`, the Google Chat conversation is left showing "OpenClaw is typing..." indefinitely. The typing indicator is never cleared and no message is ever sent, so from the user's side the bot appears permanently frozen.
**Platform scope:** Reproduced on Ubuntu 26.04 x86_64 (NemoClaw v0.0.104) only; other platforms not tested.
**Regression:** Unknown — the Google Chat channel is experimental/new; earlier behavior not tested.
## Environment
```text
Device: Ubuntu 26.04 x86_64 server
OS: Ubuntu 26.04 LTS
Architecture: x86_64
Node.js: v22.23.1
npm: 10.9.8
Docker: 29.1.3
OpenShell CLI: 0.0.85
NemoClaw: v0.0.104
OpenClaw: 2026.7.1
```
## Steps to Reproduce
1. Onboard an OpenClaw sandbox and add the experimental Google Chat channel (per the Google Chat connect flow). A small local model such as Ollama `qwen2.5:7b` reproduces this readily because it emits `NO_REPLY` often.
2. Pair/authorize the sender so messages are actually processed by the agent.
3. From the Google account, DM the bot a message the agent chooses not to answer (e.g. "test again", or just "...").
4. Watch the Google Chat conversation.
## Expected Result
If the agent produces a silent reply (`NO_REPLY` / nothing to say), the "typing..." indicator should be cleared so the conversation does not look stuck. Optionally the bot could send a minimal acknowledgement, but at minimum the typing state must not hang.
## Actual Result
The conversation shows "OpenClaw is typing..." forever. No message is delivered and the indicator is never removed. The agent turn completed and returned `NO_REPLY` (assistant text = `NO_REPLY`), but the channel leaves the typing state hanging, so the user cannot tell the bot has finished and chosen to stay silent.
## Logs
```text
Gateway log (nemoclaw {sandbox} logs):
[turn/kernel] visible channel turn dispatched with no queued reply payloads: channel=googlechat messageId=spaces/{space}/messages/{id} sessionKey=agent:main:main
Agent transcript: assistant content = [{"type":"text","text":"NO_REPLY"}]
```
Contributor guide
Research direction
Start by tracing the experimental Google Chat channel from the connect flow and the gateway log entry showing a visible turn with no queued reply payloads. Reproduce a turn that returns the NO_REPLY token and follow the typing-state lifecycle. Done means the typing indicator is cleared when the agent completes silently, with no message required.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100