{"record":{"id":"d41360ca603a6f09","repo":"NousResearch/hermes-agent","slug":"bws-binary-not-available-auto-install-failed-and","errorCode":null,"errorMessage":"bws binary not available — auto-install failed and `bws` is not on PATH.  Install manually from https://github.com/bitwarden/sdk-sm/releases or re-run `hermes secrets bitwarden setup`.","messagePattern":"bws binary not available — auto-install failed and `bws` is not on PATH\\.  Install manually from https://github\\.com/bitwarden/sdk-sm/releases or re-run `hermes secrets bitwarden setup`\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"agent/secret_sources/bitwarden.py","lineNumber":559,"sourceCode":"        # L2: disk cache. ~5ms on cache hit vs ~380ms for `bws secret list`.\n        if encrypted_cache_enabled:\n            disk_cached = _read_encrypted_disk_cache(\n                cache_key=cache_key,\n                access_token=access_token,\n                max_age_seconds=cache_ttl_seconds,\n                home_path=home_path,\n            )\n        else:\n            disk_cached = _DISK_CACHE.read(cache_key, cache_ttl_seconds, home_path)\n        if disk_cached is not None:\n            # Promote into in-process cache so subsequent fetches in the\n            # same process skip the disk read too.\n            _CACHE[cache_key] = disk_cached\n            return disk_cached.secrets, []\n\n    bws = binary or find_bws(install_if_missing=True)\n    if bws is None:\n        raise RuntimeError(\n            \"bws binary not available — auto-install failed and `bws` is \"\n            \"not on PATH.  Install manually from \"\n            \"https://github.com/bitwarden/sdk-sm/releases or re-run \"\n            \"`hermes secrets bitwarden setup`.\"\n        )\n\n    try:\n        secrets, warnings = _run_bws_list(bws, access_token, project_id, server_url)\n    except RuntimeError as exc:\n        # Live fetch failed. Fall back to a stale disk cache ONLY for\n        # transport-level failures (network down, DNS error, transient BWS\n        # outage / timeout) — never for AUTH_FAILED or a malformed-output\n        # INTERNAL error, where serving old secrets would mask a real\n        # config/credential problem the caller needs to see.  Without this\n        # fallback a fleet of bots sharing one BWS project all stop working\n        # on a single network blip.\n        #\n        # Two fallback tiers share the transport-only gate:","sourceCodeStart":541,"sourceCodeEnd":577,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/agent/secret_sources/bitwarden.py#L541-L577","documentation":"Error \"bws binary not available — auto-install failed and `bws` is not on PATH.  Install manually from https://github.com/bitwarden/sdk-sm/releases or re-run `hermes secrets bitwarden setup`.\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at agent/secret_sources/bitwarden.py:559 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Install the bws CLI manually from the Bitwarden sdk-sm releases page.","Re-run `hermes secrets bitwarden setup` and check the auto-install error.","Add bws to PATH after installation."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c896c09c42910c584c4c7d2325b58c14713ea42c","analyzedAt":"2026-08-14T17:18:01.089Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}