Skip to content

bsk doctor hangs indefinitely when no browser extension is connected (Windows, agent context) #265

Open

Description

@i-iooi-i

Environment

  • bsk CLI: 0.2.1 (installed via install.ps1 from main)
  • OS: Windows 11 x64
  • Shell: Git Bash (MSYS) and Windows PS 5.1
  • Daemon protocol: 1.1
  • Agent harness: WorkBuddy (~/.workbuddy/skills)

Steps to reproduce

  1. Install CLI 0.2.1 on Windows before the browser extension is installed (so no browser is connected).
  2. Run bsk doctor, without BSK_AUTO_START=0.
  3. It prints waiting for browser extension to connect... and then never returns.

Actual behavior

The command blocks with no further output and no exit. Two separate runs went for 4m09s and 3m54s before I killed the shell both times.

timeout 90 bsk doctor does not help on Windows: the timeout signal does not terminate bsk.exe, so the process keeps running and the shell call never comes back.

Expected behavior

doctor should be bounded. If no browser extension connects within a reasonable window (say 30s), it should print the extension connected row as FAIL with the existing hint and exit, or expose an explicit --timeout <duration> / --no-wait flag so the caller can bound it.

The existing hint (Chrome Web Store / Edge Add-ons links) is genuinely good - in this state it just never gets a chance to print.

Why this hurts agents specifically

doctor is the first command an agent runs, and AGENT_INSTALL.md tells agents to run it during setup. Agents invoke shell tools with a fixed per-call timeout and usually capture stdout, so an unbounded wait means:

  • the whole agent turn is consumed with no output to reason about;
  • common wrappers cannot reclaim it on Windows (timeout does not work here, and backgrounding plus polling still leaves the process alive);
  • the operator has to kill the shell by hand.

Additional data point

With BSK_AUTO_START=0 and the daemon already running, the same command returns immediately with the expected FAIL row and hint. So the hang looks like it lives in the "start services, then wait for the extension" path rather than in the check itself.

Workaround

BSK_AUTO_START=0 bsk doctor returns promptly once the daemon is up.

Suggestion

Bound the extension wait by default (or add a flag), and mention BSK_AUTO_START=0 in AGENT_INSTALL.md as the way to get a non-blocking run for agents.

Positive note

Once the extension was installed everything was green, and a full session lifecycle (session start -> navigate -> observe -> screenshot -> session stop) worked on the first try. Thanks for building this.

Activity

  1. pleabargain commented on Sep 18, 2026

    @pleabargain

    Appears fixed in version 3.0
    PowerShell 7.6.6
    PS C:\Users\ab> bsk doctor
    ok bsk home writable C:\Users\ab.bsk
    WARN agent skill up to date automatic updates paused for codex: untracked installation differs from the bundled skill; content preserved; automatic updates paused for claude-code: untracked installation differs from the bundled skill; content preserved; automatic updates paused for cursor: untracked installation differs from the bundled skill; content preserved; automatic updates paused for openclaw: untracked installation differs from the bundled skill; content preserved; automatic updates paused for codebuddy: untracked installation differs from the bundled skill; content preserved; automatic updates paused for pi: untracked installation differs from the bundled skill; content preserved; automatic updates paused for kimi-code: untracked installation differs from the bundled skill; content preserved — hint: codex: keep your instructions with bsk install-skill --harness codex --source <existing-SKILL.md> --force, or restore the bundled skill with bsk install-skill --harness codex --force (overwrites existing instructions); claude-code: keep your instructions with bsk install-skill --harness claude-code --source <existing-SKILL.md> --force, or restore the bundled skill with bsk install-skill --harness claude-code --force (overwrites existing instructions); cursor: keep your instructions with bsk install-skill --harness cursor --source <existing-SKILL.md> --force, or restore the bundled skill with bsk install-skill --harness cursor --force (overwrites existing instructions); openclaw: keep your instructions with bsk install-skill --harness openclaw --source <existing-SKILL.md> --force, or restore the bundled skill with bsk install-skill --harness openclaw --force (overwrites existing instructions); codebuddy: keep your instructions with bsk install-skill --harness codebuddy --source <existing-SKILL.md> --force, or restore the bundled skill with bsk install-skill --harness codebuddy --force (overwrites existing instructions); pi: keep your instructions with bsk install-skill --harness pi --source <existing-SKILL.md> --force, or restore the bundled skill with bsk install-skill --harness pi --force (overwrites existing instructions); kimi-code: keep your instructions with bsk install-skill --harness kimi-code --source <existing-SKILL.md> --force, or restore the bundled skill with bsk install-skill --harness kimi-code --force (overwrites existing instructions)
    ok daemon running pid XXXX at ws://127.0.0.1:52800 (sock \.\pipe\bsk-daemon-xxxxxx)
    ok daemon local process identity IPC peer PID matches daemon identity
    ok protocol compatible daemon protocol 1.3 (app 0.3.0)
    ok extension connected 2 browser(s) connected
    ok browser protocol compatible all 2 online browser(s) are compatible with the daemon
    PS C:\Users\ab>

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