[BUG] sessions_send from isolated cron jobs always times out - no message delivery
Bug Description
sessions_send called from isolated cron job sessions consistently times out, regardless of model used. The tool call initiates but never completes within reasonable timeouts.
Environment
- OpenClaw v2.3.17
- macOS 15.3.0 (arm64)
- Node v25.8.1
Reproduction Steps
- Create a cron job with
sessionTarget: "isolated"andpayload.kind: "agentTurn" - The job's task includes calling
sessions_sendto forward a message to the main session - Trigger the job manually or wait for schedule
Expected Behavior
sessions_send completes and delivers the message to the target session.
Actual Behavior
The tool call times out. The cron job summary reports variations of:
- "Forward message timed out, but escalation was initiated"
- "Session send timed out... main session unavailable"
- "The send timed out waiting for a response, but the message was delivered"
No message is actually delivered to the target session (sessions_history shows empty).
Testing Done
Tested with multiple models to rule out model capability:
| Model | Job Duration | Result |
|-------|-------------|--------|
| qwen3.5:9b | 78s | Timeout, no delivery |
| qwen3.5:35b-a3b | 91s | Timeout, no delivery |
| claude-sonnet-4 | 50s | Timeout, no delivery |
All models successfully:
- Run exec tools (scripts)
- Parse output
- Chain multiple tool calls
- Attempt sessions_send (tool is invoked)
But sessions_send specifically never completes.
Cron Job Config
{
"sessionTarget": "isolated",
"payload": {
"kind": "agentTurn",
"message": "Run script, if [ESCALATE] marker found, use sessions_send to forward to main session",
"timeoutSeconds": 300,
"model": "anthropic/claude-sonnet-4-20250514"
}
}
Workaround
File-based escalation (write to disk, main session checks on heartbeat) works but loses the real-time notification benefit.
Impact
Prevents isolated cron agents from coordinating with the main session, limiting autonomous workflows to fire-and-forget patterns only.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗