Yeah — this is expected with current queue behavior.
Heartbeat using a different model does not make it independent of chat flow.
It still runs as an agent turn on the same gateway queue path, so if concurrency is low it can stall visible chat turns.
Most likely culprit: agents.defaults.maxConcurrent is set too low (often 1).
What to do
- First paste your version:
openclaw --version
- Tune config so heartbeat is cheaper + less blocking: