Skip to content

Stuck 'Agent is controlling' overlay blocks all real clicks and makes bsk upload fail (extension reload required) #277

Description

@zzhoujiawei

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 click reports success but the page never receives the click (verified via document.activeElement).
  • bsk upload --mode drop fails with permission_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)

  1. A bsk request-help client process was killed by a client-side timeout (shell timeout → SIGTERM). Afterwards the session stayed busy: "previous session command is still running / session already has an unfinished command".
  2. Another bsk request-help ended 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-help client 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 evaluate still works; interactions can be bridged from JS (element.click(), synthetic DataTransfer drop 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-tovisibility 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.

Activity

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