CloakHQ/CloakBrowser · error · FileNotFoundError
CLOAKBROWSER_BINARY_PATH set to '{local_override}' but file
Error message
CLOAKBROWSER_BINARY_PATH set to '{local_override}' but file does not exist What it means
ensure_binary honors the CLOAKBROWSER_BINARY_PATH override first; if the env var is set but the path does not exist on disk, it raises FileNotFoundError immediately rather than falling back to downloading.
Source
Thrown at cloakbrowser/download.py:187
release_channel: str | None = None,
) -> str:
"""Ensure the stealth Chromium binary is available. Download if needed.
Returns the path to the chrome executable as a string.
Args:
license_key: Pro license key. Also reads from CLOAKBROWSER_LICENSE_KEY env var.
browser_version: Exact Chromium version pin. Also reads from CLOAKBROWSER_VERSION.
release_channel: Stable (default) or Preview binary channel.
Set CLOAKBROWSER_BINARY_PATH to skip download and use a local build.
"""
# Check for local override first
local_override = get_local_binary_override()
if local_override:
path = Path(local_override)
if not path.exists():
raise FileNotFoundError(
f"CLOAKBROWSER_BINARY_PATH set to '{local_override}' but file does not exist"
)
logger.info("Using local binary override: %s", local_override)
return str(path)
requested_version = normalize_requested_version(browser_version)
# Pro license key check (custom download URL overrides Pro path)
from .license import (
CloakBrowserLicenseError,
resolve_license_key,
validate_license,
)
key = resolve_license_key(license_key)
if os.environ.get("CLOAKBROWSER_DOWNLOAD_URL"):
key = None
View on GitHub (pinned to d6bad5de26)
Solutions
- Fix the path to point at an existing executable
- Unset CLOAKBROWSER_BINARY_PATH to let cloakbrowser download/manage the binary
- Verify with ls -l "$CLOAKBROWSER_BINARY_PATH"
Example fix
# before CLOAKBROWSER_BINARY_PATH=/opt/old/chrome ./run.sh # after unset CLOAKBROWSER_BINARY_PATH && ./run.sh
Defensive patterns
Strategy: validation
Validate before calling
import os
from pathlib import Path
def binary_override_ok() -> bool:
p = os.environ.get("CLOAKBROWSER_BINARY_PATH")
return p is None or (Path(p).exists() and os.access(p, os.X_OK)) Type guard
def env_binary_valid() -> bool:
import os
p = os.environ.get("CLOAKBROWSER_BINARY_PATH", "")
return p == "" or os.path.isfile(p) Try / catch
try:
ensure_binary()
except FileNotFoundError as e:
if "CLOAKBROWSER_BINARY_PATH" in str(e):
os.environ.pop("CLOAKBROWSER_BINARY_PATH", None)
ensure_binary()
else:
raise Prevention
- Add startup asserts that env-var-pointed files exist
- Recreate/provision the binary in Dockerfiles rather than relying on host paths
When it happens
Trigger: Setting CLOAKBROWSER_BINARY_PATH to a stale, moved, or typo'd path, then calling ensure_binary/launch/cmd_install.
Common situations: Binary was deleted or the project moved; container rebuild lost the file; typo or wrong home dir in the path; CI env var carried over from another machine.
Related errors
AI-assisted analysis of CloakHQ/CloakBrowser@d6bad5de26 (2026-08-28).
Data as JSON: /api/errors/fdfa03ec7779d00e.
Report an issue: GitHub.