diff --git a/apps/code/src/renderer/features/sessions/components/SessionView.tsx b/apps/code/src/renderer/features/sessions/components/SessionView.tsx index 3f32f8be6..e5771a67e 100644 --- a/apps/code/src/renderer/features/sessions/components/SessionView.tsx +++ b/apps/code/src/renderer/features/sessions/components/SessionView.tsx @@ -252,7 +252,10 @@ export function SessionView({ } if (customInput) { - if (isOtherOption(optionId)) { + if ( + isOtherOption(optionId) || + selectedOption?._meta?.customInput === true + ) { await getSessionService().respondToPermission( taskId, firstPendingPermission.toolCallId, diff --git a/packages/agent/src/adapters/claude/permissions/permission-handlers.ts b/packages/agent/src/adapters/claude/permissions/permission-handlers.ts index b6f62ca34..0013679f6 100644 --- a/packages/agent/src/adapters/claude/permissions/permission-handlers.ts +++ b/packages/agent/src/adapters/claude/permissions/permission-handlers.ts @@ -388,12 +388,14 @@ async function handleDefaultPermissionFlow( updatedInput: toolInput as Record, }; } else { - const message = "User refused permission to run tool"; + const feedback = ( + response._meta?.customInput as string | undefined + )?.trim(); + const message = feedback + ? `User refused permission to run tool with feedback: ${feedback}` + : "User refused permission to run tool"; await emitToolDenial(context, message); - return { - behavior: "deny", - message, - }; + return { behavior: "deny", message, interrupt: !feedback }; } }