From ee83bab1f6972a35a833b21c4de3dfd39ca9cc29 Mon Sep 17 00:00:00 2001 From: vignesh07 Date: Sun, 8 Mar 2026 14:08:50 -0700 Subject: [PATCH] fix(heartbeat): append workspace hint only when using default prompt --- src/infra/heartbeat-runner.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/infra/heartbeat-runner.ts b/src/infra/heartbeat-runner.ts index 8bac3aadf8d..40ab3e78716 100644 --- a/src/infra/heartbeat-runner.ts +++ b/src/infra/heartbeat-runner.ts @@ -605,15 +605,19 @@ function resolveHeartbeatRunPrompt(params: { : hasCronEvents ? buildCronEventPrompt(cronEvents, { deliverToUser: params.canRelayToUser }) : resolveHeartbeatPrompt(params.cfg, params.heartbeat); - const hasExplicitPrompt = Boolean( - params.heartbeat?.prompt?.trim() || params.cfg.agents?.defaults?.heartbeat?.prompt?.trim(), - ); + const configuredPromptRaw = + params.heartbeat?.prompt ?? params.cfg.agents?.defaults?.heartbeat?.prompt; + const effectivePrompt = resolveHeartbeatPromptText(configuredPromptRaw); + const defaultPrompt = resolveHeartbeatPromptText(undefined); + const isUsingDefaultPrompt = effectivePrompt === defaultPrompt; + const prompt = appendHeartbeatWorkspacePathHint({ prompt: basePrompt, workspaceDir: params.workspaceDir, // Only append the hint when using the built-in default heartbeat prompt. // If the user configured a custom prompt, do not mutate it. - shouldAppend: !hasExplicitPrompt && !hasExecCompletion && !hasCronEvents, + // Also: treat empty-string overrides as a request to fall back to the default. + shouldAppend: isUsingDefaultPrompt && !hasExecCompletion && !hasCronEvents, }); return { prompt, hasExecCompletion, hasCronEvents };