Tencent / Tencent/BrowserSkill
Stuck 'Agent is controlling' overlay blocks all real clicks and makes bsk upload fail (extension reload required)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 5.7k
- Forks
- 399
- Avg merge
- 2d 9h
- Merged PRs (30d)
- 74
Description
Summary
After asynchronous request-help interruptions, the in-page overlay <browser-skill-overlay> (the "Agent 正在控制" badge + 「中断」 button) can enter a stuck state in which it permanently covers the whole viewport with pointer-events: auto. While stuck:
bsk clickreports success but the page never receives the click (verified viadocument.activeElement).bsk upload --mode dropfails withpermission_denied: "file-drop target is not the topmost element at its action point".bsk upload(input mode) fails with"upload trigger did not activate an input[type=file]".
Removing the DOM node or reloading the page does not help; new sessions/windows also get the stuck overlay. Only reloading the extension clears it.
Environment
- bsk CLI + daemon: 0.3.0 (protocol 1.3), daemon running natively on Windows 11 x64, ws on 127.0.0.1:52800 (local mode)
- Extension: 0.3.0, in Microsoft Edge 153.0.0.0 (Windows)
- Page where observed:
https://member.bilibili.com/platform/upload/video/frame(the symptoms look page-independent)
Trigger (observed twice in one day)
- A
bsk request-helpclient process was killed by a client-side timeout (shelltimeout→ SIGTERM). Afterwards the session stayed busy:"previous session command is still running / session already has an unfinished command". - Another
bsk request-helpended with:error: timed out waiting for human confirmation/details: request-help timed out and cleanup could not be confirmed.
After these, the overlay stayed permanently active with no agent operation in flight.
Evidence (collected via bsk evaluate while stuck)
document.querySelectorAll('browser-skill-overlay').length // 1
// host covers the full viewport (e.g. 1189x618), computed style:
// pointer-events: auto, z-index: 2147483647, display: block
document.elementsFromPoint(624, 340)
// -> ["BROWSER-SKILL-OVERLAY.", "DIV.upload-area", "DIV.bcc-upload-wrapper", ...]
// the overlay is topmost at every probed point
Click test: bsk click --selector 'input[placeholder*="回车"]' → click ok ... at=(711.4, 301.5), but right after, document.activeElement is still <body> — the click never reaches the page.
Upload failure (drop):
{"code":"permission_denied",
"message":"file-drop target is not the topmost element at its action point",
"data":{"mechanism":"drop","phase":"resolve_target","reason":"file_drop_target_unavailable"}}
Removing the overlay node via bsk evaluate (h.remove()) works momentarily (count: 0), but it is re-injected (count returns to 1), so no client-side workaround persists.
Secondary issue: persistent "user interrupt" state
Activating the overlay's 「中断」 button (.click() inside its shadow root) puts the extension into a pending-interrupt state where every subsequent tool dispatch is rejected:
error: operation interrupted by user
details: tool dispatch rejected: pending user interrupt. The user explicitly requested to stop. Ask the user how to proceed before issuing further actions.
This state also persisted until the extension was reloaded (no way to resume otherwise).
Impact
While stuck, no pointer-based bsk operation can succeed in the affected window(s) — clicks and uploads are unusable — until the user manually reloads the extension.
Workarounds / recovery
- Recovery: reload the extension (
edge://extensions→ Reload). Clears both the stuck overlay and the pending-interrupt state. - Do not kill the
request-helpclient mid-flight and give it a generous timeout — the resulting "cleanup could not be confirmed" states seem to precede the stuck overlay. - While stuck,
bsk evaluatestill works; interactions can be bridged from JS (element.click(), syntheticDataTransferdrop with files), which is how we completed the task.
Possibly related observation
If the Agent Window is placed off-screen or fully covered by other windows, pages report document.visibilityState === "hidden" and drag/measurement-based operations fail (No node found at given location in drop resolve_target; scroll-to → visibility measurement timed out). Restoring the window on-screen and focused fixes those. It may be worth checking whether overlay lifecycle and window-visibility handling share the same root cause.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the extension overlay lifecycle after a timed-out or interrupted request-help flow, including the pending user-interrupt state. Reproduce the reported sequence and inspect why browser-skill-overlay is re-injected after removal. Done means the overlay cleanup and interrupt state recover without an extension reload, so normal clicks and uploads work again.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- cli, devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100