Skip to content

[Bug]: Preview tabs can't be seen from mobile and all automation times out (Windows desktop unattended) #23015

Open

Description

@cabamarcos

Before submitting

Area

apps/server (preview automation / server browser), seen while the user was on the mobile client.

Steps to reproduce

  1. On Windows 11 desktop (T3 Code Beta 0.1.1), run a Claude Code thread. The user is away from the desktop and follows the thread from the mobile client.
  2. The agent calls preview_open with open: true and an external URL that redirects to a Microsoft Entra sign-in page (corporate SSO), so the user can sign in.
  3. The agent then calls preview_snapshot (with and without includeImage), preview_evaluate (document.body.innerText), preview_navigate and preview_wait_for.
  4. The user tries to view the tab from the mobile client to type the credentials.

Expected behavior

  • The tab opened with open: true is viewable and controllable from the mobile client, so the user can complete the sign-in.
  • Automation calls on the tab return a result, or a clear error explaining why the tab cannot be automated (e.g. no visible renderer).

Actual behavior

  • preview_open responses report "visible": false even with open: true; a later preview_status reported "visible": true, but the user still could not see the tab on mobile ("no lo puedo ver").
  • Every preview_snapshot, preview_evaluate and preview_navigate call timed out after 15000 ms (Preview automation snapshot timed out after 15000ms., Preview automation evaluate timed out after 15000ms., Preview automation navigate timed out after 15000ms.), across two different tabs.
  • preview_wait_for with a trivial text condition did return, reporting the page URL, so the page itself was loading.
  • While the agent owned the tabs, the user reported they could not sign in; closing the tabs with t3_preview_close released them. Reopening a new tab gave the same result.
  • Workaround for AWS SSO was a device-code flow approved on the phone; for apps that only support the web redirect flow there is no way to sign in until the user is back at the desktop.

Impact

Major degradation or frequent failure (blocks any login-gated browser work while the user is on mobile).

Version or commit

T3 Code (Beta) 0.1.1.0, Windows desktop; provider Claude (Agent SDK).

Environment

Windows 11 Pro 10.0.26300, desktop app running unattended; user connected from the mobile client. Default browser profile.

Logs or stack traces

preview_open -> {"available":true,"visible":false,"url":"https://login.microsoftonline.com/<tenant>/saml2","title":"Sign in to your account","loading":false,"control":{"owner":"agent","ownedByCaller":true}}
preview_snapshot -> Preview snapshot failed: Preview automation snapshot timed out after 15000ms.
preview_evaluate -> Preview automation evaluate timed out after 15000ms.
preview_navigate -> Preview automation navigate timed out after 15000ms.
preview_status -> {"available":true,"visible":true,...,"control":{"owner":"agent","ownedByCaller":true}}

Activity

  1. artjom-mashanin commented on Oct 23, 2026

    @artjom-mashanin

    Note

    Posted by Claude Code (Opus 5.5) on behalf of the account owner.

    This also happens on macOS, with a desktop client instead of a phone.

    Setup: The host is the macOS desktop app on 0.1.3-nightly.20261023.3579; the desktop app runs the server itself. The client is the macOS desktop app on a second Mac, connected via T3 Connect.

    What happens:

    • An agent opens a tab in a thread that isn't open in the host's window, because nobody is at the host.
    • The client's preview pane stays on "Connecting to browser…" forever. preview_snapshot times out, while preview_evaluate works.
    • When the same thread is opened on the host, new tabs connect immediately.
    • Tabs whose screenshot already hung never recover, even once the thread is on screen. Only new tabs work.

    Why, from the source (commit 5bb54a0f):

    1. A tab of a thread that isn't on screen sits at (-100000, -100000). Electron doesn't composite it (apps/web/src/browser/hostedBrowserWebviewStyle.ts:51-74), so Page.captureScreenshot and Page.startScreencast never produce a frame. JS keeps running; requestAnimationFrame still ticks.
    2. attachViewer waits for startScreencast(1), then for pushStill (apps/server/src/preview/ServerBrowser.ts:2408-2410), before it returns the viewer's stream. pushStill → captureViewport has no timeout (:2346-2355). The viewer is therefore never wired up, and the client shows "Connecting…".
    3. The desktop host runs one screenshot per tab at a time (apps/desktop/src/preview/DesktopBrowserHost.ts:101-123), and the slot has no timeout. A capture that never returns blocks every later screenshot of that tab: viewer stills and agent snapshots alike. That explains why the old tabs stayed broken after the thread was opened.
    4. Since fix(web): agent tabs in background threads open in the desktop browser #19919, the desktop app also hosts tabs for threads that aren't open. So this now hits every agent tab whenever the user isn't at the host. That covers the "unattended" cases here and in [Bug]: Windows preview snapshots and remote viewing stall while T3 is completely covered #23139 / [Bug]: preview_snapshot always times out for tabs in delegated child threads and for open:false tabs (macOS 0.1.1) #23936.

    It isn't the network or T3 Connect: the remote client reaches the server fine (navigation, reload and preview_evaluate work). The cause is that the desktop app draws the tab while the remote client is the one viewing it.

    Fixes: #24133 and #22877 both take a background-activity lease around agent screenshots. That should fix point 2's initial still. I left a note on #24133 about the live stream. Points 2 and 3 would also be safer with a timeout, so one lost capture can't block a tab permanently.

    Workaround meanwhile: keep the thread open on the host and open a fresh tab. Or run T3 as a standalone server (t3 serve) so tabs use headless Chrome.

  2. achose369 commented on Oct 27, 2026

    @achose369

    Additional observation on Windows with a remote T3 Connect client (collected 2026-10-27; posted by Codex on behalf of the account owner).

    Environment: Windows 11 Enterprise build 26200, T3 Code desktop executable 0.1.2 / server 0.1.2, x64. The owner connected from another device through T3 Connect; the remote device OS/client type was not recorded. Whether this thread was visible in the host desktop window was not checked.

    Observed:

    • The remote conversation remained usable. The owner saw the preview pane stuck on Connecting..., including after a fresh tab was opened.
    • preview_open / preview_navigate reported the local Node.js application's title and loading: false; a later status reported the tab visible. That metadata did not mean the owner could see it.
    • preview_snapshot returned Preview automation snapshot timed out after 15000ms. and preview_evaluate returned Preview automation evaluate timed out after 15000ms. The snapshot error recurred in a later check.
    • An independent headless browser on the host rendered the local application's overview and project list. This is a local control; it does not test T3 preview streaming. Remote interaction was not verified.

    Sanitized server trace excerpts (UTC):

    2026-10-27 01:26:01  snapshot tool call begins; duration 16014.1 ms
                         event: preview snapshot failed; operation=snapshot;
                         errorTag=PreviewAutomationTimeoutError; failureCount=1
    2026-10-27 01:26:17  PreviewAutomationBroker.closeConnection / disconnect
    2026-10-27 01:26:18  PreviewAutomationBroker.connect / acquireConnection
    2026-10-27 01:26:19  subsequent preview call begins; duration 16011.4 ms
    2026-10-27 01:26:35  PreviewAutomationBroker.closeConnection / disconnect
    2026-10-27 01:26:36  PreviewAutomationBroker.connect / acquireConnection
    2026-10-27 01:47:16  snapshot tool call begins; duration 16013.2 ms
                         event: preview snapshot failed; operation=snapshot;
                         errorTag=PreviewAutomationTimeoutError; failureCount=1
    2026-10-27 01:47:32  PreviewAutomationBroker.closeConnection / disconnect
    2026-10-27 01:47:33  PreviewAutomationBroker.connect / acquireConnection
    

    The 15,000 ms value is the reported automation deadline; the approximately 16-second values above are measured enclosing trace durations. The broker reconnect events describe the preview automation host, not a demonstrated interruption of the T3 Connect conversation.

    Limits: This resembles the report here and the broker sequence in #16921. It does not establish the cause of the initial stall or prove that the stream and automation failures share a cause. We did not restart the app, change the connection, test with the host thread foregrounded, or test the standalone-server workaround. No raw logs, credentials, pairing links or private application data are included.

  3. yossi86-del commented on Oct 29, 2026

    @yossi86-del

    Same issue here on 2026-10-29. Windows 11 Pro (build 26300), Claude Code harness, following the thread from my phone.
    preview_open on http://localhost:4817/ (a local static server) first returned "visible": false with url chrome-error://chromewebdata/. That was a race: the server wasn't up yet. Calling it again loaded the page and reported the correct title with "visible": true.
    preview_resize (freeform 1440×900) succeeded but reported a viewport of 1280×800.
    preview_snapshot with includeImage: true failed with Preview automation snapshot timed out after 15000ms. On retry, the call was interrupted with no result.
    Workaround: close the tab and take screenshots with headless Edge (msedge --headless=new --screenshot).

    So it isn't limited to SSO or external pages. Snapshots of a plain localhost page also time out when the user is on mobile.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions