hermes - ✅(Solved) Fix [Bug]: hermes doctor misreports browser as unavailable when only browser_cdp is unavailable [1 pull requests, 1 comments, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#13545Fetched 2026-04-22 08:05:56
View on GitHub
Comments
1
Participants
1
Timeline
5
Reactions
0
Participants
Timeline (top)
labeled ×3commented ×1cross-referenced ×1

Root Cause

browser_cdp_tool.py is imported before browser_tool.py, so the registry captures browser_cdp's stricter check_fn as the browser toolset check. That check requires a CDP endpoint, which is appropriate for browser_cdp but too strict for the whole browser toolset.

Fix Action

Fixed

PR fix notes

PR #13546: fix: correct browser toolset availability check

Description (problem / solution / changelog)

Summary

  • add an explicit toolset-level availability override for registry registrations
  • register the browser toolset against normal browser availability, not browser_cdp availability
  • add a regression test that keeps browser_cdp hidden while the overall browser toolset remains available

Problem

hermes doctor could report browser (system dependency not met) even when the standard browser tool surface (browser_navigate, browser_snapshot, etc.) worked correctly.

The root cause was that tools.browser_cdp_tool is imported before tools.browser_tool, so the registry captured browser_cdp's stricter check_fn as the browser toolset-level check. That check requires a CDP endpoint, which is correct for browser_cdp itself but too strict for the whole browser toolset.

Testing

  • ./venv/bin/python -m pytest tests/tools/test_registry.py -q -o 'addopts='
  • ./venv/bin/python -m pytest tests/hermes_cli/test_doctor.py -q -o 'addopts='

Closes #13545

Changed files

  • tests/tools/test_registry.py (modified, +28/-0)
  • tools/browser_cdp_tool.py (modified, +16/-0)
  • tools/registry.py (modified, +4/-1)
RAW_BUFFERClick to expand / collapse

Bug description

hermes doctor can report browser (system dependency not met) even when the normal browser tool surface is actually usable.

Reproduction

  1. Use a setup where local browser automation works (agent-browser installed, check_browser_requirements() returns true).
  2. Do not configure browser.cdp_url / BROWSER_CDP_URL.
  3. Run hermes doctor.

Expected behavior

hermes doctor should show ✓ browser when the normal browser backend is available, even if browser_cdp itself is unavailable.

Actual behavior

hermes doctor shows ⚠ browser (system dependency not met).

Root cause

browser_cdp_tool.py is imported before browser_tool.py, so the registry captures browser_cdp's stricter check_fn as the browser toolset check. That check requires a CDP endpoint, which is appropriate for browser_cdp but too strict for the whole browser toolset.

Proposed fix

Allow tool registrations to provide an explicit toolset-level availability check, then register the browser toolset with check_browser_requirements() while keeping browser_cdp gated on CDP availability.

Notes

I have a branch with a targeted fix + regression test ready and will open a PR shortly.

extent analysis

TL;DR

The issue can be resolved by allowing tool registrations to provide an explicit toolset-level availability check and registering the browser toolset with check_browser_requirements().

Guidance

  • The root cause is due to the order of imports in hermes doctor, where browser_cdp_tool.py is imported before browser_tool.py, causing the registry to capture browser_cdp's stricter check_fn as the browser toolset check.
  • To verify the issue, run hermes doctor without configuring browser.cdp_url / BROWSER_CDP_URL and check if it reports ⚠ browser (system dependency not met).
  • To mitigate the issue, consider modifying the import order or providing an explicit toolset-level availability check for the browser toolset.
  • The proposed fix involves registering the browser toolset with check_browser_requirements() while keeping browser_cdp gated on CDP availability.

Example

No code snippet is provided as the issue does not require a specific code change, but rather a change in the registration process.

Notes

The provided information does not include the actual code changes required to implement the proposed fix, which is expected to be included in the upcoming PR.

Recommendation

Apply workaround: wait for the upcoming PR that includes the targeted fix and regression test, and then apply the changes to resolve the issue. This is recommended because the proposed fix is already being worked on and will likely provide a more comprehensive solution.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

hermes doctor should show ✓ browser when the normal browser backend is available, even if browser_cdp itself is unavailable.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - ✅(Solved) Fix [Bug]: hermes doctor misreports browser as unavailable when only browser_cdp is unavailable [1 pull requests, 1 comments, 1 participants]