From a8ccdc44f3dc379dec3f3632a44186796b9a9145 Mon Sep 17 00:00:00 2001 From: Prateek Date: Mon, 16 Feb 2026 06:17:05 +0530 Subject: [PATCH] fix: increase delays in spawn prompt submission to ensure Enter is processed Fixes issue where spawned sessions would send the prompt text but the Enter keystroke would not be submitted, requiring manual Enter press. Changes: - Increase delay after paste-buffer from 300ms to 1000ms in tmux.ts sendKeys() to ensure tmux processes the paste before receiving Enter keystroke - Add 100ms delay after Escape key to ensure it's processed before pasting - Increase spawn wait time from 1s to 2s before sending initial prompt to allow Claude to fully initialize (permission prompts, startup, etc.) These longer delays account for: 1. tmux paste buffer processing time 2. Claude permission prompt interactions 3. Agent initialization and readiness Closes: FIX-SPAWN-PROMPT-SUBMIT --- packages/cli/src/commands/spawn.ts | 4 +++- packages/core/src/tmux.ts | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/commands/spawn.ts b/packages/cli/src/commands/spawn.ts index 93890fad6..db754d8d5 100644 --- a/packages/cli/src/commands/spawn.ts +++ b/packages/cli/src/commands/spawn.ts @@ -221,7 +221,9 @@ async function spawnSession( }); if (composedPrompt) { - await new Promise((resolve) => setTimeout(resolve, 1000)); + // Wait for agent to be fully ready (permission prompts, initialization, etc.) + // Longer delay ensures Claude is ready to receive input before sending prompt + await new Promise((resolve) => setTimeout(resolve, 2000)); await tmuxSendKeys(sessionName, composedPrompt); } diff --git a/packages/core/src/tmux.ts b/packages/core/src/tmux.ts index 565d1af27..be5da26f5 100644 --- a/packages/core/src/tmux.ts +++ b/packages/core/src/tmux.ts @@ -129,6 +129,8 @@ export async function sendKeys( ): Promise { // Clear any partial input first (matches bash reference scripts) await tmux("send-keys", "-t", sessionName, "Escape"); + // Small delay to ensure Escape is processed before pasting + await new Promise((resolve) => setTimeout(resolve, 100)); if (text.includes("\n") || text.length > 200) { // Use a named buffer to avoid global paste buffer race conditions @@ -158,9 +160,11 @@ export async function sendKeys( } if (pressEnter) { - // Small delay for paste to complete before sending Enter + // Delay for paste to complete before sending Enter + // Higher delay needed when using paste-buffer to ensure tmux processes the paste + // before receiving the Enter keystroke (especially with Claude permission prompts) if (text.includes("\n") || text.length > 200) { - await new Promise((resolve) => setTimeout(resolve, 300)); + await new Promise((resolve) => setTimeout(resolve, 1000)); } await tmux("send-keys", "-t", sessionName, "Enter"); }