diff --git a/tools/ai-cli-dispatch/src/execute.ts b/tools/ai-cli-dispatch/src/execute.ts index 626acf4..56d10e3 100644 --- a/tools/ai-cli-dispatch/src/execute.ts +++ b/tools/ai-cli-dispatch/src/execute.ts @@ -77,8 +77,12 @@ export async function executePrompt( const child = spawnImpl(command, args, { shell: false, + stdio: ["pipe", "pipe", "pipe"], }); + // Close stdin immediately so clients like codex don't hang waiting for input + child.stdin?.end(); + child.stdout?.on("data", (chunk: Buffer | string) => { stdout += chunk.toString(); }); diff --git a/tools/ai-cli-dispatch/src/jobs.ts b/tools/ai-cli-dispatch/src/jobs.ts index a027cff..c5bfc36 100644 --- a/tools/ai-cli-dispatch/src/jobs.ts +++ b/tools/ai-cli-dispatch/src/jobs.ts @@ -118,9 +118,12 @@ export async function startJob( const child = spawnImpl(command, args, { detached: true, shell: false, - stdio: ["ignore", "pipe", "pipe"], + stdio: ["pipe", "pipe", "pipe"], }); + // Close stdin immediately so clients like codex don't hang waiting for input + child.stdin?.end(); + record.pid = child.pid ?? undefined; writeJobFile(jobDir, record, fs);