P3 Local Browser Mode Shows Browserbase Paid-Plan Upsells — Undermines Trust, Wastes Context Tokens (#54197)

Executive Summary

When using a local Chromium browser (browser.cloud_provider: none, browser.engine: auto), the browser_navigate tool returns warnings pushing Browserbase paid cloud features — even though the user is running fully local and has zero relationship with Browserbase. Three distinct harms: confusion (user can't tell which backend is in use), token waste (irrelevant upsell text burns model context tokens on every first navigation), and trust erosion (suggests user is on a limited free tier when running fully local). Root cause is a one-line gap at line 2485 — the warning logic doesn't check for local mode. PR #54205 already open.

Root Cause Analysis

The Warnings (Verbatim from Tool Output)

browser_navigate Output (Local Mode)
stealth_warning: "Running WITHOUT residential proxies. Bot detection may be more aggressive. Consider upgrading Browserbase plan for proxy support." bot_detection_warning: "Options: ... 3) Enable advanced stealth (BROWSERBASE_ADVANCED_STEALTH=true, requires Scale plan)" stealth_features: ["local"] ← confirms session is running locally!

The stealth_features correctly reports ["local"], confirming the session is running locally. Yet the warnings push a paid cloud proxy service the user isn't using and didn't opt into.

Code-Level Root Cause (Exact Line Numbers)

In tools/browser_tool.py, _create_local_session() returns {"features": {"local": True}}. The warning logic at line 2485 checks:

Buggy Warning Logic (line 2485)
if not features.get("proxies"): # Show stealth_warning about Browserbase proxy upgrade → "proxies" key doesn't exist in local sessions → condition is always True → Warning fires for every local browser session

The condition doesn't account for local mode at all. Same gap exists for bot_detection_warning at line 2473.

Three Distinct Harms

HarmSeverityDetail
1. ConfusionHIGHUser can't tell which backend is actually in use — the output says "local" but the warnings say "upgrade Browserbase." Mixed signals erode technical confidence.
2. Token WasteHIGHIrrelevant upsell text burns model context tokens on every first navigation. Over hundreds of sessions, the cumulative token cost is non-trivial — paid by the user, not Browserbase.
3. Trust ErosionCRITICALSuggests the user is on a limited free tier when running fully local — undermines confidence in the tool. The user paid nothing to Browserbase, configured local-only mode, and still gets told to "upgrade." This makes Hermes feel like adware.

Proposed Fix (One Line)

Gate both warnings with if not features.get("local"):

Corrected Warning Logic
# Line 2485: stealth_warning if not features.get("local") and not features.get("proxies"): # Only show proxy upsell if NOT running locally # Line 2473: bot_detection_warning if not features.get("local") and not features.get("advanced_stealth"): # Only show advanced stealth upsell if NOT running locally

PR: #54205 already open | Reporter provided exact diff | Reporter willing to submit PR.

Impact Assessment

DimensionSeverityDetail
Trust & CredibilityHIGHPaid upsells in a local-only mode make the tool feel like adware — especially when the upsells are for a service the user never opted into
Token EconomicsMODERATEIrrelevant upsell text burns context tokens on every first navigation — cumulative cost across sessions
User ConfusionHIGHMixed signals (local features + cloud upsells) make it unclear which backend is in use
Fix ComplexityLOWOne-line change: add local-mode gate to existing conditions. Exact diff provided.

Source Evidence

📋 https://hermes-agent.reviews/hermes-local-browser-browserbase-upsells-54197.html
Tracked by hermes-agent.reviews — June 28, 2026