CloakHQ/CloakBrowser · error · RuntimeError
Could not determine latest Pro version from server
Error message
Could not determine latest Pro version from server
What it means
With a valid Pro license and no pinned version, cloakbrowser needs the server's latest Pro version (or a cached value) to select a build. If the server is unreachable AND no cached Pro build/marker exists, it raises RuntimeError rather than downgrading to the free binary.
Source
Thrown at cloakbrowser/download.py:458
release = get_pro_latest_release(release_channel)
if release is not None and release.fallback:
_warn_preview_fallback()
# Prefer the server's latest when it is newer than — or replaces a missing —
# the cached build. Otherwise stay on the cached Pro binary (fast, offline-ok).
if latest and (
effective is None
or not _pro_binary_ready(effective)
or _version_newer(latest, effective)
):
version: str | None = latest
else:
version = effective
if version is None:
# Valid Pro license but nothing resolvable (server unreachable AND no
# cached Pro build). Never downgrade to the free binary — fail loudly.
raise RuntimeError("Could not determine latest Pro version from server")
if _pro_binary_ready(version):
binary_path = get_binary_path(version, pro=True)
# Advance the marker if this cached build is newer than what the marker names,
# so `info` (and a later server-outage launch) reflect the build we actually
# launch — never a stale marker.
if version != effective:
try:
_write_pro_version_marker(version, release_channel)
except OSError:
pass
logger.debug("Pro binary found in cache: %s (version %s)", binary_path, version)
_show_welcome(welcome_tier)
return str(binary_path)
# `version` (the server latest) needs downloading. On failure, fall back to a
# cached Pro build if we have one — never the free binary.
try:View on GitHub (pinned to d6bad5de26)
Solutions
- Retry once the version server is reachable
- Pre-install the Pro binary (run install once while online) so a cache exists
- Unset CLOAKBROWSER_LICENSE_KEY if the free binary is acceptable
Defensive patterns
Strategy: fallback
Try / catch
try:
ensure_binary() # unpinned, Pro
except RuntimeError as e:
if "Could not determine latest Pro version" in str(e):
os.environ.pop("CLOAKBROWSER_LICENSE_KEY", None)
ensure_binary()
else:
raise Prevention
- Run `cloakbrowser install` once while online to cache the latest Pro build
- Pin a known Pro version so server resolution isn't required at launch
When it happens
Trigger: Unpinned launch with a valid license during a server outage on a machine that has never downloaded a Pro build.
Common situations: First Pro run offline; CI with blocked egress to the version API; DNS failure in containers.
Related errors
- Pro binary unavailable: {e}. Your license is valid but the P
- CloakBrowser Pro: license could not be validated (server unr
- Could not fetch the signed SHA256SUMS for Pro {version} ({ex
- [cloakbrowser] Using cached license validation (server unrea
- GeoIP resolution failed: could not discover the egress IP
AI-assisted analysis of CloakHQ/CloakBrowser@d6bad5de26 (2026-08-28).
Data as JSON: /api/errors/5fef8acf46107b20.
Report an issue: GitHub.