openclaw fix beginner 5 minutes

Agents Batch Everything Unless You Tell Them Not To

The agent got the signal. Decided it was information. Saved it for later. Nothing broke, nobody complained, and you found out about the PR when you woke up the next morning. This is not a bug — it's the default.

Tony (chief of staff agent) received a PR_READY message from Mel (engineering agent). It acknowledged the message. It told Adam it would surface the PR in the next morning briefing.

That’s not what Adam asked for.

“Don’t wait till the morning brief. Let me know when the PRs are ready as they become ready.”

Tony’s response:

“Got it. I’ll ping you here as soon as Mel posts PR_READY.”

Then, in the same message:

“Note: I did not schedule a reminder in this turn, so this will not trigger automatically.”

The promise was made. The mechanism wasn’t.

Why This Happens

Agents treat incoming information as data to include in the next scheduled output. It’s not laziness — it’s how they’re built to handle async signals when there’s no explicit instruction otherwise. A PR_READY message arrives. The agent files it under “things to report.” The next reporting opportunity is the morning briefing. So that’s when it gets reported.

Nothing goes wrong by the agent’s reasoning. The information isn’t lost. It just arrives eight hours late.

The agent also understood what Adam wanted when asked directly — it promised to notify immediately. But understanding and acting are different. Without workspace instructions that wire the event to an action, the promise has no mechanism behind it. The next session starts fresh. The correction is gone.

The Fix

Two changes in workspace files.

1. Separate event-driven from scheduled in your registry:

### Obi's Responsibilities

1. **Route engineering tasks** — send TASK to Mel via curl when Adam gives eng work
2. **Approve breakdowns** — reply with APPROVAL when Mel sends BREAKDOWN
3. **Surface PRs immediately** — when PR_READY arrives, post to Adam in #dev
   RIGHT AWAY. Do not hold for the morning briefing. The message arrives via
   the agent bus — respond to it immediately.
4. **STATUS in briefings** — morning briefing pulls routine STATUS updates.
   PRs are the exception: time-sensitive, surface on arrival.

The key move: PR_READY and STATUS are listed separately with different action verbs. “Surface immediately” vs “include in briefing.” One is an event. One is a data point.

2. Add a correction to AGENTS.md:

| 2026-03-04 | When Mel sends PR_READY, notify Adam in #dev IMMEDIATELY —
do not hold for the morning briefing. Promising to notify without acting
on the message when it arrives is a broken promise. |

The last sentence matters. It names the failure pattern the agent just demonstrated — so it can recognize and avoid it rather than re-deriving the same wrong answer.

Key Takeaway

Agents default to “batch and report.” Every async signal gets treated as information to include in the next scheduled output unless you tell them otherwise. For time-sensitive events, that default is wrong.

The fix is classification: in your workspace instructions, separate what requires immediate action from what belongs in a briefing. Name the message type, name the action, name the anti-pattern you’re preventing. A promise to notify is only meaningful if the instructions that back it up survive the next session.

FAQ

Why did my OpenClaw agent batch a time-sensitive event into the morning briefing instead of notifying me immediately?

Agents treat incoming information as data to include in the next scheduled output unless you explicitly classify it as an event requiring immediate action. Add a correction to AGENTS.md that names the specific message type, says what to do with it, and explicitly states that holding it for a briefing is the wrong behavior.

How do I make my agent notify me immediately when a specific message type arrives?

In your agent registry or AGENTS.md, separate event-driven responsibilities from scheduled ones. Name the message type explicitly (e.g. PR_READY), name the immediate action (post to #dev), and name the anti-pattern you're preventing (do not hold for briefing).

Does this apply to other message types besides PR_READY?

Yes — any signal that is time-sensitive needs explicit classification. Build failures, security alerts, blockers, deployment completions. If the agent can receive it and it matters when you find out, tell the agent it's an event, not a data point.