Troubleshooting

Agent Keeps Saying HEARTBEAT_OK?

If heartbeat replies are leaking into normal chat, your agent is probably handling maintenance prompts in the wrong place. Here’s the fast fix.

Recurring support pattern: users see random HEARTBEAT_OK messages in active conversations and assume the agent is broken. Usually the issue is instruction overlap, a stale heartbeat prompt, or context confusion between heartbeat checks and user-facing replies.

Reality check: heartbeat prompts are internal maintenance checks. They should not hijack normal chat responses unless no real task is pending.

Fast diagnosis (2 minutes)

  1. Confirm where it happened: DM, server channel, or dashboard chat.
  2. Check if a heartbeat poll was actually running at that moment.
  3. Inspect HEARTBEAT.md for stale instructions like “always reply HEARTBEAT_OK”.
  4. Run one canary message in normal chat: “Reply with one sentence describing today’s task.”

Known-good heartbeat behavior

Copy/paste recovery prompt

You are in normal conversation mode. Do NOT return HEARTBEAT_OK unless this is explicitly a heartbeat poll. 1) Confirm whether this current message is a heartbeat poll (yes/no). 2) If no, answer the user request directly in plain language. 3) If yes and no action is needed, return HEARTBEAT_OK exactly once. 4) If heartbeat instructions conflict with user conversation, prioritize direct user response and report the conflicting line from HEARTBEAT.md.

Avoid this trap: mixing “always return HEARTBEAT_OK” into global behavior instructions can leak maintenance behavior into every chat surface.

High-friction edge cases

Prevent it going forward

  1. Keep HEARTBEAT.md short and explicit: maintenance only.
  2. Add a guard line: “Only output HEARTBEAT_OK during heartbeat polls.”
  3. Move exact-time tasks to cron reminders.
  4. Retest with one heartbeat poll and one normal chat prompt.

When to escalate to #help

Support packet

HEARTBEAT_OK leak report Surface where issue appears (dashboard/DM/server/thread): Timestamp + timezone: What user message was sent: What agent replied: Was a heartbeat poll active at that moment (yes/no/unsure): Current HEARTBEAT.md content (redacted if needed): Any cron jobs targeting same destination: Message link/screenshot:

Bottom line: keep heartbeat behavior scoped to heartbeat polls only. If it leaks into normal chat, isolate routing + instruction conflicts first.