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
- Retry `caveman logout`; inspect the HTTP status in the message
- 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.