From cf41279ff54eeed92caf71001d201a6cdc094fcb Mon Sep 17 00:00:00 2001 From: David Kaya Date: Fri, 27 Mar 2026 20:40:30 +0100 Subject: [PATCH] fix: clamp auto-approval pill count to known tools The auto-approval pill displayed effectiveAutoApproved.size as the numerator, which could include tool names not present in the approval tool list (e.g. names added via 'Always approve' for tools that aren't in runtimeTools yet). This caused impossible counts like '17/14'. Compute the count by intersecting effectiveAutoApproved with the actual approvalTools list, so the numerator never exceeds the denominator. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/renderer/components/ChatPane.tsx | 6 ++++++ src/renderer/components/chat/InlinePills.tsx | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/ChatPane.tsx b/src/renderer/components/ChatPane.tsx index c5964ae..6d1a319 100644 --- a/src/renderer/components/ChatPane.tsx +++ b/src/renderer/components/ChatPane.tsx @@ -120,6 +120,10 @@ export function ChatPane({ ), [isApprovalOverridden, session.approvalSettings, pattern.approvalPolicy], ); + const effectiveAutoApprovedCount = useMemo( + () => approvalTools.filter((t) => effectiveAutoApproved.has(t.id)).length, + [approvalTools, effectiveAutoApproved], + ); useEffect(() => { transcriptRef.current?.scrollTo({ @@ -443,6 +447,7 @@ export function ChatPane({ approvalTools={approvalTools} disabled={isComposerDisabled} effectiveAutoApproved={effectiveAutoApproved} + effectiveAutoApprovedCount={effectiveAutoApprovedCount} isOverridden={isApprovalOverridden} onUpdate={onUpdateSessionApprovalSettings} /> @@ -497,6 +502,7 @@ export function ChatPane({ approvalTools={approvalTools} disabled={isComposerDisabled} effectiveAutoApproved={effectiveAutoApproved} + effectiveAutoApprovedCount={effectiveAutoApprovedCount} isOverridden={isApprovalOverridden} onUpdate={onUpdateSessionApprovalSettings} /> diff --git a/src/renderer/components/chat/InlinePills.tsx b/src/renderer/components/chat/InlinePills.tsx index 4798fa7..4c15ab0 100644 --- a/src/renderer/components/chat/InlinePills.tsx +++ b/src/renderer/components/chat/InlinePills.tsx @@ -348,16 +348,18 @@ const approvalKindLabels: Record = { export function InlineApprovalPill({ approvalTools, effectiveAutoApproved, + effectiveAutoApprovedCount, isOverridden, disabled, onUpdate, }: { approvalTools: ApprovalToolDefinition[]; effectiveAutoApproved: Set; + effectiveAutoApprovedCount: number; isOverridden: boolean; disabled: boolean; onUpdate: (settings: { autoApprovedToolNames?: string[] }) => void; -}) { +}){ const [open, setOpen] = useState(false); const ref = useClickOutside(() => setOpen(false), open); @@ -393,7 +395,7 @@ export function InlineApprovalPill({ type="button" > - {effectiveAutoApproved.size}/{approvalTools.length} auto-approved + {effectiveAutoApprovedCount}/{approvalTools.length} auto-approved