Windows thread-completed notifications stay open until dismissed#26341

opened14d agobyMmynameistito

What happened

In the Windows T3 Code desktop app, the “Thread completed” system notification stays visible until I close it. I’d expect it to time out like a normal Windows notification.

Diagnosis

The local server reports version 0.1.4-nightly.20261027.3796; the exact desktop app build is unknown. In current main source, ThreadNotificationCoordinator sets requireInteraction for completion notifications on Windows. That option keeps the notification active until dismissed. The nearby source comment says this is intended to preserve clicks after a toast moves into Notification Center.

This explains the observed behavior, though it may trade away the normal Windows timeout. Source reference: ThreadNotificationCoordinator.tsx.

Steps to reproduce

  1. Open T3 Code Desktop on Windows with thread notifications enabled.
  2. Minimize the T3 window or focus another app.
  3. Let an agent thread finish.
  4. Observe that the “Thread completed” Windows notification remains visible until manually dismissed.

Version

Latest desktop build as reported; exact desktop app build unknown. Local server: 0.1.4-nightly.20261027.3796.

Environment

Windows x64 (10.0.26300), Node v26.12.1, T3 Code Desktop with a local server. Triage CLI: 0.1.3 (bunx t3 triage), which is not the affected app version.

Evidence

The current-main notification code requests requireInteraction only for Windows completion notifications. No crash or server error is expected for this behavior.

  • #1832 discusses adding close buttons to in-app toasts; this report concerns a Windows system toast that already has a close button but stays visible.
  • #12287 concerns Windows completion notifications not appearing because of an overlong tag; this report concerns a notification that appears but does not time out.

Fix applied or workaround

No machine changes were made. The notification can be closed manually.

Filed by

Codex (GPT-6) via t3 triage

Synced from GitHub

We’re also experiencing this issue: Windows completion notifications stay open indefinitely instead of timing out normally.

The persistent banners were introduced by PR #22520: Keep Windows thread notifications clickable until handled, commit 122c5f8ffc.

That change sets:

ts
1requireInteraction: kind === "completion" && isWindowsPlatform(navigator.platform),

This was an intentional workaround: after a normal banner timed out, clicking its Notification Center entry no longer opened the thread. Keeping the banner visible preserved clicks, but removed normal expiration.

A potential replacement is to create Windows desktop notifications through Electron’s main-process API and use Notification.handleActivation() to handle clicks after banner expiration. Our pinned Electron version, 44.10.0, documents support for activation even after the original notification object is gone or the app restarts. The activation would need enough information to identify the destination environment/thread.

This would need validation in an installed Windows build; the investigation so far is source-based, not a verified fix. Browser notifications would need separate handling.

Investigation by OpenAI GPT-6-Astra (gpt-6-astra), using the pi coding-agent harness, inside T3 Code.

Synced from GitHub

Adding a second symptom from #27060, which was closed as a duplicate of this issue:

With Windows Do Not Disturb on, the "Thread completed" toast still pops up, with a Close button. Other apps' notifications stay hidden, and so do T3 Code's other alerts (approval, input, failed, usage limit). Seen on T3 Code (Nightly) 0.1.5, Windows 11 Pro.

In #27060 I traced it to the requireInteraction flag on Windows completion notifications: Electron then sends the toast as a reminder, and Do Not Disturb lets reminders through by default ("Show reminders regardless of app used"). I haven't confirmed that, but if it's right, a fix here should also stop these toasts from breaking through Do Not Disturb. Turning that Windows setting off works around it, but it also blocks real reminders from other apps.