Skip to content

Commit 49ae60d

Browse files
committed
fix(cron): keep message tool without delivery
1 parent 31437b9 commit 49ae60d

2 files changed

Lines changed: 2 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ Docs: https://docs.openclaw.ai
4949
- Agents/TTS: report failed speech synthesis as a real tool error so unconfigured providers no longer feed successful TTS failure output back into agent loops. (#67980) Thanks @lawrence3699.
5050
- Gateway/wake: allow unknown properties on wake payloads so external senders like Paperclip can attach opaque metadata without failing schema validation. (#68355) Thanks @kagura-agent.
5151
- Matrix: honor `channels.matrix.network.dangerouslyAllowPrivateNetwork` when creating clients for private-network homeservers. (#68332) Thanks @kagura-agent.
52+
- Cron/message tool: keep cron-owned runs with `delivery.mode: "none"` on the normal message-tool path so they can still send explicit messages, create threads, and route conditionally when no runner-owned delivery target is active. (#68482) Thanks @obviyus.
5253

5354
## 2026.4.15
5455

src/cron/isolated-agent/run.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -124,17 +124,13 @@ type IsolatedDeliveryContract = "cron-owned" | "shared";
124124
function resolveCronToolPolicy(params: {
125125
deliveryRequested: boolean;
126126
resolvedDelivery: ResolvedCronDeliveryTarget;
127-
deliveryContract: IsolatedDeliveryContract;
128127
}) {
129128
return {
130129
// Only enforce an explicit message target when the cron delivery target
131130
// was successfully resolved. When resolution fails the agent should not
132131
// be blocked by a target it cannot satisfy (#27898).
133132
requireExplicitMessageTarget: params.deliveryRequested && params.resolvedDelivery.ok,
134-
// Cron-owned runs always route user-facing delivery through the runner
135-
// itself. Shared callers keep the previous behavior so non-cron paths do
136-
// not silently lose the message tool when no explicit delivery is active.
137-
disableMessageTool: params.deliveryContract === "cron-owned" ? true : params.deliveryRequested,
133+
disableMessageTool: params.deliveryRequested,
138134
};
139135
}
140136

@@ -162,7 +158,6 @@ async function resolveCronDeliveryContext(params: {
162158
toolPolicy: resolveCronToolPolicy({
163159
deliveryRequested: false,
164160
resolvedDelivery,
165-
deliveryContract: params.deliveryContract,
166161
}),
167162
};
168163
}
@@ -181,7 +176,6 @@ async function resolveCronDeliveryContext(params: {
181176
toolPolicy: resolveCronToolPolicy({
182177
deliveryRequested: deliveryPlan.requested,
183178
resolvedDelivery,
184-
deliveryContract: params.deliveryContract,
185179
}),
186180
};
187181
}

0 commit comments

Comments
 (0)