From a48fc3ea1f5d112393d1e3c4093544129cbdce7d Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Fri, 19 Dec 2025 01:31:04 +0900 Subject: [PATCH] fix(todo-continuation-enforcer): increase delay to 5s and add write permission check (#89) (#105) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Increase delay from 200ms to 5000ms to prevent firing too quickly before users can respond - Add write permission check to skip continuation when previous agent lacks write/edit permissions - Fixes destructive behavior where hook was overriding user wait commands Resolves #89 🤖 Generated with assistance of OhMyOpenCode (https://github.com/code-yeongyu/oh-my-opencode) --- src/hooks/todo-continuation-enforcer.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/hooks/todo-continuation-enforcer.ts b/src/hooks/todo-continuation-enforcer.ts index cb06f0d..0af5b18 100644 --- a/src/hooks/todo-continuation-enforcer.ts +++ b/src/hooks/todo-continuation-enforcer.ts @@ -180,6 +180,13 @@ export function createTodoContinuationEnforcer(ctx: PluginInput): TodoContinuati const messageDir = getMessageDir(sessionID) const prevMessage = messageDir ? findNearestMessageWithFields(messageDir) : null + const agentHasWritePermission = !prevMessage?.tools || (prevMessage.tools.write !== false && prevMessage.tools.edit !== false) + if (!agentHasWritePermission) { + log(`[${HOOK_NAME}] Skipped: previous agent lacks write permission`, { sessionID, agent: prevMessage?.agent, tools: prevMessage?.tools }) + remindedSessions.delete(sessionID) + return + } + log(`[${HOOK_NAME}] Injecting continuation prompt`, { sessionID, agent: prevMessage?.agent }) await ctx.client.session.prompt({ path: { id: sessionID }, @@ -199,7 +206,7 @@ export function createTodoContinuationEnforcer(ctx: PluginInput): TodoContinuati log(`[${HOOK_NAME}] Prompt injection failed`, { sessionID, error: String(err) }) remindedSessions.delete(sessionID) } - }, 200) + }, 5000) pendingTimers.set(sessionID, timer) }