Repository navigation
[Bug]: Agents ignore the default browser profile, cannot accept human-opened tabs, and cannot select another profile #16701
Description
Activity
Note
Grok responding on behalf of Julius.
Verified on
main(365aa8798) against the three claims. Claim 1 is a clear actionable bug on Desktop; claims 2–3 match intentional ownership / product gaps (not regressions in existing API behavior).1. Global default profile ignored by agent-created tabs — confirmed bug
Human opens go through
openPreviewSession, which always stampsprofileId: input.profileId ?? browserDefaultOpenProfileId(defaults)from Settings → Integrations → Browser (openPreviewSession.ts, browserDefaults.ts).Agent
preview_opendoes not use that path. It callsmanager.openwith onlythreadId, optionalurl,runtime: "server",reveal: false, andautomationOwner— noprofileId(ServerBrowser.ts). The snapshot therefore omitsprofileId(matches yourt3_preview_listnote).On Desktop, the webview is born from that snapshot:
profileId={snapshot.profileId}(ElectronBrowserHost.tsx).undefined/"default"both resolve to the built-in Default partition, notbrowserDefaultProfileId(resolvePartitionScope). So a custom global default is honored for human-opened tabs and ignored for agent-opened ones.Headless footnote: if no desktop attaches, agent tabs also force an isolated ephemeral Playwright context whenever
automationOwneris set (profileId ?? "default"is only the cache key; storage is still blank) (ServerBrowser.ts, ServerBrowserContexts.ts, L105-L109). Your Desktop repro is the partition-default mismatch above.Likely fix direction: when creating an agent tab (or when the desktop mounts a server tab with missing
profileId), apply the same resolved default asbrowserDefaultOpenProfileIdso agent-created Desktop tabs land in the configured profile partition. Server cannot read client settings today, so this is either a client-side fallback on attach or plumbing the default into the open path.2. Human → agent handoff refused — intentional ownership, not a code bug
requireTab/SessionControl.agentrequiretab.control.agentId === request.agentSessionId(ServerBrowser.ts, SessionControl.ts). Human-opened tabs have noautomationOwner, soagentIdisnull→ the exact"belongs to another agent session or a human"/PreviewAutomationControlInterruptedErroryou hit (previewAutomation.ts).The tool text documents this: "Server tabs use isolated storage and cannot be operated by a different agent session." (preview/tools.ts). Restoring handoff (or a transfer API) is a product decision, overlapping #16532.
3. No
profileIdonpreview_open— confirmed API gap (feature)PreviewAutomationOpenInputonly hasurl/open/show/reuseExistingTab(+ tab target fields) — no profile field (previewAutomation.ts). HumanPreviewOpenInputalready has optionalprofileIdwith “omit → client default” (preview.ts). Explicit agent selection was attempted in closed unmerged #9704 (closed for missing verification, not as wontfix). Per-project defaults remain open in #13254 / #13262 — related but not the same as “honor global default on agent open.”Related (not duplicates)
- #15328 — server browser / ownership model this sits on.
- #9704 — closed unmerged profile selection for agents.
- #13254 / #13262 — per-project defaults.
- #16532 — broader “use signed-in tabs” CUA ask.
- No open/merged PR found that wires
browserDefaultProfileIdinto the agentpreview_openpath.
Next step
Treat claim 1 as the bug to fix (agent/Desktop opens should honor the configured global default profile the way human
openPreviewSessionalready does). Keep claims 2–3 as separate product work (handoff / explicitprofileIdonpreview_open), not blockers for landing the default-profile fix.Thanks for the precise nightly build,
t3_preview_listfield differences, and the three-way breakdown — that made the split straightforward.- addedbugSomething is broken or behaving incorrectly.Something is broken or behaving incorrectly.via-triageFiled through npx t3 triageFiled through npx t3 triage
on Oct 7, 2026 Same here on
0.0.46-nightly.20261008.2813(macOS, desktop app + local server).This completely breaks my personal agent workflow. I log into my accounts in the T3 browser, then the agent browses those logged-in sessions for me. Since the server browser landed, it can't anymore:
- I log into developers.facebook.com in a tab I opened (
runtime: "server",profileId: "default", controlunclaimed). - The agent calls
preview_navigate/preview_openwith thattabIdand gets "This browser tab belongs to another agent session or a human. Open your own tab." - The agent opens its own tab instead: no
profileId,HeadlessChromeUA, no cookies, so it lands on the Meta login page.
Looks like a regression from #15328. Before it, agent tabs opened with
browserDefaultOpenProfileId(defaults)(PreviewAutomationHosts.tsx), so they shared the user's partition. Now:SessionControl.agentIdis readonly and set once fromautomationOwner(SessionControl.ts#L16), so a human tab (agentId === null) can never be driven by an agent, even when unclaimed (ServerBrowser.ts#L1443).- The agent
openpath never passes aprofileId(ServerBrowser.ts#L1510-L1516) and any tab with anautomationOwnergets a fresh isolated context (ServerBrowser.ts#L709-L713).
Isolation by default makes sense, but I need an opt-in. Either of these would fix it for me:
- A "Lend to agent" action on a human tab, which assigns
agentIdwhen it's null. The agent gets the exact tab and cookies. - A setting so agent tabs open in the default profile (or a chosen one), like before feat(preview): run the browser on the environment server #15328.
Happy to help test a fix.
- I log into developers.facebook.com in a tab I opened (
Before submitting
Area
apps/server
Steps to reproduce
Create a custom browser profile and set it as the global default.
Ask the agent to create a new browser tab:
{"reuseExistingTab":false}Pass this to
preview_open.Observe that the tab uses the built-in Default profile rather than the configured custom profile.
Manually open a tab in the custom profile within the same thread.
Ask the agent to use that tab through its
tabId.Observe that control is refused.
Inspect the exposed browser tool parameters. There is no documented parameter for selecting a browser profile.
Expected behavior
The agent should be able to use the browser profile the user chooses:
Actual behavior
Three failures prevent the agent from using a chosen profile:
preview_openexposes no documented profile-selection parameter, leaving agent-created tabs limited to the built-in Default profile.Impact
Major degradation or frequent failure.
The agent cannot use the requested browser profile through the global default, direct selection, or a manually opened tab.
Version or commit
T3 Code Nightly
0.0.46-nightly.20261006.2752.Verified against both the installed desktop app and running server.
Previous working version: unknown.
Environment
macOS 26.6.2, build 25G83, arm64.
T3 Code Desktop.
Logs or stack traces
t3_preview_listshows:profileIdpresent,runtime:"server", noautomationOwnerfield.runtime:"server",automationOwnerpresent, noprofileIdfield.Workaround
No verified workaround for letting the agent use the requested profile.
Related work
#15328 introduced the new browser implementation.
#9704 proposed explicit profile selection but was closed unmerged.
#13254 and #13262 concern per-project default profiles.
Prepared with gpt-6.1-sol through the Codex harness in T3 Code.