hermes - ✅(Solved) Fix Two browser provider bugs: Camofox missing from registry + reconfigure flow leaks use_gateway [1 pull requests, 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#15229Fetched 2026-04-25 06:23:34
View on GitHub
Comments
0
Participants
1
Timeline
7
Reactions
0
Participants
Timeline (top)
labeled ×6cross-referenced ×1

Fix Action

Fixed

PR fix notes

PR #15349: fix(cli): sync use_gateway in _reconfigure_provider for tts, browser, and web

Description (problem / solution / changelog)

What does this PR do?

_reconfigure_provider() updates cloud_provider / backend / tts.provider when the user switches tool providers via hermes setup tools → Reconfigure, but did not update the matching use_gateway flag. _configure_provider() (the initial-setup path) sets use_gateway on all three tool categories; _reconfigure_provider was missing the same assignments.

The omission leaves a stale value in config.yaml:

  • Switching from a Nous-managed provider (use_gateway=True) to a self-hosted one keeps use_gateway=True — requests continue to route through the Nous gateway and the user is billed incorrectly.
  • Switching from a self-hosted provider to a managed one leaves use_gateway unset, so the managed feature does not activate.

Fix: add use_gateway = bool(managed_feature) in the tts_provider, browser_provider, and web_backend blocks of _reconfigure_provider, symmetric with _configure_provider lines 1345, 1357, and 1363. No behavior change for any provider that does not set one of those three keys.

Related Issue

Fixes #15229

Type of Change

  • 🐛 Bug fix
  • ✨ New feature
  • 🔒 Security fix
  • 📝 Documentation update
  • ✅ Tests
  • ♻️ Refactor
  • 🎯 New skill

Changes Made

  • hermes_cli/tools_config.py: add use_gateway = bool(managed_feature) in tts, browser, and web blocks of _reconfigure_provider (+6 lines, refactored to local vars to match _configure_provider style)
  • tests/hermes_cli/test_tools_config.py: add parametrized test covering all 6 combinations (3 tool types × managed/non-managed) + stale-value overwrite case (+27 lines)

How to Test

  1. Configure a Nous-managed browser provider via hermes setup tools — verify config.yaml has browser.use_gateway: true.
  2. Reconfigure to a self-hosted provider (e.g. Browserbase) — verify browser.use_gateway is now false.
  3. Reconfigure back to the managed provider — verify browser.use_gateway is true again.
  4. pytest tests/hermes_cli/test_tools_config.py -v --override-ini="addopts="

Checklist

Code

  • Contributing Guide okundu
  • Conventional Commits
  • Duplicate PR yok
  • Sadece bu fix
  • pytest çalıştırıldı
  • Test eklendi
  • Platform: macOS

Documentation & Housekeeping

  • Docs güncellendi — N/A
  • cli-config.yaml.example — N/A
  • CONTRIBUTING.md/AGENTS.md — N/A
  • Cross-platform impact — N/A (pure config dict logic)
  • Tool descriptions — N/A

Changed files

  • hermes_cli/tools_config.py (modified, +10/-4)
  • tests/hermes_cli/test_tools_config.py (modified, +27/-0)

Code Example

_PROVIDER_REGISTRY: Dict[str, type] = {
    "browserbase": BrowserbaseProvider,
    "browser-use": BrowserUseProvider,
    "firecrawl": FirecrawlProvider,
}

---

browser_cfg["use_gateway"] = bool(managed_feature)
RAW_BUFFERClick to expand / collapse

Title: Two browser provider bugs: Camofox missing from registry + reconfigure flow leaks use_gateway

Body:

Found two bugs while switching browser providers via hermes setup tools.

Bug 1: Camofox missing from _PROVIDER_REGISTRY

File: tools/browser_tool.py (~line 388)

_PROVIDER_REGISTRY: Dict[str, type] = {
    "browserbase": BrowserbaseProvider,
    "browser-use": BrowserUseProvider,
    "firecrawl": FirecrawlProvider,
}

"camofox" is not registered. Setting browser.cloud_provider: camofox in config.yaml has no effect on standard browser tools (browser_navigate, etc.) — they fall back to Browser Use or Browserbase instead. Camofox only works through the separate camofox_* functions.

Expected: camofox should be a valid registered provider so cloud_provider: camofox routes standard browser tools through Camofox.


Bug 2: _reconfigure_provider never updates browser.use_gateway

File: hermes_cli/tools_config.py, _reconfigure_provider (~line 1535)

When using "Reconfigure an existing tool's provider or API key" to switch browser providers, the function updates browser.cloud_provider but does not update browser.use_gateway.

The new-tool flow (_configure_provider, ~line 1299) correctly does:

browser_cfg["use_gateway"] = bool(managed_feature)

But _reconfigure_provider omits this entirely. If a user switches from a Nous-managed provider (where use_gateway: true) to a self-hosted provider, the stale use_gateway: true remains in config and can cause routing issues.

Expected: _reconfigure_provider should set browser_cfg["use_gateway"] = bool(managed_feature) to match _configure_provider.


Environment: Hermes Agent CLI, macOS, Python 3.11

extent analysis

TL;DR

To fix the two browser provider bugs, update the _PROVIDER_REGISTRY to include "camofox" and modify the _reconfigure_provider function to update browser.use_gateway based on the managed_feature value.

Guidance

  • Add "camofox" to the _PROVIDER_REGISTRY dictionary in browser_tool.py to enable Camofox as a valid provider.
  • Update the _reconfigure_provider function in tools_config.py to set browser_cfg["use_gateway"] = bool(managed_feature) when switching browser providers.
  • Verify the changes by testing the hermes setup tools with the updated configuration and checking that the standard browser tools use the selected provider.
  • Review the config.yaml file to ensure that browser.cloud_provider and browser.use_gateway are correctly updated after reconfiguring the provider.

Example

_PROVIDER_REGISTRY: Dict[str, type] = {
    "browserbase": BrowserbaseProvider,
    "browser-use": BrowserUseProvider,
    "firecrawl": FirecrawlProvider,
    "camofox": CamofoxProvider,  # Add Camofox to the registry
}
def _reconfigure_provider(...):
    # ...
    browser_cfg["use_gateway"] = bool(managed_feature)  # Update use_gateway based on managed_feature
    # ...

Notes

The fixes assume that the CamofoxProvider class is defined and available in the codebase. Additionally, the changes should be tested thoroughly to ensure that they do not introduce any new issues.

Recommendation

Apply the workaround by updating the _PROVIDER_REGISTRY and modifying the _reconfigure_provider function, as this will fix the two reported bugs and enable Camofox as a valid provider.

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…

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 Two browser provider bugs: Camofox missing from registry + reconfigure flow leaks use_gateway [1 pull requests, 1 participants]