diff --git a/docs/browser-capture-harness.md b/docs/browser-capture-harness.md
index 594aacf5f6..f760fafa67 100644
--- a/docs/browser-capture-harness.md
+++ b/docs/browser-capture-harness.md
@@ -43,6 +43,18 @@ Run the shared browser profile fixture with:
PASEO_CAPTURE_HARNESS_GROUP=browser-profile npm run capture-harness --workspace=@getpaseo/desktop
```
+On macOS, test native titlebar dragging after scrolling with:
+
+```bash
+PASEO_CAPTURE_HARNESS_GROUP=titlebar-drag npm run capture-harness --workspace=@getpaseo/desktop
+```
+
+This group needs Xcode Command Line Tools and Accessibility permission for the
+terminal running it. It sends real mouse input to its test window and checks
+window movement, including button clicks and a portal over the titlebar. Leave
+the mouse idle during this group. It reads the app's production CSS and writes
+screenshots and window bounds to the output directory.
+
The browser profile group runs two Electron processes in sequence. It verifies that each
renderer-side `did-attach` identity maps to the correct main-process guest, that two live
tabs share cookies and local storage through one persistent session, and that the data is
diff --git a/packages/app/public/index.html b/packages/app/public/index.html
index f7116fc86b..a95e7b8c9e 100644
--- a/packages/app/public/index.html
+++ b/packages/app/public/index.html
@@ -70,6 +70,15 @@
-webkit-app-region: no-drag !important;
}
+ /* Electron does not clip app-region rectangles to scroll viewports.
+ Content-only viewports emit no window regions, including from their
+ controls. Visible controls here use normal DOM hit testing.
+ Use initial: Blink parses the explicit value none as no-drag. */
+ [data-window-content],
+ [data-window-content] * {
+ -webkit-app-region: initial !important;
+ }
+
/* Suppress the browser's default focus outline — it appears on mouse
clicks and looks out of place against our themed surfaces. Keep a
themed ring for keyboard users via :focus-visible. */
diff --git a/packages/app/src/agent-stream/strategy-web.tsx b/packages/app/src/agent-stream/strategy-web.tsx
index 25e7a313d2..d0b7eda0df 100644
--- a/packages/app/src/agent-stream/strategy-web.tsx
+++ b/packages/app/src/agent-stream/strategy-web.tsx
@@ -1241,7 +1241,7 @@ function WebStreamViewport(props: StreamRenderInput & { isMobileBreakpoint: bool
!liveAuxiliary;
return (
-