JuliusBrussee/caveman · error · Error

caveman: remote session revocation failed (HTTP ${response.s

Error message

caveman: remote session revocation failed (HTTP ${response.status}); credentials kept — retry `caveman logout`

What it means

During `caveman logout`, the request to revoke the remote session returned a non-2xx status. As with key revocation, local credentials are kept so logout can be retried — otherwise an orphaned session would remain active server-side.

Source

Thrown at packages/cli/src/index.ts:9474

	    authorization: `Bearer ${cfg.token}`,
	    "x-cave-client": "cli",
	  };
	  const request: RequestInit = {
	    method: "POST",
	    headers,
	    signal: AbortSignal.timeout(5000),
	  };
	  if (cfg.refreshToken) {
	    headers["content-type"] = "application/json";
	    request.body = JSON.stringify({ refresh_token: cfg.refreshToken });
	  }
	  let response: Response;
	  try {
	    response = await fetch(`${cfg.baseURL}/api/v1/auth/logout`, request);
	  } catch {
	    throw new Error("caveman: remote session revocation was unavailable; credentials kept — retry `caveman logout`");
	  }
	  if (!response.ok) throw new Error(`caveman: remote session revocation failed (HTTP ${response.status}); credentials kept — retry \`caveman logout\``);
	}
	if (externalToken) {
	  console.error("caveman: remote session revoked; CAVE_TOKEN remains set by the parent environment — unset it before the next command");
	  print({ logged_out: true, remote_session_revoked: true, external_token_cleared: false, external_token_source: "CAVE_TOKEN" });
	  return;
	}
	// Persist remote completion before deleting the only local credential. If
	// Keychain/file cleanup fails, the next logout safely retries cleanup without
	// trying to authenticate with the now-revoked session.
	await saveConfig({ ...cfg, logoutPendingLocalCleanup: true });
  clearToken(cfg.tokenStore);
  await saveConfig({ baseURL: "", token: "" });
  print({ logged_out: true });
}

function sleep(ms: number) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

View on GitHub (pinned to 5184b3d11a)

Solutions

  1. Retry `caveman logout`; inspect the HTTP status in the message
  2. If persistent, invalidate sessions via the server dashboard
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at packages/cli/src/index.ts:8629 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of JuliusBrussee/caveman@5184b3d11a (2026-08-18). Data as JSON: /api/errors/d2dd57c51f555aeb. Report an issue: GitHub.